h@llo.ai Available Tools
By default the AI Assistants do not have access to any of BTT's tools. You need to enable access for each (or all) tools you want to allow in the configuration of the predefined action "h@llo.ai - Show Customizable AI Assistant". There go to the AI Configuration => Tools & Context section and scroll down.

Table of Contents
- h@llo.ai Available Tools
- Table of Contents
- UI Automation: End‑to‑End Flow
- Mouse, Keyboard \& Text
- Computer Control (Full Desktop Agents)
- Browser \& Web
- Screen, Windows \& OCR
- Files \& Projects
- Versioning \& History
- Diagnostics for Code
- Variables, Clipboard, Haptics, Wait
- Calendars \& Reminders
- Menubar \& Triggers
- Scripting
- BetterTouchTool Knowledge Search
- Global JavaScript Utilities
UI Automation: End‑to‑End Flow
Use these to find UI elements in running apps and interact with them reliably.
1) Discover running apps
get_running_apps_for_ui → List apps with process_identifier, bundleId, name, etc.
Use the process_identifier in the next steps.
2) Inspect UI hierarchy
get_app_ui_structure → Returns the UI tree for a given process.
Includes an interactive_summary of clickable and text-input elements.
Options: max_depth (default 4, up to 20).
3) Search elements
find_ui_elements → Search by role/title/value/description across attributes.
- Supports
use_regex - Returns elements with
pathlike0,2,1and matched criteria.
Tip: Use thispathfor clicks or typing.
4A) Click an element
click_ui_element → Click by path and process_identifier.
Returns {success, path, click_method, element_info}.
4B) Type into an element
type_in_ui_element → Type text into fields/search boxes by path.
Returns {success, path, text, element_info, value_verified}.
4C) Diagnose when things fail
diagnose_accessibility_element → Get details, state, available actions, and recommendations for a path.
Great for flaky or non-standard controls.
Mouse, Keyboard & Text
Pointer & clicks
- move_mouse → Move (and optionally drag) the mouse to (
x,y). SupportsanchorPoint(screen origin),duration,drag. - click → Click at current or specific coordinates; supports
type(left|right|middle|double),count, modifiers (mods), and optional move & click in one call. - save_mouse_pos / restore_mouse_pos → Store/recall a named cursor position.
Keyboard & text
- type_or_paste_text → Type or paste text; optionally provide
format(RTF/HTML/PDF/PNG/URL) or settype: trueto simulate typing. - send_shortcut → Send keys/shortcuts to an app (or the focused app): specify
keyandmods(e.g.,cmd+shift). - get_selected_text → Read the current selection. (Use mainly to refresh the selection after other tools.)
- transform_selected_text → Run your JS transformer on the current selection and return the result.
- replace_selected_text → Replace the current selection with your provided text.
Heads-up display
- show_hud → Show a temporary HUD message (supports SF Symbols via
iconand aduration).
Haptics & clipboard
- haptic_feedback → Trigger light/medium/heavy haptics.
- set_clipboard_content → Set clipboard text (optionally with a specific pasteboard format).
Wait helper
- wait_for_x_seconds → Pause execution for a number of seconds (use this instead of
setTimeout).
Computer Control (Full Desktop Agents)
Two agent-style tools that can move the mouse, click, type, scroll, drag, press keys, wait, and take screenshots.
- computer_20250124 → Actions like
screenshot,left_click,drag,scroll {direction, amount},key,type {text},wait {seconds}with coordinates where needed. - computer_use_preview → Similar capabilities with explicit
environment(mac,windows,ubuntu,browser) and optionaldisplay_width/heightfor context.
Use these when you need holistic, step-by-step desktop control.
Browser & Web
- safari_automation → Execute JavaScript in Safari’s active window. Modes:
active(fast, active window) orwebdriver(faster when possible, falls back). Supports batching viabatcharray. - get_browser_html → Grab HTML/text/metadata from Safari, Chrome, Edge, Arc, Brave, Firefox, Opera, Vivaldi, etc. Target the
activetab,alltabs, or a specific tab id. OptionalcleanHTMLandextractText. - web_search → DuckDuckGo-based web search. Returns top results with titles, snippets, and URLs.
- web_fetch → Fetch a URL and return
text,markdown,html, orjson. Handles redirects and timeouts.
Screen, Windows & OCR
- get_screens → Info on all connected screens.
- screenshot → Capture the whole space, a screen, or a specific window. Use
targetto pick scope;window_idwhen targeting a single window. - get_windows_sorted_front_to_back → List visible windows in z-order (front to back). Each includes app, pid, bounds, id, title.
- activate_window → Bring a window to the front by
id. - set_window_frame → Move/resize a window: provide
idandframe - screenshot_window → Screenshot a single window by
id. - ocr_window → OCR text from a window (no need to screenshot first). Returns text with global bounds.
Files & Projects
Create, read, write
- file_create → Create a new file (fails if it exists).
- file_read → Read text files with line numbers (up to ~250KB).
- file_write → Overwrite a file with new content (read first to avoid data loss).
- file_write_enhanced → Safer write: backups, permission checks, encoding handling, atomic writes, auto-create directories.
Edit & patch
- file_edit → Simple find/replace (optionally replace all).
- file_edit_smart → Context-aware edits using surrounding lines to uniquely match; preview & rollback supported.
- file_edit_multi → Multiple edits applied in one atomic operation; optional conflict validation.
- file_patch → Apply unified diff patches (multi-file supported). Preview via dry-run; reverse or strict modes available.
Find files & content
- file_list → Show files/folders as a flat list or tree (includes hidden files and sizes).
- file_glob → Glob-based matching (e.g.,
**/*.swift,src/**/*.js). Results sorted newest first. - file_search → Powerful file search by name/type/size/date; supports regex and depth limits.
- file_grep → Regex search inside files with optional context and line numbers.
- file_find_content → Simple text search across files; returns file path, line number, and matching line.
Versioning & History
- file_diff → Compare file versions (current vs previous or any two versions). Unified or split diff; ignore whitespace; control context lines; show line numbers.
- file_undo → Undo by transaction ID or by the last N operations; restore specific versions; view history.
- file_redo → Redo an undone change (limited). For anything else, use file_undo with
restore.
Diagnostics for Code
- lsp_diagnostics → Run language server checks (TS/JS/Swift/Python/Go/Rust) to surface errors/warnings.
- read_file_with_lsp_diagnostics → Read a file with inline comments showing diagnostics next to the lines.
- explore_with_diagnostics → Scan a folder and list files with error/warning counts (optionally recursive or filtered by file types).
Variables, Clipboard, Haptics, Wait
- get_variable_value / set_variable_value → Read/write persistent BetterTouchTool variables (store text, numbers, or JSON). Use in triggers, conditions, and scripts.
- set_clipboard_content → Put text on the clipboard (optionally with format type).
- haptic_feedback → Light/medium/heavy feedback for quick confirmations.
- wait_for_x_seconds → Pause tool execution for timing/sequencing.
Calendars & Reminders
manage_calendar_and_reminders
- get_events: Pull events/reminders in a date range.
- create_event / create_reminder: Add items (supports title, times, all-day, location, notes).
- list_calendars / list_reminder_lists: Discover available calendars/lists.
Returns structured JSON with titles, dates, times, location, notes, calendar name, and identifiers. Reminders includedueDate,completed, andpriority.
Menubar & Triggers
- retrieve_app_menubar_items → Query an app’s menubar (enabled/checked state). Provide a path (or empty for root) to get that level’s items.
- find_menubar_item → Search a menubar item by name (supports regex). Returns the full path string.
- trigger_menubar_item → Trigger a menubar item using the full path and
pid(or focused app). - trigger_named_trigger → Fire a BetterTouchTool Named Trigger by name.
- import_trigger_json → Import a trigger from its JSON (into a specific app or globally).
- add_action_to_trigger → Import an action JSON and attach it to an existing trigger by UUID.
- get_trigger_json → Retrieve the JSON representation for a trigger by UUID.
Scripting
- run_shell_script → Run any shell command or script. Use
directory,environmentVariables, andbackgroundas needed. For long-running servers, useautoReturnTimeoutto return after inactivity. - run_apple_script → Run AppleScript code (with optional function/arguments). Perfect for deep macOS automation.
BetterTouchTool Knowledge Search
- search_bettertouchtool_documentation → Ask anything about BTT; returns the most relevant docs from a vector search.
- search_bettertouchtool_trigger_and_action_definitions → Find trigger/action definitions when creating automations.
- retrieve_floating_menu_definition → Retrieve JSON definitions for Floating Menus (optionally filter results).
Global JavaScript Utilities
These are available globally in your JS execution context (not via tool calls):
Internet access
fetch(standard modern fetch)fetchURLAsBase64(url, readAsBase64)→ Synchronous fetch helper returning base64 if desired.
File access
readFile(path, readAsBase64)→ Synchronous read.writeStringToFile(dataString, path, stringIsBase64)→ Synchronous write (supports base64 input).
Tip: For reliable UI automation, follow the flow:get_running_apps_for_ui → get_app_ui_structure → find_ui_elements → (click_ui_element | type_in_ui_element) → diagnose_accessibility_element (if needed)