Skip to main content
Glama
figranium

Figranium MCP Server

Official
by figranium

create_task

Creates a fully-configured Figranium automation task with sequential steps, state variables, anti-bot stealth, and scheduling to automate web workflows like scraping, form-filling, and monitoring.

Instructions

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

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.

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 realistic click on the element matching 'selector'.

  • '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.

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": {
    "hn_stories": {
      "type": "string",
      "value": "[]"
    }
  },
  "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. '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'
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.
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 variables to store state and dynamic values. 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
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
extractionScriptNoOptional post-execution script to extract data. 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
statelessExecutionNoIf set to true, clear browser cookies and session states between runs. Expected type: boolean. Example: false
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It explains the execution model (linear sequence, control flow), variable dynamics, selector fallback hierarchy, retry/timeout guidance, and options like statelessExecution. This goes well beyond basic create semantics and gives the agent a realistic understanding of how tasks run.

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 clear section headers and front-loaded purpose. The detailed example is valuable for a tool with many nested parameters, though it could be trimmed slightly without losing essential information. Overall it earns its length.

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?

Given the tool's complexity (20 parameters, nested objects) and no output schema, the description is remarkably complete. It covers purpose, execution model, all major step types, selector fallback patterns, edge cases, and a realistic multi-step example. The agent can confidently construct a correct task payload.

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 the schema already covers 100% of parameters, the description adds substantial value by explaining the semantics of nested structures like actions, variables, stealth, and scheduling. The comprehensive step-type list, selector strategy, and full JSON example make the action items and their properties far more meaningful than the schema alone.

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 opens with a specific verb and resource: 'Create a complete, fully-configured Figranium automation task' and immediately enumerates the components included (action steps, state variables, stealth mechanisms, scheduling). The Purpose section further clarifies it is for automating recurring or complex web workflows, distinguishing it from sibling tools like 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?

The description explicitly states when to use the tool ('Use this tool when you need to automate any recurring or complex web-based workflows') and mentions execution options (ad-hoc, API, scheduled). It does not explicitly name sibling alternatives or state when not to use them, but the usage context is clear enough.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/figranium/figranium-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server