Skip to main content
Glama
jumodada

DrissionPage MCP Server

by jumodada

Click And Download

element_click_and_download
Destructive

Click a selector, coordinate, or keyboard trigger to start one download, await completion, and return an integrity-checked artifact receipt.

Instructions

Perform one selector, coordinate, or keyboard trigger, await one completed download, and return an integrity-checked safe artifact receipt.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tab_idNoOptional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.
timeoutNoShared maximum seconds for target resolution, click, and download completion.
selectorYesSelector/accessibility target, viewport coordinate click, or keyboard input that starts one download.
operation_keyNoOptional live-task key. Reusing the same key replays the frozen artifact result without clicking again.
expected_filenameNoOptional exact basename constraint for the downloaded artifact.
expected_mime_typeNoOptional MIME constraint inferred from the completed filename.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed17 schema fields changedv0.8.8
    • addedInput schema / properties / tab_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 128,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Optional MCP or native DrissionPage tab id. When omitted, the current tab is captured at call start.",
      +  "title": "Tab Id"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / tab_id
      Added value: +{
      +  "description": "MCP tab id captured for this operation.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadFailedData / required
      Previous value: -[
      -  "operation_key",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt",
      +  "tab_id"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / description
      Added value: +"MCP tab id captured for this operation."
    • removedOutput schema / $defs / ElementClickAndDownloadFailedReceipt / properties / tab_id / title
      Removed value: -"Tab Id"
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / tab_id
      Added value: +{
      +  "description": "MCP tab id captured for this operation.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / required
      Previous value: -[
      -  "operation_key",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt",
      +  "tab_id"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / description
      Added value: +"MCP tab id captured for this operation."
    • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateReceipt / properties / tab_id / title
      Removed value: -"Tab Id"
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / tab_id
      Added value: +{
      +  "description": "MCP tab id captured for this operation.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadSuccessData / required
      Previous value: -[
      -  "operation_key",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt",
      +  "tab_id"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / description
      Added value: +"MCP tab id captured for this operation."
    • removedOutput schema / $defs / ElementClickAndDownloadSuccessReceipt / properties / tab_id / title
      Removed value: -"Tab Id"
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / tab_id
      Added value: +{
      +  "description": "MCP tab id captured for this operation.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / required
      Previous value: -[
      -  "operation_key",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt",
      +  "tab_id"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / description
      Added value: +"MCP tab id captured for this operation."
    • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedReceipt / properties / tab_id / title
      Removed value: -"Tab Id"
  2. Changed95 schema fields changedv0.8.0
    • addedInput schema / $defs
      Added value: +{
      +  "AccessibilityTargetInput": {
      +    "additionalProperties": false,
      +    "description": "A unique accessibility role/name target within an optional DOM scope.",
      +    "properties": {
      +      "exact": {
      +        "default": true,
      +        "title": "Exact",
      +        "type": "boolean"
      +      },
      +      "frame_selectors": {
      +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
      +        "items": {
      +          "maxLength": 500,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 4,
      +        "title": "Frame Selectors",
      +        "type": "array"
      +      },
      +      "kind": {
      +        "const": "accessibility",
      +        "title": "Kind",
      +        "type": "string"
      +      },
      +      "name": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Name"
      +      },
      +      "role": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "title": "Role",
      +        "type": "string"
      +      },
      +      "shadow_hosts": {
      +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
      +        "items": {
      +          "maxLength": 500,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 8,
      +        "title": "Shadow Hosts",
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "role"
      +    ],
      +    "title": "AccessibilityTargetInput",
      +    "type": "object"
      +  },
      +  "CoordinateDownloadTriggerInput": {
      +    "additionalProperties": false,
      +    "description": "One left click at bounded viewport coordinates.",
      +    "properties": {
      +      "delay_before_press_ms": {
      +        "default": 0,
      +        "maximum": 10000,
      +        "minimum": 0,
      +        "title": "Delay Before Press Ms",
      +        "type": "integer"
      +      },
      +      "kind": {
      +        "const": "coordinate",
      +        "title": "Kind",
      +        "type": "string"
      +      },
      +      "profile": {
      +        "default": "direct",
      +        "enum": [
      +          "direct",
      +          "natural"
      +        ],
      +        "title": "Profile",
      +        "type": "string"
      +      },
      +      "x": {
      +        "maximum": 100000,
      +        "minimum": 0,
      +        "title": "X",
      +        "type": "number"
      +      },
      +      "y": {
      +        "maximum": 100000,
      +        "minimum": 0,
      +        "title": "Y",
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "x",
      +      "y"
      +    ],
      +    "title": "CoordinateDownloadTriggerInput",
      +    "type": "object"
      +  },
      +  "KeyboardDownloadTriggerInput": {
      +    "additionalProperties": false,
      +    "description": "One bounded keyboard input sent to the active page element.",
      +    "properties": {
      +      "interval": {
      +        "default": 0,
      +        "maximum": 2,
      +        "minimum": 0,
      +        "title": "Interval",
      +        "type": "number"
      +      },
      +      "keys": {
      +        "maxLength": 256,
      +        "minLength": 1,
      +        "title": "Keys",
      +        "type": "string"
      +      },
      +      "kind": {
      +        "const": "keyboard",
      +        "title": "Kind",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "keys"
      +    ],
      +    "title": "KeyboardDownloadTriggerInput",
      +    "type": "object"
      +  },
      +  "SelectorTargetInput": {
      +    "additionalProperties": false,
      +    "description": "A selector target with optional frame and shadow-root scope.",
      +    "properties": {
      +      "frame_selectors": {
      +        "description": "Ordered outer-to-inner frame selectors resolved by DrissionPage.",
      +        "items": {
      +          "maxLength": 500,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 4,
      +        "title": "Frame Selectors",
      +        "type": "array"
      +      },
      +      "kind": {
      +        "const": "selector",
      +        "title": "Kind",
      +        "type": "string"
      +      },
      +      "selector": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "title": "Selector",
      +        "type": "string"
      +      },
      +      "shadow_hosts": {
      +        "description": "Ordered outer-to-inner shadow host selectors resolved by DrissionPage.",
      +        "items": {
      +          "maxLength": 500,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "maxItems": 8,
      +        "title": "Shadow Hosts",
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "selector"
      +    ],
      +    "title": "SelectorTargetInput",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / properties / selector / anyOf
      Added value: +[
      +  {
      +    "maxLength": 500,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  {
      +    "discriminator": {
      +      "mapping": {
      +        "accessibility": "#/$defs/AccessibilityTargetInput",
      +        "coordinate": "#/$defs/CoordinateDownloadTriggerInput",
      +        "keyboard": "#/$defs/KeyboardDownloadTriggerInput",
      +        "selector": "#/$defs/SelectorTargetInput"
      +      },
      +      "propertyName": "kind"
      +    },
      +    "oneOf": [
      +      {
      +        "$ref": "#/$defs/SelectorTargetInput"
      +      },
      +      {
      +        "$ref": "#/$defs/AccessibilityTargetInput"
      +      },
      +      {
      +        "$ref": "#/$defs/CoordinateDownloadTriggerInput"
      +      },
      +      {
      +        "$ref": "#/$defs/KeyboardDownloadTriggerInput"
      +      }
      +    ]
      +  }
      +]
    • changedInput schema / properties / selector / description
      Previous value: -"CSS/XPath/DrissionPage selector for the download control."New value: +"Selector/accessibility target, viewport coordinate click, or keyboard input that starts one download."
    • removedInput schema / properties / selector / maxLength
      Removed value: -500
    • removedInput schema / properties / selector / minLength
      Removed value: -1
    • removedInput schema / properties / selector / type
      Removed value: -"string"
    • removedOutput schema / $defs / ArtifactRef / properties / kind / const
      Removed value: -"download"
    • addedOutput schema / $defs / ArtifactRef / properties / kind / enum
      Added value: +[
      +  "download",
      +  "page_export"
      +]
    • addedOutput schema / $defs / CoordinateDownloadTriggerData
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "delay_before_press_ms": {
      +      "maximum": 10000,
      +      "minimum": 0,
      +      "title": "Delay Before Press Ms",
      +      "type": "integer"
      +    },
      +    "kind": {
      +      "const": "coordinate",
      +      "title": "Kind",
      +      "type": "string"
      +    },
      +    "profile": {
      +      "enum": [
      +        "direct",
      +        "natural"
      +      ],
      +      "title": "Profile",
      +      "type": "string"
      +    },
      +    "x": {
      +      "maximum": 100000,
      +      "minimum": 0,
      +      "title": "X",
      +      "type": "number"
      +    },
      +    "y": {
      +      "maximum": 100000,
      +      "minimum": 0,
      +      "title": "Y",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "x",
      +    "y",
      +    "profile",
      +    "delay_before_press_ms"
      +  ],
      +  "title": "CoordinateDownloadTriggerData",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "trigger"
      +      ]
      +    },
      +    "properties": {
      +      "locator": {
      +        "type": "string"
      +      },
      +      "selector": {
      +        "type": "string"
      +      },
      +      "selector_normalized": {
      +        "type": "boolean"
      +      },
      +      "selector_strategy": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "selector",
      +      "locator",
      +      "selector_strategy",
      +      "selector_normalized"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "selector"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "locator"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_strategy"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_normalized"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "target_kind"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "frame_selectors"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "shadow_hosts"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "role"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "name"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "exact"
      +          ]
      +        }
      +      ]
      +    },
      +    "properties": {
      +      "trigger": {
      +        "not": {
      +          "type": "null"
      +        }
      +      }
      +    },
      +    "required": [
      +      "trigger"
      +    ]
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / exact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Exact"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / frame_selectors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Frame Selectors"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / locator / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Name"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / role
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Role"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_normalized / type
      Removed value: -"boolean"
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / selector_strategy / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / shadow_hosts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Shadow Hosts"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / target_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "selector",
      +        "accessibility"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Target Kind"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadFailedData / properties / trigger
      Added value: +{
      +  "anyOf": [
      +    {
      +      "discriminator": {
      +        "mapping": {
      +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
      +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
      +        },
      +        {
      +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Trigger"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadFailedData / required
      Previous value: -[
      -  "operation_key",
      -  "selector",
      -  "locator",
      -  "selector_strategy",
      -  "selector_normalized",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "trigger"
      +      ]
      +    },
      +    "properties": {
      +      "locator": {
      +        "type": "string"
      +      },
      +      "selector": {
      +        "type": "string"
      +      },
      +      "selector_normalized": {
      +        "type": "boolean"
      +      },
      +      "selector_strategy": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "selector",
      +      "locator",
      +      "selector_strategy",
      +      "selector_normalized"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "selector"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "locator"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_strategy"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_normalized"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "target_kind"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "frame_selectors"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "shadow_hosts"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "role"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "name"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "exact"
      +          ]
      +        }
      +      ]
      +    },
      +    "properties": {
      +      "trigger": {
      +        "not": {
      +          "type": "null"
      +        }
      +      }
      +    },
      +    "required": [
      +      "trigger"
      +    ]
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / exact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Exact"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / frame_selectors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Frame Selectors"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / locator / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Name"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / role
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Role"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_normalized / type
      Removed value: -"boolean"
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / selector_strategy / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / shadow_hosts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Shadow Hosts"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / target_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "selector",
      +        "accessibility"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Target Kind"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / properties / trigger
      Added value: +{
      +  "anyOf": [
      +    {
      +      "discriminator": {
      +        "mapping": {
      +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
      +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
      +        },
      +        {
      +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Trigger"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadIndeterminateData / required
      Previous value: -[
      -  "operation_key",
      -  "selector",
      -  "locator",
      -  "selector_strategy",
      -  "selector_normalized",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "trigger"
      +      ]
      +    },
      +    "properties": {
      +      "locator": {
      +        "type": "string"
      +      },
      +      "selector": {
      +        "type": "string"
      +      },
      +      "selector_normalized": {
      +        "type": "boolean"
      +      },
      +      "selector_strategy": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "selector",
      +      "locator",
      +      "selector_strategy",
      +      "selector_normalized"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "selector"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "locator"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_strategy"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_normalized"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "target_kind"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "frame_selectors"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "shadow_hosts"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "role"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "name"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "exact"
      +          ]
      +        }
      +      ]
      +    },
      +    "properties": {
      +      "trigger": {
      +        "not": {
      +          "type": "null"
      +        }
      +      }
      +    },
      +    "required": [
      +      "trigger"
      +    ]
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / exact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Exact"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / frame_selectors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Frame Selectors"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / locator / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Name"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / role
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Role"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_normalized / type
      Removed value: -"boolean"
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / selector_strategy / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / shadow_hosts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Shadow Hosts"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / target_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "selector",
      +        "accessibility"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Target Kind"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadSuccessData / properties / trigger
      Added value: +{
      +  "anyOf": [
      +    {
      +      "discriminator": {
      +        "mapping": {
      +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
      +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
      +        },
      +        {
      +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Trigger"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadSuccessData / required
      Previous value: -[
      -  "operation_key",
      -  "selector",
      -  "locator",
      -  "selector_strategy",
      -  "selector_normalized",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt"
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "trigger"
      +      ]
      +    },
      +    "properties": {
      +      "locator": {
      +        "type": "string"
      +      },
      +      "selector": {
      +        "type": "string"
      +      },
      +      "selector_normalized": {
      +        "type": "boolean"
      +      },
      +      "selector_strategy": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "selector",
      +      "locator",
      +      "selector_strategy",
      +      "selector_normalized"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "anyOf": [
      +        {
      +          "required": [
      +            "selector"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "locator"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_strategy"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "selector_normalized"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "target_kind"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "frame_selectors"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "shadow_hosts"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "role"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "name"
      +          ]
      +        },
      +        {
      +          "required": [
      +            "exact"
      +          ]
      +        }
      +      ]
      +    },
      +    "properties": {
      +      "trigger": {
      +        "not": {
      +          "type": "null"
      +        }
      +      }
      +    },
      +    "required": [
      +      "trigger"
      +    ]
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / exact
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "boolean"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Exact"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / frame_selectors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Frame Selectors"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / locator / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Name"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / role
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Role"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / anyOf
      Added value: +[
      +  {
      +    "type": "boolean"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_normalized / type
      Removed value: -"boolean"
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / default
      Added value: +null
    • removedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / selector_strategy / type
      Removed value: -"string"
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / shadow_hosts
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Shadow Hosts"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / target_kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "selector",
      +        "accessibility"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Target Kind"
      +}
    • addedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / properties / trigger
      Added value: +{
      +  "anyOf": [
      +    {
      +      "discriminator": {
      +        "mapping": {
      +          "coordinate": "#/$defs/CoordinateDownloadTriggerData",
      +          "keyboard": "#/$defs/KeyboardDownloadTriggerData"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/CoordinateDownloadTriggerData"
      +        },
      +        {
      +          "$ref": "#/$defs/KeyboardDownloadTriggerData"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Trigger"
      +}
    • changedOutput schema / $defs / ElementClickAndDownloadValidationFailedData / required
      Previous value: -[
      -  "operation_key",
      -  "selector",
      -  "locator",
      -  "selector_strategy",
      -  "selector_normalized",
      -  "status",
      -  "artifact",
      -  "receipt"
      -]New value: +[
      +  "operation_key",
      +  "status",
      +  "artifact",
      +  "receipt"
      +]
    • addedOutput schema / $defs / KeyboardDownloadTriggerData
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "interval": {
      +      "maximum": 2,
      +      "minimum": 0,
      +      "title": "Interval",
      +      "type": "number"
      +    },
      +    "keys": {
      +      "$ref": "#/$defs/KeyboardInputMetadata"
      +    },
      +    "kind": {
      +      "const": "keyboard",
      +      "title": "Kind",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "keys",
      +    "interval"
      +  ],
      +  "title": "KeyboardDownloadTriggerData",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / KeyboardInputMetadata
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "length": {
      +      "minimum": 0,
      +      "title": "Length",
      +      "type": "integer"
      +    },
      +    "provided": {
      +      "title": "Provided",
      +      "type": "boolean"
      +    },
      +    "redacted": {
      +      "const": true,
      +      "title": "Redacted",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "provided",
      +    "length",
      +    "redacted"
      +  ],
      +  "title": "KeyboardInputMetadata",
      +  "type": "object"
      +}
  3. Addedv0.7.2

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true, and openWorldHint=true, so the side-effect profile is covered. The description adds that exactly one trigger is performed, that the call blocks until one download completes, and that the result is an integrity-checked artifact receipt — useful behavioral context the annotations do not convey. It does not disclose timeout/failure semantics or what 'safe' means concretely.

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 that leads with the trigger action and ends with the deliverable. It is dense but free of filler; it could be slightly shorter but nothing is wasted.

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

Completeness3/5

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

The output schema is present so return-value explanation is unnecessary, and annotations cover the safety profile. However, for a blocking, destructive download operation, the description omits failure/timeout behavior and the single-download constraint's consequences, leaving the agent to rely on schema defaults.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents tab_id, timeout, operation_key replay, expected_filename, and expected_mime_type constraints. The description adds only the trigger-type enumeration, which the discriminator schema already provides. Baseline 3 applies when the schema does the heavy lifting.

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?

Names a specific verb set (trigger + await download + return receipt) and a concrete resource (one completed download artifact). Read against siblings like element_click and element_click_and_upload, it is clear this tool is the download variant. It is slightly imprecise in enumerating only 'selector, coordinate, or keyboard' triggers while the schema also supports an accessibility target.

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 explicit statement of when to pick this tool over element_click, page_click_xy, or element_click_and_upload, nor any condition/antecedent for use. The 'await one completed download' phrasing only implies usage; an agent must infer the selection rule from the name.

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