Skip to main content
Glama

Decide a review

task_decide
Destructive

Decide a review addressed to you (task_list reviewer=me): approve (optionally with edits.text, the text then carried out; edits.artifacts, each { artifact, version } the current version of a draft artifact; and then, which overrides the proposal's then or, null, clears it), or send_back with a comment saying what to change (required; the task goes back To do to whoever had it). An approval with no file edit carries out each draft file as it is now. A named version must be that current one; a named version that is not current is CONFLICT with details.reason not_current and details.current { id, number }, and no currentRevision. To say no, call task_cancel, which a reviewer may do (decline and skip are refused, naming it). A comment may go with either, posted in the same write. expectedRevision is the revision you read (required: PRECONDITION_REQUIRED without it); a task revision that moved refuses CONFLICT with details.currentRevision. An approval is refused DELETED while a draft artifact is in the trash or after it was purged; send it back or cancel the task instead. A review addressed to anyone else, or your own proposal, refuses REVIEW_NOT_YOURS with details.reviewer; one already decided refuses TASK_NOT_IN_REVIEW with details.latestRound (its number and verdict). On a task of a job with task definitions, then must be a step of its definition, any step (INVALID_INPUT naming the field and its available values otherwise). Returns the review receipt; an approved text too large for it is cut to 512 bytes there (cut is true), and task_get reads it whole.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>",
      "decision": "<decision>"
    },
    "name": "task_decide"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesThe task, by its id.
whyNoRequired for workspace items: one sentence on what the person is trying to accomplish, in their terms, not a description of this edit. Every workspace write takes one; sessions and summaries record themselves from it. At most 300 characters.
thenNoApprove only: the step the approval moves the task to, overriding the proposal's then; null clears it (the task comes back to its proposer). Omit to keep the proposal's. Under a job with task definitions, a step of the task's definition.
editsNoApprove only: text to carry out instead of the draft, and draft files named at their current version.
commentNoRequired to send back (what to change); optional to approve. Posted in the same write, at most 8000 characters.
decisionYesapprove (To do: carried out by its proposer, or at then's step for whoever starts it) or send_back (To do as it was, with a required comment saying what to change). To say no, cancel the task instead (task_cancel).
expectedRevisionNoThe revision you read (required): a draft replaced since refuses CONFLICT.

Output Schema

NameRequiredDescriptionDefault
taskYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / edits / description
      Previous value: -"Approve only: your edits to the draft."New value: +"Approve only: text to carry out instead of the draft, and draft files named at their current version."
    • changedInput schema / properties / edits / properties / artifacts / description
      Previous value: -"Draft artifacts you edited before approving: each names the later version you saw, which becomes the one to carry out."New value: +"Optional. Omit it and the approval carries out each draft file as it is now. When set, each entry names a draft artifact at its current version, which is the version carried out."
    • changedInput schema / properties / edits / properties / artifacts / items / properties / version / description
      Previous value: -"The version you saw and approve, later than the draft's: its number or version id."New value: +"The file's current version, later than the draft's: a number or a version id. A version that is not current is CONFLICT with details.reason not_current and details.current { id, number }."
  2. Changed7 schema fields changed
    • changedInput schema / properties / then / anyOf
      Previous value: -[
      -  {
      -    "description": "The step an approval moves the task to (post, send): the task then waits To do at that step, for whoever starts it. Omit to have it come back to you to carry out.",
      -    "pattern": "^[a-z0-9][a-z0-9-_]{0,63}$",
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "description": "The step an approval moves the task to (post, send): the task then waits To do at that step, for whoever starts it. Omit to have it come back to you to carry out. Under a job with task definitions it is a step of the task's definition, and at a step with an approval an omitted then is the next main step.",
      +    "pattern": "^[a-z0-9][a-z0-9-_]{0,63}$",
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / then / description
      Previous value: -"Approve only: the step the approval moves the task to, overriding the proposal's then; null clears it (the task comes back to its proposer). Omit to keep the proposal's."New value: +"Approve only: the step the approval moves the task to, overriding the proposal's then; null clears it (the task comes back to its proposer). Omit to keep the proposal's. Under a job with task definitions, a step of the task's definition."
    • changedOutput schema / properties / task / properties / cut / description
      Previous value: -"true when this answer was too large for a tool reply, so each round text it carries (the latest round's draft, edit and comment; the approved round's final text) was cut to its first 512 bytes. Read them whole with task_get."New value: +"true when this answer was too large for a tool reply, so each round text it carries (the latest round's draft, edit and comment; the approved round's final text) and, on a start, its workflow step's instructions were cut to their first 512 bytes. Read them whole with task_get."
    • addedOutput schema / properties / task / properties / job
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "id": {
      +          "format": "uuid",
      +          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / task / properties / labels
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / task / properties / latestRound / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "number": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      },
      -      "outcome": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "approved",
      -              "sent_back",
      -              "cancelled",
      -              "withdrawn",
      -              "replaced"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "number",
      -      "outcome"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "number": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      },
      +      "outcome": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "approved",
      +              "sent_back",
      +              "cancelled",
      +              "withdrawn",
      +              "replaced"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Deprecated: the same value as verdict; removed when the window round-outcome-field-window closes."
      +      },
      +      "verdict": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "approved",
      +              "sent_back",
      +              "cancelled",
      +              "withdrawn",
      +              "replaced"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "number",
      +      "verdict",
      +      "outcome"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / task / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "revision",
      -  "type",
      -  "step",
      -  "holder",
      -  "assignee",
      -  "reviewer",
      -  "latestRound",
      -  "approvedRound",
      -  "result",
      -  "cut"
      -]New value: +[
      +  "id",
      +  "status",
      +  "revision",
      +  "type",
      +  "step",
      +  "labels",
      +  "job",
      +  "holder",
      +  "assignee",
      +  "reviewer",
      +  "latestRound",
      +  "approvedRound",
      +  "result",
      +  "cut"
      +]
  3. Changed1 schema field changed
    • changedOutput schema / properties / task / properties / approvedRound / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "final": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "artifacts": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "artifact": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "id": {
      -                          "format": "uuid",
      -                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                          "type": "string"
      -                        },
      -                        "title": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "type": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "id",
      -                        "title",
      -                        "type"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "position": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 9007199254740991,
      -                  "type": "integer"
      -                },
      -                "version": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "id": {
      -                          "format": "uuid",
      -                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                          "type": "string"
      -                        },
      -                        "number": {
      -                          "exclusiveMinimum": 0,
      -                          "maximum": 9007199254740991,
      -                          "type": "integer"
      -                        }
      -                      },
      -                      "required": [
      -                        "id",
      -                        "number"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "position",
      -                "artifact",
      -                "version"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "text": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "required": [
      -          "text",
      -          "artifacts"
      -        ],
      -        "type": "object"
      -      },
      -      "number": {
      -        "exclusiveMinimum": 0,
      -        "maximum": 9007199254740991,
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "number",
      -      "final"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "final": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "artifacts": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "artifact": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "id": {
      +                          "format": "uuid",
      +                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                          "type": "string"
      +                        },
      +                        "mimeType": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "title": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        },
      +                        "type": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "id",
      +                        "title",
      +                        "type",
      +                        "mimeType"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "position": {
      +                  "exclusiveMinimum": 0,
      +                  "maximum": 9007199254740991,
      +                  "type": "integer"
      +                },
      +                "version": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "id": {
      +                          "format": "uuid",
      +                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                          "type": "string"
      +                        },
      +                        "number": {
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        }
      +                      },
      +                      "required": [
      +                        "id",
      +                        "number"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "position",
      +                "artifact",
      +                "version"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "text": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "text",
      +          "artifacts"
      +        ],
      +        "type": "object"
      +      },
      +      "number": {
      +        "exclusiveMinimum": 0,
      +        "maximum": 9007199254740991,
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "number",
      +      "final"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  4. Changed3 schema fields changed
    • changedOutput schema / properties / task / properties / assignee / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "account": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "alias": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "alias"
      -        ],
      -        "type": "object"
      -      },
      -      "agent": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "harness": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "id": {
      -                "anyOf": [
      -                  {
      -                    "format": "uuid",
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "name": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "name",
      -              "harness"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "isCaller": {
      -        "type": "boolean"
      -      },
      -      "mine": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "account",
      -      "agent",
      -      "mine",
      -      "isCaller"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "alias": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "former": {
      +            "const": true,
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "alias"
      +        ],
      +        "type": "object"
      +      },
      +      "agent": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "harness": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "id": {
      +                "anyOf": [
      +                  {
      +                    "format": "uuid",
      +                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "name": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "name",
      +              "harness"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "isCaller": {
      +        "type": "boolean"
      +      },
      +      "mine": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "account",
      +      "agent",
      +      "mine",
      +      "isCaller"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / task / properties / holder / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "account": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "alias": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "alias"
      -        ],
      -        "type": "object"
      -      },
      -      "agent": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "name"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "heldByCaller": {
      -        "type": "boolean"
      -      },
      -      "inBrowser": {
      -        "type": "boolean"
      -      },
      -      "leaseExpiresAt": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "mine": {
      -        "type": "boolean"
      -      },
      -      "since": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -        "type": "string"
      -      },
      -      "surface": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "account",
      -      "agent",
      -      "surface",
      -      "inBrowser",
      -      "since",
      -      "leaseExpiresAt",
      -      "mine",
      -      "heldByCaller"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "alias": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "former": {
      +            "const": true,
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "alias"
      +        ],
      +        "type": "object"
      +      },
      +      "agent": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "heldByCaller": {
      +        "type": "boolean"
      +      },
      +      "inBrowser": {
      +        "type": "boolean"
      +      },
      +      "leaseExpiresAt": {
      +        "anyOf": [
      +          {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "mine": {
      +        "type": "boolean"
      +      },
      +      "since": {
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      +        "type": "string"
      +      },
      +      "surface": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "account",
      +      "agent",
      +      "surface",
      +      "inBrowser",
      +      "since",
      +      "leaseExpiresAt",
      +      "mine",
      +      "heldByCaller"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / task / properties / reviewer / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "account": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "alias": {
      -            "anyOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          },
      -          "id": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "alias"
      -        ],
      -        "type": "object"
      -      },
      -      "agent": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": false,
      -            "properties": {
      -              "harness": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "id": {
      -                "anyOf": [
      -                  {
      -                    "format": "uuid",
      -                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              },
      -              "name": {
      -                "anyOf": [
      -                  {
      -                    "type": "string"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "id",
      -              "name",
      -              "harness"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "isCaller": {
      -        "type": "boolean"
      -      },
      -      "mine": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "account",
      -      "agent",
      -      "mine",
      -      "isCaller"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "account": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "alias": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "former": {
      +            "const": true,
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "alias"
      +        ],
      +        "type": "object"
      +      },
      +      "agent": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "harness": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "id": {
      +                "anyOf": [
      +                  {
      +                    "format": "uuid",
      +                    "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "name": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "name",
      +              "harness"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "isCaller": {
      +        "type": "boolean"
      +      },
      +      "mine": {
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "account",
      +      "agent",
      +      "mine",
      +      "isCaller"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  5. Changed15 schema fields changed
    • addedInput schema / properties / comment
      Added value: +{
      +  "description": "Required to send back (what to change); optional to approve. Posted in the same write, at most 8000 characters.",
      +  "type": "string"
      +}
    • addedInput schema / properties / decision / description
      Added value: +"approve (To do: carried out by its proposer, or at then's step for whoever starts it) or send_back (To do as it was, with a required comment saying what to change). To say no, cancel the task instead (task_cancel)."
    • changedInput schema / properties / decision / enum
      Previous value: -[
      -  "approve",
      -  "skip"
      -]New value: +[
      +  "approve",
      +  "send_back"
      +]
    • removedInput schema / properties / editedDraft
      Removed value: -{
      -  "description": "Approve only: the text to carry out instead of the draft.",
      -  "type": "string"
      -}
    • addedInput schema / properties / edits
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Approve only: your edits to the draft.",
      +  "properties": {
      +    "artifacts": {
      +      "description": "Draft artifacts you edited before approving: each names the later version you saw, which becomes the one to carry out.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "artifact": {
      +            "description": "A draft artifact of this round: its id or page URL.",
      +            "type": "string"
      +          },
      +          "version": {
      +            "anyOf": [
      +              {
      +                "exclusiveMinimum": 0,
      +                "maximum": 9007199254740991,
      +                "type": "integer"
      +              },
      +              {
      +                "format": "uuid",
      +                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                "type": "string"
      +              }
      +            ],
      +            "description": "The version you saw and approve, later than the draft's: its number or version id."
      +          }
      +        },
      +        "required": [
      +          "artifact",
      +          "version"
      +        ],
      +        "type": "object"
      +      },
      +      "maxItems": 10,
      +      "type": "array"
      +    },
      +    "text": {
      +      "description": "The text to carry out instead of the draft; kept only when it differs.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / reason
      Removed value: -{
      -  "description": "Skip only: why not, kept as the cancel reason.",
      -  "type": "string"
      -}
    • addedInput schema / properties / then
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "The step an approval moves the task to (post, send): the task then waits To do at that step, for whoever starts it. Omit to have it come back to you to carry out.",
      +      "pattern": "^[a-z0-9][a-z0-9-_]{0,63}$",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Approve only: the step the approval moves the task to, overriding the proposal's then; null clears it (the task comes back to its proposer). Omit to keep the proposal's."
      +}
    • addedOutput schema / properties / task / properties / approvedRound
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "final": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "artifacts": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "artifact": {
      +                    "anyOf": [
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "id": {
      +                            "format": "uuid",
      +                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                            "type": "string"
      +                          },
      +                          "title": {
      +                            "anyOf": [
      +                              {
      +                                "type": "string"
      +                              },
      +                              {
      +                                "type": "null"
      +                              }
      +                            ]
      +                          },
      +                          "type": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "id",
      +                          "title",
      +                          "type"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  },
      +                  "position": {
      +                    "exclusiveMinimum": 0,
      +                    "maximum": 9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  "version": {
      +                    "anyOf": [
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "id": {
      +                            "format": "uuid",
      +                            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +                            "type": "string"
      +                          },
      +                          "number": {
      +                            "exclusiveMinimum": 0,
      +                            "maximum": 9007199254740991,
      +                            "type": "integer"
      +                          }
      +                        },
      +                        "required": [
      +                          "id",
      +                          "number"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "position",
      +                  "artifact",
      +                  "version"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            "text": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "required": [
      +            "text",
      +            "artifacts"
      +          ],
      +          "type": "object"
      +        },
      +        "number": {
      +          "exclusiveMinimum": 0,
      +          "maximum": 9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "number",
      +        "final"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • removedOutput schema / properties / task / properties / approvedText
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • addedOutput schema / properties / task / properties / cut
      Added value: +{
      +  "description": "true when this answer was too large for a tool reply, so each round text it carries (the latest round's draft, edit and comment; the approved round's final text) was cut to its first 512 bytes. Read them whole with task_get.",
      +  "type": "boolean"
      +}
    • removedOutput schema / properties / task / properties / decision
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": false,
      -      "properties": {
      -        "at": {
      -          "format": "date-time",
      -          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
      -          "type": "string"
      -        },
      -        "by": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "account": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "alias": {
      -                      "anyOf": [
      -                        {
      -                          "type": "string"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "id": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "alias"
      -                  ],
      -                  "type": "object"
      -                },
      -                "agent": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "harness": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "id": {
      -                          "anyOf": [
      -                            {
      -                              "format": "uuid",
      -                              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "name": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "required": [
      -                        "id",
      -                        "name",
      -                        "harness"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "isCaller": {
      -                  "type": "boolean"
      -                },
      -                "mine": {
      -                  "type": "boolean"
      -                }
      -              },
      -              "required": [
      -                "account",
      -                "agent",
      -                "mine",
      -                "isCaller"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "byInstructions": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "agent": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "account": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "alias": {
      -                          "anyOf": [
      -                            {
      -                              "type": "string"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        },
      -                        "id": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "id",
      -                        "alias"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "agent": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "harness": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "id": {
      -                              "anyOf": [
      -                                {
      -                                  "format": "uuid",
      -                                  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            },
      -                            "name": {
      -                              "anyOf": [
      -                                {
      -                                  "type": "string"
      -                                },
      -                                {
      -                                  "type": "null"
      -                                }
      -                              ]
      -                            }
      -                          },
      -                          "required": [
      -                            "id",
      -                            "name",
      -                            "harness"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "isCaller": {
      -                      "type": "boolean"
      -                    },
      -                    "mine": {
      -                      "type": "boolean"
      -                    }
      -                  },
      -                  "required": [
      -                    "account",
      -                    "agent",
      -                    "mine",
      -                    "isCaller"
      -                  ],
      -                  "type": "object"
      -                },
      -                "version": {
      -                  "exclusiveMinimum": 0,
      -                  "maximum": 9007199254740991,
      -                  "type": "integer"
      -                }
      -              },
      -              "required": [
      -                "version",
      -                "agent"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ]
      -        },
      -        "edited": {
      -          "type": "boolean"
      -        },
      -        "outcome": {
      -          "enum": [
      -            "approved",
      -            "skipped"
      -          ],
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "outcome",
      -        "at",
      -        "by",
      -        "byInstructions",
      -        "edited"
      -      ],
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • addedOutput schema / properties / task / properties / latestRound
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "number": {
      +          "exclusiveMinimum": 0,
      +          "maximum": 9007199254740991,
      +          "type": "integer"
      +        },
      +        "outcome": {
      +          "anyOf": [
      +            {
      +              "enum": [
      +                "approved",
      +                "sent_back",
      +                "cancelled",
      +                "withdrawn",
      +                "replaced"
      +              ],
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "number",
      +        "outcome"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / task / properties / step
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / task / properties / type
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / task / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "revision",
      -  "holder",
      -  "assignee",
      -  "reviewer",
      -  "decision",
      -  "approvedText",
      -  "result"
      -]New value: +[
      +  "id",
      +  "status",
      +  "revision",
      +  "type",
      +  "step",
      +  "holder",
      +  "assignee",
      +  "reviewer",
      +  "latestRound",
      +  "approvedRound",
      +  "result",
      +  "cut"
      +]
  6. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only say mutating/destructive/non-idempotent; the description goes far beyond with preconditions (expectedRevision required, PRECONDITION_REQUIRED), concurrency failure modes (CONFLICT with details.currentRevision, not_current with details.current {id, number}), lifecycle refusals (DELETED while an artifact is trashed, TASK_NOT_IN_REVIEW with latestRound), and the reviewer-identity check. It is consistent with destructiveHint=true and adds the truncation behavior (512 bytes, cut flag, task_get reads whole), which annotations cannot express.

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?

There is almost no filler, but the text is one dense run-on paragraph with stacked parentheticals that is genuinely hard to parse on first read. The purpose is front-loaded, yet error-code and parameter detail is interleaved rather than grouped by decision branch, forcing re-reads.

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

Completeness5/5

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

For a 7-parameter destructive review-decision tool with nested edits, this covers everything an agent needs: required preconditions, both happy paths, every refusal code it can hit, reviewer scoping, and the write-with-comment behavior. It even discloses the receipt truncation despite an output schema existing, which is the only return-value fact the schema cannot convey.

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 every parameter already carries its own description, and much of the description's parameter text (then/edits/comment/expectedRevision) restates it. What it adds is the cross-parameter interplay — null clears the proposal's then, an omitted then returns the task to you, edits.artifacts must name the current version — but that is incremental over a schema that already documents each field.

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?

Opens with a specific verb+resource+scope: "Decide a review addressed to you (task_list reviewer=me)", then enumerates the only two decisions (approve, send_back). It explicitly routes the negative case to a named sibling (task_cancel), so the agent can distinguish this tool from cancel/reopen/complete without opening another schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

States when to use each branch and what each requires: send_back needs a comment saying what to change; approve optionally carries edits; "To say no, call task_cancel, which a reviewer may do (decline and skip are refused, naming it)". It also excludes non-reviewers and self-proposals via REVIEW_NOT_YOURS, which is explicit when-not guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.