Form Interaction Tool
The Form Interaction Tool navigates to a web page containing a form, discovers its fields and clickable buttons using backend browser automation (Playwright), and can fill in and submit it.
It's built for agentic form-filling workflows — job applications, sign-ups, contact forms — where the LLM first calls the tool to discover what's on the page, then calls it again with the actions to fill and submit.
The tool keeps the same browser session open across calls for the same url, so multi-page/multi-step forms can be filled one page at a time without losing progress between calls.
This tool drives a real browser and submits real forms on real sites. You are responsible for how you use it: respect each site's Terms of Service and rate limits, don't use it to spam applications or form submissions, and don't automate around CAPTCHAs or other anti-bot measures. For job applications, apply where you're a genuine fit — mass auto-submitting wastes everyone's time, including yours.
- Inputs
- Outputs
- Node Type
url¹ (string): URL of the web page containing the form to interact with.actions(array, optional): List of fill actions to perform. Omit or pass an empty array to only read the form's fields and buttons. Each action:selector(string): CSS selector of the target element.type(string):fill|select|check|uncheck|click|upload.value(string, optional): Text to type (fill), option label/value to choose (select); ignored forcheck/uncheck/click.fileKey(string, optional): Original filename of a binary file attached in the Data Source Node (e.g."my-cv.pdf"). Required whentypeisupload.
submitSelector(string, optional): CSS selector of the submit/"Next" button to click after filling. Use theselectorvalue from a prior call'sactionButtons— never a guessed selector such as#submitBtn. Omit to only fill without advancing.typingDelay(number, user config): Seconds between each field action (0= instant fill, no pauses;1= default human-like pace; default:1)interactionTimeoutSeconds(number, user config): Max seconds for one tool call — raise if a high typing delay combined with long text fields pushes past the default (default:300, min:30, max:1800)requireToolUse(boolean, user config): Require tool use (forces the LLM to always call this tool; default: true)Note: When enabled, the node will retry tool calls up to the number of times set in Max Tool Retries in the AI Data Processing Node.
(1) Provided by the AI Data Processing Node as a result of processing it's input.
success: Whether the call completed without errorcurrentUrl: The page's URL after this callpageTitle: The page's<title>submitted: WhethersubmitSelectorwas clicked during this callformFields: Visible, interactive fields on the current page —label,name,type,selector,required,options(for select dropdowns),currentValue,placeholderactionButtons: Visible, enabled clickable buttons on the current page —label,selector. Use one of these selectors forsubmitSelectoron the next call.error: Present when the call failed (e.g. required fields still empty, orsubmitSelectordidn't match anything) — includes guidance for correcting the next call.
Example Output:
{
"success": true,
"currentUrl": "http://localhost:3001/cv-application",
"pageTitle": "Job Application — Agentic Signal Test Form",
"submitted": false,
"formFields": [
{
"label": "First Name *",
"name": "firstName",
"type": "text",
"selector": "#firstName",
"required": true,
"currentValue": null,
"placeholder": "Jane"
},
{
"label": "Country",
"name": "country",
"type": "select-one",
"selector": "#country",
"required": false,
"options": ["United States", "United Kingdom", "Germany"],
"currentValue": null
}
],
"actionButtons": [
{"label": "Submit Application", "selector": "#submitBtn"}
],
"error": null
}
ai-tooltoolSubtype:form-interaction