Tool catalog
The capabilities agents can be wired to. Tools are backed by code and ship with AgentsHQ — library skills reference them by slug.
fetch-file
apiDownload a file (binary-safe) from a URL into your data directory so you can then parse or read it. Per-host auth from the org Integration is applied automatically. Use before parse-document to process a remote PDF/invoice/resume/export.
http-get
apiMake an HTTP GET request to a URL
http-post
apiMake an HTTP POST request with a JSON body
http-request
apiMake an HTTP request with ANY method (GET, POST, PUT, PATCH, DELETE) plus optional JSON body and headers. Use this over http-get/http-post when a SaaS API needs PUT/PATCH/DELETE to update or remove records — it enables true two-way sync. Per-host auth is injected automatically from the org's Integration; never put credentials in the body or headers.
send-email
apiSend an email via the configured email integration
parse-document
shellExtract plain text from a document in your data directory: PDF, DOCX, images/scans (set ocr:true), or plain text/CSV/JSON. Use to read invoices, contracts, resumes, statements, and exports that aren't already plain text.
read-file
shellRead a file from your data directory. Paths starting with 'shared/' read and write the group's shared directory, visible to every agent in your group; any other path is private to you.
shell-execute
shellExecute a shell command inside the agent's container
write-file
shellWrite a file into your data directory. Paths starting with 'shared/' read and write the group's shared directory, visible to every agent in your group; any other path is private to you.
browser-extract
browserExtract text and links from part of a page already loaded by browser-navigate, using a CSS selector. Requires the cache_key that browser-navigate returned.
browser-navigate
browserFetch a URL and return its text plus every link on the page. Follows redirects. Returns truncated:true and total_length when the page is longer than max_chars.
browser-search
browserSearch the web using a query string
check-task
internalCheck the current status and result of a previously delegated task
complete-task
internalComplete your currently assigned task with a structured, verifiable result. Call this when you finish work on a task you were ASSIGNED. Cron and heartbeat runs have no assigned task — finish those by summarising in your final message instead. Result content is a scannable record, NOT a document: no markdown headers, no emoji, no tables, no preamble, and never restate the task. Full deliverables (drafts, specs, reports) go in artifacts or a CRM Inbox draft — never inline in summary.
create-hook
internalCreate an internal event hook: an instruction an agent runs automatically whenever a platform event fires (task_complete, task_blocked, agent_error, session_open, …). Event-driven counterpart to create-schedule — use it for 'whenever X happens, do Y', and a schedule for 'every Monday at 9am, do Y'.
create-schedule
internalCreate an internal recurring cron schedule that wakes an agent with a prompt at set intervals (e.g. 'run gtm-campaign-monitor every Monday 9am BRT'). This is the ONLY correct way to put an agent on a schedule — the schedule lives in this platform's own scheduler, so never build it through an external automation, workflow, or calendar API.
create-task
internalCreate a new task on the group's board
delegate-task
internalDispatch work to a sub-agent. Pass task_id to hand off an EXISTING board task (preferred — no new task is created); otherwise pass title + description to create a new one. ONE task = ONE goal with ONE verifiable outcome — two deliverables means two tasks (exception: fetching from several API endpoints to complete one goal is still one task). Every description MUST end with a "Done when:" acceptance line stating how completion is verified.
delete-hook
internalStop an internal event hook by its ID. By default it is disabled (kept, so update-hook can switch it back on); pass permanent:true to erase it for good.
delete-schedule
internalStop an internal recurring schedule by its ID. By default it is disabled (kept, with its run history, so update-schedule can switch it back on); pass permanent:true to erase it for good.
list-agents
internalList available sub-agents in the organization with their skills and current status
list-hooks
internalList the internal event hooks in this organization (enabled and disabled), with their ids, trigger type and last trigger time. Call this first to find the hook_id that update-hook or delete-hook needs.
list-schedules
internalList the internal recurring schedules in this organization (enabled and disabled), with their ids, cadence, timezone and next run time. Call this first to find the schedule_id that update-schedule or delete-schedule needs.
list-tasks
internalList tasks on your group's board. Check for existing/duplicate work BEFORE creating or delegating tasks.
schedule-task
internalSchedule a recurring instruction for YOURSELF on a cron expression (e.g. a daily 9am spend-pacing check, an hourly deliverability watch). Runs on this platform's own internal scheduler — never call an external automation or calendar API to make an agent run on a schedule. The platform re-runs the prompt automatically at each due time, so monitoring/watchdog work repeats without a human re-enqueuing it. To schedule a DIFFERENT agent, use create-schedule.
send-message
internalSend a message to another agent or user via a session
update-hook
internalChange an existing internal event hook: its prompt, trigger event, conditions, or whether it is active. Set enabled:true to (re)activate and enabled:false to deactivate. Use list-hooks to find the hook_id.
update-memory
internalWrite notes to the agent's own persistent memory for future reference
update-schedule
internalChange an existing internal schedule: its cadence, prompt, timezone, name, or whether it is active. Set enabled:true to (re)activate a schedule and enabled:false to deactivate it — the next run time is recomputed for you. Use list-schedules to find the schedule_id.