Figranium MCP Server
OfficialThe Figranium MCP Server enables LLM clients (e.g., Claude Desktop, Cursor) to interact with the Figranium automation platform via the Model Context Protocol, allowing AI agents to discover, create, execute, and schedule web automation tasks.
Task Management: Create comprehensive web automation tasks with sequential browser actions (click, type, navigate, etc.), stealth controls, and variable support; list all tasks; execute tasks, optionally overriding variables per run.
Execution Monitoring: Retrieve logs and summaries of past task executions.
Schedule Management: Define, update, delete, and preview cron or frequency-based schedules; check schedule statuses for individual tasks or overall.
Rich Browser Capabilities: Supports modes like scrape, agent, and headful; actions include JavaScript execution, screenshots, HTTP requests, conditional logic, loops, and anti-bot stealth features; extract data in JSON/CSV; manage state via variables.
Client Integration: Easily install via
npxor Docker, with detailed schema validation errors to help LLMs self-correct.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Figranium MCP ServerCreate a Figranium task to scrape Hacker News and execute it."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figranium MCP Server
A Model Context Protocol (MCP) server for Figranium, built with @modelcontextprotocol/sdk and the official @figranium/sdk API client. This server allows LLM clients (like Cline, Claude Desktop, Cursor, and Manus AI) to discover, execute, inspect, schedule, and programmatically create Figranium automation tasks via standard STDIO transport.
Table of Contents
Related MCP server: n8n-mcp-server
Quick Start (Docker / OCI)
No Node.js runtime or repository clone is required. The official container image is published on GitHub Container Registry (ghcr.io).
Zero-config npm usage is also supported:
npx -y figranium-mcpFor local development:
git clone https://github.com/figranium/figranium-mcp
dcd figranium-mcp
npm install
npm run builddocker pull ghcr.io/figranium/figranium-mcp:latestEnvironment Variables
The server requires the following environment variables to interact with your Figranium instance:
FIGRANIUM_BASE_URL: The base URL of your Figranium server. Defaults tohttp://localhost:11345.FIGRANIUM_API_KEY: The API key generated from Figranium settings to authorize requests. This variable is required for startup.
If FIGRANIUM_API_KEY is missing, the server prints a clear setup message and exits gracefully.
Client Integration
Cline
Add the following to your cline_mcp_settings.json:
macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.jsonWindows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonLinux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
{
"mcpServers": {
"figranium": {
"command": "npx",
"args": ["-y", "figranium-mcp"],
"env": {
"FIGRANIUM_BASE_URL": "http://localhost:11345",
"FIGRANIUM_API_KEY": "your_figranium_api_key_here"
}
}
}
}Alternatively, if running directly from a cloned source repository:
{
"mcpServers": {
"figranium": {
"command": "node",
"args": ["/path/to/figranium-mcp/dist/index.js"],
"env": {
"FIGRANIUM_BASE_URL": "http://localhost:11345",
"FIGRANIUM_API_KEY": "your_figranium_api_key_here"
}
}
}
}Automated Setup for Cline: Give Cline a link or reference to
llms-install.mdand Cline will perform the setup and configuration automatically.
Claude Desktop
Add the container configuration to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"figranium": {
"command": "npx",
"args": ["-y", "figranium-mcp"],
"env": {
"FIGRANIUM_BASE_URL": "http://localhost:11345",
"FIGRANIUM_API_KEY": "your_figranium_api_key_here"
}
}
}
}Note for Local Hosts: If your Figranium instance runs locally on your host machine, use
http://localhost:11345when running vianpx.
Cursor Integration
Add the following to ~/.cursor/mcp.json:
{
"mcpServers": {
"figranium": {
"command": "npx",
"args": ["-y", "figranium-mcp"],
"env": {
"FIGRANIUM_BASE_URL": "http://localhost:11345",
"FIGRANIUM_API_KEY": "YOUR_API_KEY"
}
}
}
}This lets Claude Desktop and Cursor launch the package directly without requiring a local build or a Docker bridge.
Automated AI Setup (llms-install.md)
AI assistants (including Cline, Cursor, Claude Desktop, and Roo Code) can automatically read llms-install.md to set up and configure the Figranium MCP server without manual intervention.
Server-Wide System Instructions
The server initializes with embedded guidelines for LLM agents detailing the task lifecycle:
Task Creation: Structuring name, starting URL, execution mode, and stealth mechanisms. Agents should default to
agentmode, including for scraping tasks.scrapemode does not support action blocks and is reserved for exceptional cases requiring extremely fast, action-free scraping;headfulis intended for visible interactive debugging.Step Sequence Construction: Ordering action steps (
navigate,wait_selector,click,type,javascript) and execution flow.Selector Strategy: Preferring robust ARIA, ID, and semantic class selectors with fallback strategies.
Execution & Variables: Injecting and overriding runtime context variables.
Available Resources
figranium://schemas/task-v1.json
MIME Type:
application/jsonDescription: Exposes the complete JSON Schema specification of a Figranium task. Allows agents to dynamically inspect valid parameters and payload shapes.
Available Tools
Task Operations
create_task: Create a complete, fully-configured Figranium automation task including sequential action steps, state variables, anti-bot stealth mechanisms, and optional scheduling.task_list: List all task IDs, names, and descriptions registered on the Figranium server.task_execute: Run a saved task bytaskIdwith optional variable overrides.
Execution Operations
execution_list: Retrieve a summary of past task execution logs and statuses.
Schedule Operations
schedule_list: List all tasks with configured schedules.schedule_get_all_status: Retrieve overall scheduler state and metadata.schedule_get_status: Get active schedule details and next run time for a specifictaskId.schedule_set: Create or update a cron or frequency schedule on a task.schedule_delete: Disable and remove a task schedule.schedule_describe: Validate and preview a schedule configuration without applying it.
Rich Input Diagnostics & Self-Correction
If an invalid parameter payload is supplied to create_task, the server returns structured Zod diagnostic output (isError: true). This allows connected LLMs to analyze schema errors and attempt immediate self-correction.
Example response:
Schema Validation Failed!
Detailed breakdown of validation errors:
- At Step Index 2 (action step #3), parameter "type" failed validation: Invalid enum value. Expected 'click' | 'type' | 'wait' ..., received 'clikc'Local Development & Source Build
If you wish to modify the source code or run without Docker:
Prerequisites
Node.js v18+
npm v9+
Build & Run
# Clone repository
git clone [https://github.com/figranium/figranium-mcp.git](https://github.com/figranium/figranium-mcp.git)
cd figranium-mcp
# Install dependencies and compile TypeScript
npm install
npm run build
# Watch mode for active development
npm run watchTesting with MCP Inspector
Inspect server tools and resources using the official MCP debugging suite:
npx @modelcontextprotocol/inspector npx -y figranium-mcpAvailable Tools
16 toolsbrowser_openA
Launch or reattach a managed headful/interactive browser session.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Initial URL to navigate to when the browser opens. | |
| mode | No | Informational mode of browser. Note: only headful is supported via the VNC stack. | headful |
| devTools | No | Open DevTools automatically. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full transparency burden. It does disclose an important behavior beyond launching: reattaching an existing managed session. However, it does not explain what 'managed' means in practice, how long sessions live, or what happens to a session when the tool returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler. It front-loads the primary action with launch and adds the important reattach behavior without expanding the description unnecessarily.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with a fully described schema, this is mostly adequate. The main gap is that with no output schema and no annotations, the description does not say what the caller receives after successfully launching or reattaching, nor how the session relates to the rest of the tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline applies. The description itself adds little parameter context, but the schema already explains url, mode, devTools, and the VNC limitation on headful mode, so this is acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs, 'Launch or reattach', and clearly identifies the resource: a managed headful/interactive browser session. This distinguishes it from the sibling task, schedule, and inspection tools by focusing on browser session lifecycle rather than task or schedule management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for starting or resuming an interactive headful browser session, but it does not explicitly state when to use this tool versus alternatives. Since the sibling list includes inspector-related tooling, some guidance on when browser session creation is required would clarify selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cabinetA
Create a new Cabinet (durable download queue) on the Figranium server.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Descriptive name for the new Cabinet. Expected type: string. Example: 'Invoices' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that a new Cabinet is created and defines Cabinet as a durable download queue, which adds some context. However, it does not disclose side effects, whether duplicate names are allowed, required permissions, or success/failure behavior—gaps that are notable for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler. The main action is front-loaded and the clarifying parenthetical follows immediately, giving the agent the core purpose without requiring any parsing effort.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with a single required parameter, no output schema, and no annotations. The description fully covers what is created and where. It could benefit from a note about what the response or success indicator looks like, but this is a minor gap for such a low-complexity create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter, including type and an example. The description adds general context about what a Cabinet is, but does not add parameter-specific meaning beyond the schema. Baseline 3 is appropriate since the schema already documents the parameter well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create') and resource ('Cabinet'), and clarifies the resource's nature with the parenthetical '(durable download queue)'. This cleanly distinguishes it from sibling tools like create_task, which creates a different resource, and list_cabinets, which reads rather than writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to create a new Cabinet on the server, but it does not explicitly state when to prefer this tool over alternatives such as create_task or list_cabinets. There is no exclusion guidance or prerequisite information; usage context is inferred from the verb and resource rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
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 !!!
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.MANDATORY AUTOMATIC TESTING: Unless the user explicitly prompts you NOT to test, you MUST immediately test and verify your newly created or updated tasks by calling the
task_executetool right after callingcreate_taskortask_update. Automatic testing is mandatory to ensure correctness.MODE SELECTION: Use
agentmode by default, including for scraping tasks.scrapemode does not support action blocks and should be used only when extremely fast, action-free scraping is required. Useheadfulfor visible interactive debugging.
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 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.
'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:
Unique IDs (e.g., '#submit-button')
ARIA roles and labels (e.g., '[aria-label="Search"]')
Reliable CSS classes or data attributes (e.g., '.btn-primary', '[data-testid="login"]')
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Initial URL to navigate to when the task starts. Expected type: string. Example: 'https://news.ycombinator.com' | |
| mode | Yes | 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' | |
| name | Yes | Descriptive name of the automation task. Expected type: string. Example: 'HackerNews Scraper' | |
| wait | No | Standard delay in seconds to wait after navigation and page loads to let dynamic scripts complete. Expected type: number. Example: 5 | |
| actions | No | 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. | |
| stealth | No | Configures realistic stealth, anti-bot, and human behavior simulation on the browser instance. | |
| schedule | No | Task automatic execution schedule. Expected type: object. | |
| selector | No | Default CSS selector to wait for on the page load before starting actions. Expected type: string. Example: '.main-content' | |
| cabinetId | No | Cabinet used for intercepted downloads and 'upload' actions that omit their own cabinetId; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic' | |
| variables | No | Task variables to store state and dynamic values. Expected type: record object of variable configurations. | |
| description | No | Detailed description of what the task automates. Expected type: string. Example: 'Logs in and extracts weekly leads' | |
| humanTyping | No | Vary typing speeds and insert tiny delays to simulate organic human typing. Expected type: boolean. Example: true | |
| includeHtml | No | Whether to include the raw page HTML in the execution response. Expected type: boolean. Example: false | |
| rotateProxies | No | Rotate through configured proxy IPs to prevent IP-based rate limiting. Expected type: boolean. Example: false | |
| rotateViewport | No | Vary viewport resolutions randomly to simulate multiple desktop and mobile devices. Expected type: boolean. Example: true | |
| disableRecording | No | Disable video/VNC recording of this task to save storage. Expected type: boolean. Example: true | |
| extractionFormat | No | Target export format of any extracted data. Expected type: string enum. Example: 'json' | json |
| extractionScript | No | Optional post-execution script to extract data. Expected type: string. Example: 'return Array.from(document.querySelectorAll("a")).map(el => el.href)' | |
| includeShadowDom | No | Whether to parse and resolve target elements residing in Shadow DOMs. Expected type: boolean. Example: true | |
| rotateUserAgents | No | Rotate user agents across requests to avoid pattern blocking and fingerprinting. Expected type: boolean. Example: true | |
| statelessExecution | No | If set to true, clear browser cookies and session states between runs. Expected type: boolean. Example: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that tasks are stored permanently, execute as a linear action sequence, support control flow, and can be scheduled or triggered via API. It also documents important behavioral quirks like mandatory automatic testing and unsupported variable template syntax. It doesn't mention auth requirements or rate limits, but the disclosed behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but it is well-structured with clear headings, numbered sections, and a comprehensive example. It front-loads the most critical LLM guidelines about variable syntax and mandatory testing. Some repetition exists with the schema descriptions, but given the tool's complexity, the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 21 parameters, nested objects, and no output schema, the description provides everything needed to construct a correct task: purpose, execution model, exhaustive step types, selector strategy, error handling, retry logic, and a full multi-step JSON example. It is exceptionally complete for an agent-facing tool definition.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description goes well beyond the schema by explaining what each action type does, how variables must be templated, selector fallback strategies, and edge-case behaviors like stealth and stateless execution. The detailed JSON example ties parameters together into a valid, realistic configuration, which significantly helps an agent use the 21 parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool's purpose: 'Create a complete, fully-configured Figranium automation task' and enumerates core components like action steps, variables, stealth mechanisms, and scheduling. This clearly distinguishes it from sibling tools such as task_update, task_execute, and task_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Section 1 explicitly says 'Use this tool when you need to automate recurring or complex web-based workflows,' and the LLM guidelines mandate calling task_execute immediately after create_task. Mode selection guidance is also explicit. However, it doesn't explicitly contrast create_task with task_update for editing existing tasks, so the sibling differentiation is slightly incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execution_listA
List a summary of all past execution records.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It indicates a read-only listing operation via the verb 'List' and discloses that the output is a summary of past records, which is useful context. However, it does not mention pagination, ordering, or other potential behaviors, so it is not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of eight words, front-loaded with the verb. It is exceptionally concise with no filler, and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and no output schema, so the description is the sole source of information. It clearly states what it does but is vague about the contents of the summary, ordering, or limits. For a simple list tool, this is minimally adequate but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has zero parameters and 100% schema coverage, so the description does not need to explain parameter meanings. The word 'summary' hints at the output, but with no parameters to clarify, the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a summary of all past execution records, using a specific verb ('List') and resource ('execution records'). It distinguishes from sibling tools like task_list and schedule_list, which handle different entity types. This is a non-tautological and unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for viewing execution history but provides no explicit guidance on when to use this versus alternatives. It does not mention exclusions or alternative tools, though the sibling context suggests differentiation by entity. The usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspector_highlightA
Activate inspect/highlight mode on an active browser session with optional selector hints.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional URL to navigate to. | |
| sessionId | No | The ID of the browser session to target. | |
| targetHint | No | Optional text or hint to find and highlight target elements. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose side effects, but it only gives the most basic action and a precondition. It does not mention whether providing a URL triggers navigation, whether the highlight mode changes the session UI, when the mode ends, or what error occurs if no active session exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clean sentence that leads with the primary action and adds the optional-hint qualifier at the end. It is concise and contains no redundant or off-topic details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and three optional parameters, the description is too sparse to fully model invocation. It leaves unclear whether URL and targetHint combined cause navigation, how highlight mode is exited, and what the tool returns or changes in session state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all three parameters with meaningful descriptions, so the 100% coverage baseline applies. The description's only added phrase, 'optional selector hints,' echoes the targetHint parameter without providing any new style, proof, or interaction guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Activate') and resource ('inspect/highlight mode on an active browser session'), immediately making the tool's purpose clear. It distinguishes itself from siblings like browser_open and task_execute by naming the exact mode it activates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'on an active browser session' clearly signals that a browser session must already exist, and thereby implies it should be used after browser_open rather than before it. It does not explicitly state when not to use it, but no direct alternative sibling performs a similar highlighting function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cabinetsA
List all Cabinets (durable download queues) configured on the Figranium server, including their IDs, names, and item counts. Use this to find a cabinetId to reference in a task's 'cabinetId' field or an 'upload' action.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List all' clearly implies a read-only operation, and it explicitly states the output fields. It adds useful domain context by defining Cabinets as durable download queues, though it doesn't cover pagination or potential limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose and followed by actionable usage guidance. Every sentence earns its place without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description sufficiently covers the return values (IDs, names, item counts) and a common use case. Minor omissions like error behavior or response envelope are not critical for this straightforward listing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so all schema descriptions are trivially present. The description still adds value by explaining how the returned cabinetId is used in other contexts, which helps an agent understand the purpose of the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List'), identifies the resource ('Cabinets'), scopes it ('on the Figranium server'), and enumerates the returned fields (IDs, names, item counts). It clearly distinguishes itself from the sibling create_cabinet and other task-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete use case: use it to obtain a cabinetId for a task's 'cabinetId' field or an 'upload' action. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough to guide invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_deleteA
Disable and remove the schedule configuration from a specific task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task whose schedule to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the primary effect (disable and remove the schedule) but does not disclose side effects, reversibility, or behavior when the schedule does not exist. It is not misleading, just minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that leads with the action and resource. No superfluous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter delete tool with no output schema, the description is mostly sufficient. It clearly states what happens and identifies the required input. However, it could briefly mention what happens to existing scheduled executions or how to confirm deletion, but given the simplicity, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no additional meaning beyond the schema's description of taskId. The single parameter is already well-documented, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Disable and remove'), the resource ('schedule configuration'), and the scope ('from a specific task'). It distinguishes itself from siblings like schedule_set (which creates/updates) and schedule_list (which reads).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used to delete a schedule for a task, but it does not explicitly describe when to use it versus alternatives or any prerequisites such as whether the task must exist. No exclusions or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_describeA
Validate and preview/describe a schedule configuration without saving it.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task. | |
| frequency | No | The frequency mode. Used if scheduleMode is 'frequency'. | |
| dayOfMonth | No | Day of the month (1-31) if frequency is 'monthly'. | |
| daysOfWeek | No | Array of days of the week if frequency is 'weekly'. | |
| scheduleHour | No | Hour of execution (0-23) if frequency is 'daily', 'weekly', or 'monthly'. | |
| scheduleMode | Yes | Whether to define the schedule using 'cron' or structured 'frequency' fields. | |
| cronExpression | No | Standard 5-field cron expression. Used if scheduleMode is 'cron'. | |
| scheduleMinute | No | Minute of execution (0-59) if frequency is 'daily', 'weekly', or 'monthly'. | |
| intervalMinutes | No | Interval in minutes if frequency is 'interval'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It clearly indicates the non-mutating nature of the operation ('without saving it'), which is the key safety trait. It mentions validation and preview, but lacks details on error responses or the exact return format, which would enhance transparency further.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of about 12 words. It gets straight to the point with 'Validate and preview/describe' and adds the key qualifier 'without saving it' without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters), lack of annotations, and absence of an output schema, the description is somewhat minimal. It conveys the core purpose but does not explain what a validation failure or successful preview returns, nor does it mention how the schedule modes (cron vs frequency) are handled. The schema provides parameter-level detail, so the description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not elaborate on individual parameters or their interdependencies, but it contextualizes them as part of a schedule configuration. The schema already provides sufficient explanations for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with specific verbs 'Validate and preview/describe' and identifies the resource as 'a schedule configuration'. The phrase 'without saving it' distinguishes it from sibling tools like schedule_set, which presumably persist the schedule.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: to validate or preview a schedule before persisting it. The explicit exclusion 'without saving it' signals that this is not for committing changes, but it does not name alternative tools like schedule_set, leaving the comparative guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_get_all_statusA
Get overall scheduler status and metadata for all schedules.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, the description does not explicitly state that no state changes occur, what metadata is included, or any operational limitations. This is a minimal disclosure for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that states the action and target. It is front-loaded and contains no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no parameters, a one-line description is mostly adequate. However, without an output schema or annotations, the description could benefit from mentioning that it returns a summary of all schedules' status and metadata, and explicitly noting that it is a safe read operation. Minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is trivially complete. The description does not need to explain any parameters; baseline 4 applies due to no parameter complexity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'overall scheduler status and metadata for all schedules'. It distinguishes from siblings like schedule_get_status by emphasizing 'overall' and 'all schedules', making its scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus schedule_get_status or schedule_list. The description implies it is for broad status viewing, but it does not explicitly state exclusions, alternatives, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_get_statusA
Get the detailed schedule status, cron configuration, and next run time for a specific task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task to check. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool gets status, cron config, and next run time, implying read-only behavior via the verb 'Get'. However, it does not mention error handling, required permissions, or response structure beyond the listed items.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that efficiently conveys the tool's purpose with no unnecessary words or repetition. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description adequately lists the returned information (status, cron config, next run time). It lacks explicit mention of error cases or usage scenarios, but these are less critical for a read-only status checker.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for taskId ('The unique ID of the task to check'). The description adds no additional parameter detail beyond confirming the scope, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get') and resource ('detailed schedule status, cron configuration, and next run time') for a specific task. It distinguishes from the sibling tool schedule_get_all_status by focusing on a single task via taskId.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking a specific task's schedule status, which clearly separates it from schedule_get_all_status that presumably returns all statuses. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_listA
List all tasks that have schedules configured (enabled or not).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses an important behavioral trait: the list includes both enabled and disabled schedules. However, it doesn't mention other behavioral aspects like return format, authentication requirements, or whether disabled schedules are included by default or require filtering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence that front-loads the action ('List') and specifies the target ('tasks that have schedules configured'). No wasted words, and the parenthetical '(enabled or not)' adds precision without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is mostly sufficient. It clearly states what is returned (a list of tasks with schedules) and qualifies the scope. A minor gap is not specifying the output structure (e.g., task IDs vs. full details), but this is not critical for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides no parameter descriptions. The baseline for such cases is 4. The description doesn't need to add parameter semantics since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly identifies the resource: 'tasks that have schedules configured'. It further clarifies scope by adding '(enabled or not)', distinguishing it from sibling tools like task_list (which likely lists all tasks) and schedule_get_all_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you want to see which tasks have schedules, regardless of enabled state. It does not explicitly mention alternatives or exclusions, but the context is clear from the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
schedule_setB
Create or update a schedule for a specific task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task to configure. | |
| enabled | Yes | Whether the schedule is active. | |
| frequency | No | The frequency mode. Used if scheduleMode is 'frequency'. | |
| dayOfMonth | No | Day of the month (1-31) if frequency is 'monthly'. | |
| daysOfWeek | No | Array of days of the week if frequency is 'weekly'. | |
| scheduleHour | No | Hour of execution (0-23) if frequency is 'daily', 'weekly', or 'monthly'. | |
| scheduleMode | Yes | Whether to define the schedule using 'cron' or structured 'frequency' fields. | |
| cronExpression | No | Standard 5-field cron expression. Used if scheduleMode is 'cron'. | |
| scheduleMinute | No | Minute of execution (0-59) if frequency is 'daily', 'weekly', or 'monthly'. | |
| intervalMinutes | No | Interval in minutes if frequency is 'interval'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'create or update'—a mutation—but does not explain whether it is an upsert, how it decides between create and update, what happens if the task does not exist, or whether it replaces the entire schedule. No return value, error, or permission details are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the core action efficiently. However, given the tool's complexity (10 parameters, two modes), slightly more detail could be warranted without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex: 10 parameters, two mutually exclusive scheduling modes (cron vs frequency), and no output schema or annotations. The one-sentence description does not explain the conditional logic between cron and frequency, the effect of an update, or any return/error behavior. It is insufficient for an agent to use the tool confidently without thoroughly inspecting the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific meaning beyond the schema, but the schema itself is self-explanatory, including conditional fields and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create or update) and the resource (a schedule for a specific task). It effectively distinguishes this from sibling tools like schedule_list, schedule_delete, and schedule_describe, which are read/delete operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating or updating schedules but offers no explicit guidance on when to prefer this over alternatives or any exclusions. The sibling context suggests it is the only write tool for schedules, but the description itself does not state this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_deleteA
Permanently delete a Figranium task by taskId.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'Permanently' is a meaningful behavioral disclosure indicating irreversibility, which is important for a delete operation. However, with no annotations at all, the description does not cover other relevant behavioral aspects such as permissions, cascading effects, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence. It front-loads the destructive nature ('Permanently') and the required identifier, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter delete tool, the description covers the essential action and input. It does not delve into edge cases like deleting non-existent tasks or authorization, but the low complexity makes the description largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter taskId is already fully documented in the schema with a description and 100% coverage. The tool description adds no extra parameter-level meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('delete'), a clear resource ('Figranium task'), and the identifier used. It unambiguously differentiates this tool from siblings like create_task, task_update, task_list, and task_execute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives, no prerequisites, and no indication of when deletion might be inappropriate. The description simply states the action without clarifying context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_executeA
Execute/run a saved automation task by ID and return its result.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The unique ID of the task to execute. | |
| variables | No | Key-value pairs representing the execution variables (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'execute/run' and 'return its result', but does not clarify whether execution is synchronous, can be tracked via execution_list, what side effects occur, or how errors are surfaced. This is minimal disclosure for a mutation-like operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the action, object, and outcome with zero wasted words. It earns its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple parameter set and no output schema, so the description must clarify what the tool returns and how execution behaves. It mentions 'return its result' but omits details like whether the result is a direct value or a reference (e.g., execution ID). Given the presence of execution_list, this ambiguity is significant. A more complete description would state return behavior and any asynchronous aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with meaningful descriptions (taskId is the unique ID, variables are optional key-value pairs). The description adds no extra semantics beyond 'by ID', so the baseline of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Execute/run' and clearly identifies the resource 'saved automation task' and the key constraint 'by ID'. It also states the outcome 'return its result'. This fully distinguishes it from siblings like create_task and task_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool when you have a task ID and need to execute it. It does not explicitly name alternatives or exclusions, but the sibling list and 'saved task' imply an execution-specific role, making the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_listA
List all task IDs, names, and descriptions from Figranium.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior. The verb 'List' implies a read-only, non-mutating operation, but it doesn't explicitly warn about potential large results, pagination, or performance. It's adequate but sparse.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence with no filler. It directly states the action and output, making it extremely concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with simple output, the description provides the essential information: what is listed and from where. It doesn't explain return format or edge cases, but the simplicity of the tool makes this sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema coverage is trivially 100%. The description doesn't need to elaborate on parameters, earning the baseline score for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' and clearly identifies the resource: task IDs, names, and descriptions from Figranium. It effectively distinguishes this tool from siblings like create_task and task_execute, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when a list of tasks is needed. While it doesn't explicitly exclude alternatives like execution_list or schedule_list, the unique phrasing 'task IDs, names, and descriptions' makes the context unmistakable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_updateB
Update fields of an existing task on the Figranium server.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Initial URL to navigate to when the task starts. Expected type: string. Example: 'https://news.ycombinator.com' | |
| mode | No | 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' | |
| name | No | Descriptive name of the automation task. Expected type: string. Example: 'HackerNews Scraper' | |
| wait | No | Standard delay in seconds to wait after navigation and page loads to let dynamic scripts complete. Expected type: number. Example: 5 | |
| taskId | Yes | The unique ID of the task to update. | |
| actions | No | 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. | |
| stealth | No | Configures realistic stealth, anti-bot, and human behavior simulation on the browser instance. | |
| schedule | No | Task automatic execution schedule. Expected type: object. | |
| selector | No | Default CSS selector to wait for on the page load before starting actions. Expected type: string. Example: '.main-content' | |
| cabinetId | No | Cabinet used for intercepted downloads and 'upload' actions that omit their own cabinetId; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic' | |
| variables | No | Task variables to store state and dynamic values. Expected type: record object of variable configurations. | |
| description | No | Detailed description of what the task automates. Expected type: string. Example: 'Logs in and extracts weekly leads' | |
| humanTyping | No | Vary typing speeds and insert tiny delays to simulate organic human typing. Expected type: boolean. Example: true | |
| includeHtml | No | Whether to include the raw page HTML in the execution response. Expected type: boolean. Example: false | |
| rotateProxies | No | Rotate through configured proxy IPs to prevent IP-based rate limiting. Expected type: boolean. Example: false | |
| rotateViewport | No | Vary viewport resolutions randomly to simulate multiple desktop and mobile devices. Expected type: boolean. Example: true | |
| disableRecording | No | Disable video/VNC recording of this task to save storage. Expected type: boolean. Example: true | |
| extractionFormat | No | Target export format of any extracted data. Expected type: string enum. Example: 'json' | json |
| extractionScript | No | Optional post-execution script to extract data. Expected type: string. Example: 'return Array.from(document.querySelectorAll("a")).map(el => el.href)' | |
| includeShadowDom | No | Whether to parse and resolve target elements residing in Shadow DOMs. Expected type: boolean. Example: true | |
| rotateUserAgents | No | Rotate user agents across requests to avoid pattern blocking and fingerprinting. Expected type: boolean. Example: true | |
| statelessExecution | No | If set to true, clear browser cookies and session states between runs. Expected type: boolean. Example: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the burden falls on the description, but it only says 'update fields' and reveals nothing about partial vs. full replacement, side effects, permissions, or required post-steps. The schema later adds a 'must test with task_execute' note, but the tool description itself leaves the behavioral profile nearly empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler; 'Update fields of an existing task' tells the core operation immediately. Every word contributes and nothing needs to be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is exhaustive and covers parameter semantics, but without an output schema or annotations the short description still leaves unclear behavior such as return value and whether this is a merge or full overwrite. It is adequate because the schema supplies most operational detail, but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter is explained with types, defaults, and examples, so the tool description correctly relies on the schema. The description adds no parameter-level meaning, which is acceptable under the high-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Update') with a clear resource ('fields of an existing task') and target system ('Figranium server'), so an agent can immediately tell this is a modification tool. The word 'existing' also implies it is not create_task, though it doesn't explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No practical guidance is given for when to choose this tool over create_task, task_delete, or task_execute. The phrase 'existing task' hints at one condition, but there are no prerequisites, exclusions, or explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.2.1- Added
create_cabinet - Changed
create_task8 fields changed- changed
Input schema / properties / actions / descriptionPrevious 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." - added
Input schema / properties / actions / items / properties / cabinetIdAdded value: +{ + "description": "Source Cabinet ID for an 'upload' action; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'", + "type": "string" +} - added
Input schema / properties / actions / items / properties / captchaTypeAdded 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" +} - added
Input schema / properties / actions / items / properties / markAsUploadedAdded 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" +} - added
Input schema / properties / actions / items / properties / timeoutAdded 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" +} - changed
Input schema / properties / actions / items / properties / type / enumPrevious 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" +] - added
Input schema / properties / cabinetIdAdded 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" +} - changed
Input schema / properties / mode / descriptionPrevious 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'"
- Added
list_cabinets - Changed
task_update8 fields changed- changed
Input schema / properties / actions / descriptionPrevious 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." - added
Input schema / properties / actions / items / properties / cabinetIdAdded value: +{ + "description": "Source Cabinet ID for an 'upload' action; omitted uses the default Cabinet. Expected type: string. Example: 'cab_basic'", + "type": "string" +} - added
Input schema / properties / actions / items / properties / captchaTypeAdded 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" +} - added
Input schema / properties / actions / items / properties / markAsUploadedAdded 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" +} - added
Input schema / properties / actions / items / properties / timeoutAdded 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" +} - changed
Input schema / properties / actions / items / properties / type / enumPrevious 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" +] - added
Input schema / properties / cabinetIdAdded 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" +} - changed
Input schema / properties / mode / descriptionPrevious 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 tool updates
v1.1.1- Added
browser_open - Changed
create_task5 fields changed- changed
Input schema / properties / actions / descriptionPrevious 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." - changed
Input schema / properties / actions / items / descriptionPrevious 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." - changed
Input schema / properties / actions / items / properties / body / descriptionPrevious 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}\"}'" - changed
Input schema / properties / actions / items / properties / headers / descriptionPrevious 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}\"}'" - changed
Input schema / properties / actions / items / properties / value / descriptionPrevious 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'"
- Added
inspector_highlight - Added
task_delete - Added
task_update
10 tool updates
v1.0.0- First observed
create_task - First observed
execution_list - First observed
schedule_delete - First observed
schedule_describe - First observed
schedule_get_all_status - First observed
schedule_get_status - First observed
schedule_list - First observed
schedule_set - First observed
task_execute - First observed
task_list
TDQS
Each tool targets a distinct resource/action pairing across tasks, cabinets, schedules, executions, and browser sessions. The only mild ambiguity is between schedule_list and schedule_get_all_status, but their descriptions keep them separable.
The dominant pattern is noun_verb (task_list, schedule_set, execution_list), but create_task, list_cabinets, create_cabinet, and browser_open invert the order. The mixed convention is readable but noticeably inconsistent across primary operations.
16 tools is slightly heavy but reasonable given the server covers task automation, schedules, cabinets, browser sessions, and execution history. Schedule management alone contributes six tools, making the set feel a bit dense, but no tool is truly redundant.
Task creation, update, listing, deletion, and execution are covered, but there is no get_task/detail endpoint for inspecting a saved task's full configuration. Browser management has open but no close, and cabinets only support list/create, leaving noticeable lifecycle gaps.
Maintenance
Related MCP Connectors
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Discover, preview, estimate, run, and retrieve reusable AI workflows.
Turn any task into the right API calls: discover, evaluate, and integrate public APIs.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Automatisch workflow automation platform, allowing them to create, manage, and monitor workflows, connections, and executions through natural language commands.10137MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to programmatically control n8n via natural language for automated workflow creation, modification, and execution management.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and manage Flowcore resources through a structured API.2399-
- FlicenseAqualityDmaintenanceLets AI agents schedule and manage HTTP jobs, cron schedules, rate-limited buffers, and alert channels via natural language, backed by Fliq's Postgres-native job scheduler.21-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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