Skip to main content
Glama
figranium

Figranium MCP Server

Official

create_task

Create complete browser automation tasks for web scraping, form filling, and monitoring. Configure sequential actions, state variables, anti-bot stealth, and schedules to automate recurring workflows.

Instructions

Create a complete, fully-configured Figranium automation task including sequential action steps, state variables, anti-bot stealth mechanisms, and optional scheduling.

!!! IMPORTANT GUIDELINES FOR LLM AGENTS !!!

  1. VARIABLE TEMPLATING SYNTAX: You MUST use {$variable_name} (with a single curly brace and dollar sign, e.g. {$myVar}) for variable references/templating inside action values, URLs, headers, or body fields. NEVER use double curly braces like {{variable_name}} or JavaScript-style templates like ${variable_name}, as these syntaxes are unsupported and will cause execution failures.

  2. TASK VALIDATION: Newly created or updated tasks are ordinarily intended to be validated against a real execution result so configuration, selectors, and extracted output can be checked.

  3. MODE SELECTION: Use agent mode by default, including for scraping tasks. scrape mode does not support action blocks and should be used only when extremely fast, action-free scraping is required. Use headful for visible interactive debugging.

  4. WORKFLOW BOUNDARIES: Timed Wait and Navigate To cannot be the first action. A fixed initial delay belongs in task-level wait, and the initial destination belongs in task-level url. Get Content cannot be the final action because its value needs a consuming action; use extractionScript for final structured output.

1. Purpose

Use this tool when you need to automate any recurring or complex web-based workflows, including data extraction (scraping), automated form-filling, dashboard testing, or dynamic visual monitoring. Tasks are stored permanently in Figranium and can be executed ad-hoc, triggered via API, or scheduled.

2. Execution Model

Figranium tasks run as a linear sequence of steps defined in the 'actions' array. Actions are processed in order from top to bottom. Control flow steps (such as 'if', 'while', 'repeat') allow loops and branching, while 'on_error' steps define fallback behaviors. Variables represent the state and can be updated dynamically during execution. Ensure all opened block structures (such as 'if', 'while', 'repeat', 'foreach') are closed with an 'end' action step.

3. Comprehensive Step Types

  • 'navigate': Redirect browser to a new URL specified in the 'value' field.

  • 'wait': Pause execution for N seconds specified in the 'value' field.

  • 'wait_selector': Pause until the DOM element matching 'selector' is rendered.

  • 'click': Simulate a single, double, or right click on the element matching 'selector'; set 'clickType' to 'double' or 'right' when needed.

  • 'check' / 'uncheck': Idempotently set the checked state of a checkbox or radio control matching 'selector'.

  • 'drag_and_drop': Drag from 'selector' to the required 'targetSelector'.

  • 'reload': Reload the current page and wait for DOM content to load.

  • 'select': Choose an option from a native select using 'selector' and its option 'value'.

  • 'type': Type the 'value' into the 'selector' input element. Use 'typeMode' to clear/replace or append.

  • 'hover': Move mouse pointer to the element matching 'selector'.

  • 'press': Press a specific keyboard key (e.g., 'Enter') specified in the 'key' field.

  • 'scroll': Scroll the page or target element to a specific coordinate or direction.

  • 'javascript': Execute custom JavaScript on the page. Stored in 'value', outputs can be saved to 'varName'.

  • 'screenshot': Capture and save a screenshot.

  • 'http_request': Perform direct API requests.

  • 'if', 'else', 'end': Conditional blocks based on variables.

  • 'while', 'repeat', 'foreach': Looping blocks.

  • 'stop': Halt task execution.

  • 'set': Set or update a task variable.

  • 'solve_captcha': Attempt to automatically solve a detected CAPTCHA challenge.

  • 'wait_captcha': Pause until a CAPTCHA challenge is initialized/ready without solving it.

  • 'upload': Attach the newest unuploaded file, ZIP, or folder from a Cabinet (see 'cabinetId') to a file input, chooser, or drop target matching 'selector'.

  • 'finalize_uploads': Mark all Cabinet items attached during the execution as uploaded.

4. Selector Strategy & Fallbacks

When targeting elements, follow this hierarchy of selectors:

  1. Unique IDs (e.g., '#submit-button')

  2. ARIA roles and labels (e.g., '[aria-label="Search"]')

  3. Reliable CSS classes or data attributes (e.g., '.btn-primary', '[data-testid="login"]')

  4. Text matchers or XPath as a final resort. Fallback: If an element might be missing or slow to load, wrap the interaction inside an 'if' block evaluating a variable or use 'on_error' to catch failure.

5. Edge Cases & Retry Logic

  • Timeouts: Wait-selectors have a default timeout. Ensure critical steps use 'wait_selector' first to avoid clicking non-existent elements.

  • Stealth: Turning on options like 'naturalTyping', 'cursorGlide', and 'allowTypos' simulates authentic human speed and rhythm to prevent anti-bot blocking on protected sites.

  • Statelessness: Enable 'statelessExecution' to ensure execution is completely fresh without persistent browser storage/cookies.

6. Complex Real-World Multi-Step JSON Example:

{
  "name": "HackerNews Custom Scraper",
  "url": "https://news.ycombinator.com",
  "mode": "agent",
  "wait": 3,
  "rotateUserAgents": true,
  "stealth": {
    "allowTypos": true,
    "cursorGlide": true,
    "naturalTyping": true
  },
  "actions": [
    {
      "type": "wait_selector",
      "selector": ".hnname"
    },
    {
      "type": "click",
      "selector": "a.hnmore"
    },
    {
      "type": "wait",
      "value": "2"
    },
    {
      "type": "javascript",
      "value": "return Array.from(document.querySelectorAll('.athing')).map(tr => ({ id: tr.id, title: tr.querySelector('.titleline > a')?.innerText, href: tr.querySelector('.titleline > a')?.href }));",
      "varName": "hn_stories"
    },
    {
      "type": "navigate",
      "value": "https://httpbin.org/post"
    },
    {
      "type": "wait_selector",
      "selector": "pre"
    },
    {
      "type": "javascript",
      "value": "console.log('Finished scraping and navigated successfully.');"
    }
  ],
  "variables": {},
  "extractionFormat": "json"
}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesInitial URL to navigate to when the task starts. Expected type: string. Example: 'https://news.ycombinator.com'
modeYesExecution 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'
nameYesDescriptive 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
actionsNoSequential list of browser actions/control flow steps to execute. Timed Wait and Navigate To cannot be the first action because task-level wait and url define the starting state; Get Content cannot be the final action because its result must feed a later action or extractionScript. 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. Changed1 schema field changedv1.3.3
    • changedInput schema / properties / actions / description
      Previous 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."New value: +"Sequential list of browser actions/control flow steps to execute. Timed Wait and Navigate To cannot be the first action because task-level wait and url define the starting state; Get Content cannot be the final action because its result must feed a later action or extractionScript. Action blocks require 'agent' or 'headful' mode and are not supported in 'scrape' mode. Note: Variable references MUST use '{$variable_name}' syntax."
  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. Changed5 schema fields changedv1.1.1
    • changedInput schema / properties / actions / description
      Previous value: -"Sequential list of browser actions/control flow steps to execute."New value: +"Sequential list of browser actions/control flow steps to execute. Note: Variable reference MUST use '{$variable_name}' syntax."
    • changedInput schema / properties / actions / items / description
      Previous value: -"Represents a discrete automation step or flow-control operation executed in sequence."New value: +"Represents a discrete automation step or flow-control operation executed in sequence. Variable reference MUST use '{$variable_name}' syntax."
    • changedInput schema / properties / actions / items / properties / body / description
      Previous value: -"Payload body for 'http_request' actions. Expected type: string. Example: '{\"query\": \"sales\"}'"New value: +"Payload body for 'http_request' actions. Supports variable templating. MUST use '{$variable_name}' syntax for variable references (e.g., '{\"query\": \"{$value}\"}'). NEVER use '{{variable_name}}' or '${variable_name}'. Expected type: string. Example: '{\"query\": \"{$value}\"}'"
    • changedInput schema / properties / actions / items / properties / headers / description
      Previous value: -"JSON stringified headers for 'http_request'. Expected type: string. Example: '{\"Authorization\": \"Bearer x\"}'"New value: +"JSON stringified headers for 'http_request'. Supports variable templating. MUST use '{$variable_name}' syntax for variable references (e.g., '{\"Authorization\": \"Bearer {$token}\"}'). NEVER use '{{variable_name}}' or '${variable_name}'. Expected type: string. Example: '{\"Authorization\": \"Bearer {$token}\"}'"
    • changedInput schema / properties / actions / items / properties / value / description
      Previous value: -"Input value or configuration value for this action. Used for typing text, script contents, or wait durations. Expected type: string. Example: 'hello@world.com'"New value: +"Input value or configuration value for this action. Supports variable templating. MUST use '{$variable_name}' syntax for variable references (e.g., '{$myVar}'). NEVER use '{{variable_name}}' or '${variable_name}'. Expected type: string. Example: 'hello@world.com'"
  6. First observedv1.0.0

TDQS

A4.6/5.0
Behavior5/5

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

The annotations only provide a few boolean hints (readOnlyHint=false, idempotentHint=false), so the description carries the transparency burden and far exceeds it. It discloses that tasks are stored permanently, that new tasks are intended to be validated against a real execution result, that the execution model is a linear sequence requiring closed control-flow blocks, and that Get Content cannot be the final action — all genuinely useful behavioral constraints beyond structured fields.

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?

The description is long but well-structured with a front-loaded IMPORTANT GUIDELINES block followed by numbered sections and a full JSON example, so key correctness rules appear first. Some redundancy exists — the {$variable} syntax rule and mode guidance are repeated in both the description and the input-schema descriptions — but most sentences earn their place given the tool's complexity.

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

Completeness4/5

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

For a 22-parameter tool with deeply nested objects and no output schema, the description is remarkably complete: it covers purpose, execution model, every step type, selector fallbacks, edge cases/retry logic, and includes a runnable multi-action example. The notable gap is the return value/response format (no output schema exists and the description never states what the tool returns, e.g., task ID), which an agent might need to confirm creation success.

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 substantial meaning: Section 3 documents what each of the ~36 action types does (the schema only says 'The action type to perform'), and the guidelines prescribe the {$variable} templating syntax, workflow boundaries (no Timed Wait/Navigate first, no Get Content last), and selector strategy hierarchy. This materially improves the agent's ability to construct valid parameter values.

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 opening line states a specific verb and resource — 'Create a complete, fully-configured Figranium automation task' — and enumerates its scope (sequential action steps, state variables, stealth mechanisms, optional scheduling). Section 1 further distinguishes it from siblings by framing it for recurring/complex web workflows and noting tasks are stored permanently and can be executed later, which separates it from task_execute and schedule_set.

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

Usage Guidelines4/5

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

Section 1 gives explicit when-to-use context ('automate any recurring or complex web-based workflows... data extraction, form-filling, dashboard testing, visual monitoring') and the mode-selection guidance inside the IMPORTANT GUIDELINES block tells the agent which mode to choose and when scrape is acceptable. However, it never names alternative sibling tools (e.g., task_update, schedule_set) or states when NOT to use this tool, so exclusions are missing.

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