Skip to main content
Glama
figranium

Figranium MCP Server

Official

task_update

Idempotent

Update an existing saved Figranium automation task by correcting its name or URL, replacing action sequences, changing variables, stealth settings, extraction script, or schedule, without executing it.

Instructions

Update one or more fields on an existing, saved Figranium browser-automation task.

When to use

Use this after task_list identifies the task to modify—for example, to correct its name or URL, replace its action sequence, change input variables, adjust stealth settings, or revise its extraction script or schedule. The task remains stored under the same taskId and is not executed by this operation.

Required request shape

  • taskId is required and must be the ID of an existing task.

  • Include at least one additional field. An ID-only request is rejected because it would make no change.

  • Every other field is optional: omitted fields are left unchanged.

  • Repeating the same request is safe and produces the same stored configuration.

Important update behavior

  • For compound fields—actions, variables, stealth, translation, and schedule—send the complete value you want stored for that field, rather than only a nested fragment.

  • actions are an ordered replacement sequence. Use agent or headful mode for actions; scrape mode does not support them. Close every if, while, repeat, or foreach block with an end action.

  • Use {$variable_name} for task-variable references in URLs, headers, bodies, and action values. Do not use {{variable_name}} or ${variable_name}.

  • This tool changes saved configuration but does not run or delete a task. Use task_execute to validate an updated workflow and task_delete only when permanent removal is intended.

Examples

Rename a task: { "taskId": "task_101", "name": "Daily lead extractor" }.

Replace its workflow and output extraction: { "taskId": "task_101", "actions": [{ "type": "wait_selector", "selector": "[data-testid='results']" }], "extractionScript": "return document.title" }.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoInitial URL to navigate to when the task starts. Expected type: string. Example: 'https://news.ycombinator.com'
modeNoExecution mode. Use 'agent' by default, including for scraping, because it supports action blocks. 'scrape' does not support action blocks and is only for exceptional, extremely fast action-free scraping. 'headful' runs in a visible browser window with human oversight. Expected type: string enum. Example: 'agent'
nameNoDescriptive name of the automation task. Expected type: string. Example: 'HackerNews Scraper'
waitNoStandard delay in seconds to wait after navigation and page loads to let dynamic scripts complete. Expected type: number. Example: 5
taskIdYesID of the existing task to modify. Get it from task_list. Required; must be a non-empty string. Example: 'task_101'.
actionsNoSequential list of browser actions/control flow steps to execute. Action blocks require 'agent' or 'headful' mode and are not supported in 'scrape' mode. Note: Variable references MUST use '{$variable_name}' syntax.
stealthNoConfigures realistic stealth, anti-bot, and human behavior simulation on the browser instance.
scheduleNoTask automatic execution schedule. Expected type: object.
selectorNoDefault CSS selector to wait for on the page load before starting actions. Expected type: string. Example: '.main-content'
variablesNoTask INPUT variables and caller-overridable configuration only. Do not declare output-only fields or transient runtime state here. Use Set Variable for mid-task state. Expected type: record object of variable configurations.
descriptionNoDetailed description of what the task automates. Expected type: string. Example: 'Logs in and extracts weekly leads'
humanTypingNoVary typing speeds and insert tiny delays to simulate organic human typing. Expected type: boolean. Example: true
includeHtmlNoWhether to include the raw page HTML in the execution response. Expected type: boolean. Example: false
translationNoOptional page translation for Agent and headful runs. It is disabled by default and is not available in Scrape mode.
rotateProxiesNoRotate through configured proxy IPs to prevent IP-based rate limiting. Expected type: boolean. Example: false
rotateViewportNoVary viewport resolutions randomly to simulate multiple desktop and mobile devices. Expected type: boolean. Example: true
disableRecordingNoDisable video/VNC recording of this task to save storage. Expected type: boolean. Example: true
extractionFormatNoTarget export format of any extracted data. Expected type: string enum. Example: 'json'json
extractionScriptNoPost-execution extraction script for the task's actual final output. Final structured fields, lists, tables, parsing, and extraction logic belong here rather than in task variables or JavaScript action blocks. Expected type: string. Example: 'return Array.from(document.querySelectorAll("a")).map(el => el.href)'
includeShadowDomNoWhether to parse and resolve target elements residing in Shadow DOMs. Expected type: boolean. Example: true
rotateUserAgentsNoRotate user agents across requests to avoid pattern blocking and fingerprinting. Expected type: boolean. Example: true
downloadCabinetIdNoCabinet used for intercepted downloads; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'
statelessExecutionNoIf set to true, clear browser cookies and session states between runs. Expected type: boolean. Example: false

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.3.1
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "name"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "description"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "url"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "mode"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "wait"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "selector"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "rotateUserAgents"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "rotateProxies"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "rotateViewport"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "humanTyping"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "stealth"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "actions"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "variables"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "extractionScript"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "extractionFormat"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "includeHtml"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "includeShadowDom"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "disableRecording"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "statelessExecution"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "translation"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "downloadCabinetId"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "schedule"
      +    ]
      +  }
      +]
    • changedInput schema / description
      Previous value: -"Exhaustive task update structure for Figranium automation tasks. NOTE: You MUST use '{$variable_name}' variable referencing syntax, and you MUST automatically test your changes using 'task_execute' right after task update unless prompted not to."New value: +"Partially update a saved Figranium automation task. First use task_list to obtain taskId, then send taskId plus at least one field to change. Omitted fields are left unchanged. This operation persists the supplied values and is idempotent when repeated with the same payload. When supplying compound fields such as actions, variables, stealth, translation, or schedule, provide the complete intended value for that field. Use '{$variable_name}' (not '{{variable_name}}' or '${variable_name}') for variable references in URLs and action values. After changing browser behavior, selectors, actions, or extractionScript, use task_execute to validate the real result. Do not use this tool to delete a task; use task_delete instead."
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "name": "Daily lead extractor",
      +    "taskId": "task_101"
      +  },
      +  {
      +    "actions": [
      +      {
      +        "selector": "[data-testid='results']",
      +        "type": "wait_selector"
      +      },
      +      {
      +        "selector": "a.next-page",
      +        "type": "click"
      +      }
      +    ],
      +    "extractionScript": "return Array.from(document.querySelectorAll('.result')).map((el) => el.textContent?.trim());",
      +    "taskId": "task_101"
      +  }
      +]
    • changedInput schema / properties / taskId / description
      Previous value: -"The unique ID of the task to update."New value: +"ID of the existing task to modify. Get it from task_list. Required; must be a non-empty string. Example: 'task_101'."
    • addedInput schema / properties / taskId / minLength
      Added value: +1
  2. Changed6 schema fields changedv1.3.0
    • addedInput schema / properties / actions / items / properties / clickType
      Added value: +{
      +  "default": "single",
      +  "description": "Click interaction mode for 'click': single, double, or right click. Expected type: string enum. Example: 'double'",
      +  "enum": [
      +    "single",
      +    "double",
      +    "right"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / actions / items / properties / targetSelector
      Added value: +{
      +  "description": "Destination selector for 'drag_and_drop'. Required with a source 'selector'. Expected type: string. Example: '.done-column'",
      +  "type": "string"
      +}
    • changedInput schema / properties / actions / items / properties / type / enum
      Previous value: -[
      -  "click",
      -  "type",
      -  "wait",
      -  "wait_selector",
      -  "press",
      -  "scroll",
      -  "javascript",
      -  "csv",
      -  "hover",
      -  "merge",
      -  "screenshot",
      -  "if",
      -  "else",
      -  "end",
      -  "while",
      -  "repeat",
      -  "foreach",
      -  "stop",
      -  "set",
      -  "on_error",
      -  "navigate",
      -  "wait_downloads",
      -  "start",
      -  "http_request",
      -  "get_content",
      -  "solve_captcha",
      -  "wait_captcha",
      -  "upload",
      -  "finalize_uploads"
      -]New value: +[
      +  "click",
      +  "type",
      +  "wait",
      +  "wait_selector",
      +  "press",
      +  "scroll",
      +  "javascript",
      +  "csv",
      +  "hover",
      +  "merge",
      +  "screenshot",
      +  "if",
      +  "else",
      +  "end",
      +  "while",
      +  "repeat",
      +  "foreach",
      +  "stop",
      +  "set",
      +  "on_error",
      +  "navigate",
      +  "wait_downloads",
      +  "start",
      +  "http_request",
      +  "get_content",
      +  "solve_captcha",
      +  "wait_captcha",
      +  "upload",
      +  "finalize_uploads",
      +  "check",
      +  "uncheck",
      +  "drag_and_drop",
      +  "reload",
      +  "select",
      +  "do_nothing"
      +]
    • removedInput schema / properties / cabinetId
      Removed value: -{
      -  "description": "Cabinet used for intercepted downloads and 'upload' actions that omit their own cabinetId; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'",
      -  "type": "string"
      -}
    • addedInput schema / properties / downloadCabinetId
      Added value: +{
      +  "description": "Cabinet used for intercepted downloads; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'",
      +  "type": "string"
      +}
    • addedInput schema / properties / translation
      Added value: +{
      +  "description": "Optional page translation for Agent and headful runs. It is disabled by default and is not available in Scrape mode.",
      +  "properties": {
      +    "enabled": {
      +      "description": "Enable rendered-page translation. Expected type: boolean. Example: true",
      +      "type": "boolean"
      +    },
      +    "targetLanguage": {
      +      "description": "translate.js target language name. Expected type: string. Example: 'spanish'",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "enabled",
      +    "targetLanguage"
      +  ],
      +  "type": "object"
      +}
  3. Changed4 schema fields changedv1.2.3
    • changedInput schema / properties / actions / items / properties / varName / description
      Previous value: -"Variable name to store output data or extracted content in. Expected type: string. Example: 'extractedTitle'"New value: +"Runtime variable name used by actions such as Set Variable, merge, or foreach. Set Variable may create or update this runtime variable. Do not use varName as the schema for final task outputs; use extractionScript for final extraction."
    • changedInput schema / properties / extractionScript / description
      Previous value: -"Optional post-execution script to extract data. Expected type: string. Example: 'return Array.from(document.querySelectorAll(\"a\")).map(el => el.href)'"New value: +"Post-execution extraction script for the task's actual final output. Final structured fields, lists, tables, parsing, and extraction logic belong here rather than in task variables or JavaScript action blocks. Expected type: string. Example: 'return Array.from(document.querySelectorAll(\"a\")).map(el => el.href)'"
    • changedInput schema / properties / variables / additionalProperties / description
      Previous value: -"Configures state variables accessible throughout the task execution."New value: +"Configures task input variables and caller-overridable values. Do not declare output-only fields here; use Set Variable for mid-task runtime state and extractionScript for final outputs."
    • changedInput schema / properties / variables / description
      Previous value: -"Task variables to store state and dynamic values. Expected type: record object of variable configurations."New value: +"Task INPUT variables and caller-overridable configuration only. Do not declare output-only fields or transient runtime state here. Use Set Variable for mid-task state. Expected type: record object of variable configurations."
  4. Changed8 schema fields changedv1.2.1
    • changedInput schema / properties / actions / description
      Previous value: -"Sequential list of browser actions/control flow steps to execute. Note: Variable reference MUST use '{$variable_name}' syntax."New value: +"Sequential list of browser actions/control flow steps to execute. Action blocks require 'agent' or 'headful' mode and are not supported in 'scrape' mode. Note: Variable references MUST use '{$variable_name}' syntax."
    • addedInput schema / properties / actions / items / properties / cabinetId
      Added value: +{
      +  "description": "Source Cabinet ID for an 'upload' action; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'",
      +  "type": "string"
      +}
    • addedInput schema / properties / actions / items / properties / captchaType
      Added value: +{
      +  "description": "The CAPTCHA provider to target for 'solve_captcha'/'wait_captcha' actions. Expected type: string enum. Example: 'recaptcha_v2'",
      +  "enum": [
      +    "recaptcha_v2",
      +    "recaptcha_v3",
      +    "hcaptcha",
      +    "turnstile"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / actions / items / properties / markAsUploaded
      Added value: +{
      +  "default": false,
      +  "description": "When true, an 'upload' action marks its Cabinet item uploaded immediately after attaching it. Expected type: boolean. Example: false",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / actions / items / properties / timeout
      Added value: +{
      +  "description": "Maximum time in seconds to wait for a CAPTCHA to become ready or solved, for 'solve_captcha'/'wait_captcha' actions. Expected type: number. Example: 30",
      +  "type": "number"
      +}
    • changedInput schema / properties / actions / items / properties / type / enum
      Previous value: -[
      -  "click",
      -  "type",
      -  "wait",
      -  "wait_selector",
      -  "press",
      -  "scroll",
      -  "javascript",
      -  "csv",
      -  "hover",
      -  "merge",
      -  "screenshot",
      -  "if",
      -  "else",
      -  "end",
      -  "while",
      -  "repeat",
      -  "foreach",
      -  "stop",
      -  "set",
      -  "on_error",
      -  "navigate",
      -  "wait_downloads",
      -  "start",
      -  "http_request",
      -  "get_content"
      -]New value: +[
      +  "click",
      +  "type",
      +  "wait",
      +  "wait_selector",
      +  "press",
      +  "scroll",
      +  "javascript",
      +  "csv",
      +  "hover",
      +  "merge",
      +  "screenshot",
      +  "if",
      +  "else",
      +  "end",
      +  "while",
      +  "repeat",
      +  "foreach",
      +  "stop",
      +  "set",
      +  "on_error",
      +  "navigate",
      +  "wait_downloads",
      +  "start",
      +  "http_request",
      +  "get_content",
      +  "solve_captcha",
      +  "wait_captcha",
      +  "upload",
      +  "finalize_uploads"
      +]
    • addedInput schema / properties / cabinetId
      Added value: +{
      +  "description": "Cabinet used for intercepted downloads and 'upload' actions that omit their own cabinetId; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'",
      +  "type": "string"
      +}
    • changedInput schema / properties / mode / description
      Previous value: -"Execution mode. 'scrape' is fast and headless; 'agent' uses automated browser interaction; 'headful' runs in a visible browser window with human oversight. Expected type: string enum. Example: 'agent'"New value: +"Execution mode. Use 'agent' by default, including for scraping, because it supports action blocks. 'scrape' does not support action blocks and is only for exceptional, extremely fast action-free scraping. 'headful' runs in a visible browser window with human oversight. Expected type: string enum. Example: 'agent'"
  5. Addedv1.1.1

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description elaborates on idempotency ('Repeating the same request is safe'), non-execution, and compound-field replacement semantics. It also details variable syntax and action ordering, adding substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections: When to use, Required request shape, Important update behavior, and Examples. It front-loads the core purpose and each section provides essential information without redundancy. Every sentence earns its place.

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 tool with 23 parameters, nested objects, and no output schema, the description covers key behaviors, usage, examples, and parameter semantics comprehensively. An agent has all necessary information to call it correctly, including what not to do and how to validate results.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds crucial guidance not present in individual field descriptions: the complete-value requirement for compound fields (actions, variables, stealth, translation, schedule), the ordered replacement nature of actions, and the variable reference syntax generalized across URLs, headers, bodies, and action values. This goes well beyond the schema.

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?

The description clearly states the action: 'Update one or more fields on an existing, saved Figranium browser-automation task.' It names the specific verb and resource, and immediately distinguishes itself from siblings by noting it does not execute or delete the task, and references task_list for retrieval.

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?

Provides explicit when-to-use guidance: 'Use this after task_list identifies the task to modify.' It also lists alternatives: 'Use task_execute to validate an updated workflow and task_delete only when permanent removal is intended.' This clearly routes the agent to the correct sibling.

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