> ## Documentation Index
> Fetch the complete documentation index at: https://docs.boostgpt.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Built-in Tools

> Complete reference for all agent built-in tools

## Overview

When an agent uses `agent` reasoning mode, it has access to BoostGPT built-in tools for knowledge, memory, files, planning, communication, CRM, calendar, automation, workspace delivery, and platform operations.

<Info>
  File tools (`write`, `read`, `edit`, `grep`, `delete`, `ls`) and the `command` tool require the agent's **Workspace** setting to be enabled. Planning tools (`create_plan`, `update_plan`, `read_plan`, `accept_plan`) require plan mode (`chat_mode: 'plan'`), which also requires workspace.
</Info>

### Approval Levels

| Level           | Behavior                          | Description                                  |
| --------------- | --------------------------------- | -------------------------------------------- |
| **Auto**        | Executes without user interaction | Read-only and low-risk operations            |
| **Input**       | Waits for visitor interaction     | User-facing tools such as booking cards      |
| **Conditional** | Configurable per agent            | Write operations that modify workspace files |
| **Always**      | Always requires user approval     | Actions that need explicit user consent      |

## Summary

| Tool                          | Category      | Approval    | Description                                                    |
| ----------------------------- | ------------- | ----------- | -------------------------------------------------------------- |
| `search_memory`               | Knowledge     | Auto        | Vector search through knowledge base                           |
| `screenshot`                  | Knowledge     | Auto        | Capture web page screenshot                                    |
| `web_fetch`                   | Knowledge     | Auto        | Extract page content as markdown                               |
| `remember`                    | Memory        | Auto        | Save to user long-term memory                                  |
| `recall`                      | Memory        | Auto        | Search user memories                                           |
| `list_memories`               | Memory        | Auto        | List all user memories                                         |
| `forget`                      | Memory        | Auto        | Remove a user memory                                           |
| `write`                       | Files         | Conditional | Create or overwrite a file                                     |
| `read`                        | Files         | Auto        | Read file content                                              |
| `edit`                        | Files         | Conditional | Exact string replacement                                       |
| `grep`                        | Files         | Auto        | Regex search across files                                      |
| `delete`                      | Files         | Conditional | Soft-delete a file                                             |
| `create_plan`                 | Planning      | Auto        | Register a plan                                                |
| `update_plan`                 | Planning      | Auto        | Modify plan or advance todos                                   |
| `read_plan`                   | Planning      | Auto        | Read current plan state                                        |
| `accept_plan`                 | Planning      | Always      | Submit plan for user approval                                  |
| `ask_user`                    | Communication | Always      | Ask structured questions                                       |
| `calendar_request_booking`    | Calendar      | Auto/Input  | Render an interactive booking card and wait for slot selection |
| `notify_user`                 | Communication | Auto        | Send proactive notification                                    |
| `message_agent`               | Communication | Auto        | Message another agent                                          |
| `calendar_check_availability` | Calendar      | Auto        | Find available meeting slots                                   |
| `calendar_create_event`       | Calendar      | Auto        | Create an event and send confirmation email                    |
| `calendar_reschedule_event`   | Calendar      | Auto        | Move an existing event                                         |
| `calendar_cancel_event`       | Calendar      | Auto        | Cancel an existing event                                       |
| `create_crm_contact`          | CRM           | Auto        | Capture a contact record                                       |
| `schedule_task`               | Automation    | Auto        | Create recurring task                                          |
| `command`                     | Execution     | Conditional | Run code/commands in sandbox                                   |
| `think`                       | Utility       | Auto        | Internal reasoning                                             |

***

## Knowledge & Search

### search\_memory

Search through the bot's knowledge base and uploaded documents using vector similarity.

| Parameter | Type    | Required | Description                                   |
| --------- | ------- | -------- | --------------------------------------------- |
| `query`   | string  | Yes      | The search query to find relevant information |
| `top`     | integer | No       | Number of results to return (default: 10)     |

### screenshot

Capture a visual screenshot of a web page. Returns an image URL for vision-capable AI analysis.

| Parameter            | Type    | Required | Description                                                                    |
| -------------------- | ------- | -------- | ------------------------------------------------------------------------------ |
| `url`                | string  | Yes      | URL of the web page to screenshot                                              |
| `width`              | integer | No       | Viewport width in pixels (default: 1920)                                       |
| `height`             | integer | No       | Viewport height in pixels (default: 1080)                                      |
| `fullPage`           | boolean | No       | Capture full scrollable page (default: false)                                  |
| `device`             | string  | No       | Device preset (e.g., `iphone-15`, `ipad-pro-12.9`, `pixel-7`, `desktop-1080p`) |
| `theme`              | string  | No       | Color scheme: `light` or `dark` (default: light)                               |
| `quality`            | integer | No       | JPEG quality 1-100 (default: 80)                                               |
| `format`             | string  | No       | Output format: `jpg` or `png` (default: jpg)                                   |
| `blockCookieBanners` | boolean | No       | Block cookie consent banners (default: false)                                  |
| `blockAds`           | boolean | No       | Block advertisements (default: false)                                          |
| `blockChatWidgets`   | boolean | No       | Block chat widgets (default: false)                                            |
| `blockPopups`        | boolean | No       | Block popups and modals (default: false)                                       |
| `hideSelectors`      | array   | No       | CSS selectors to hide before capture                                           |
| `clickSelectors`     | array   | No       | CSS selectors to click before capture                                          |
| `timeout`            | integer | No       | Page load timeout in ms (default: 30000)                                       |

### web\_fetch

Extract the content of a web page as structured markdown with metadata (title, description, word count). Unlike `screenshot` which captures a visual image, `web_fetch` returns the page's text content.

| Parameter | Type   | Required | Description                                 |
| --------- | ------ | -------- | ------------------------------------------- |
| `url`     | string | Yes      | URL of the web page to extract content from |

***

## User Memory

<Info>
  User Memory must be enabled on the agent. Enable it in **Settings → Features & Options → Access to Memory**, or set `memory: true` via the [Bot Management API](/sdk/core/bot-management).
</Info>

### remember

Save or update information in long-term memory for the current user. Automatically detects whether to create a new memory or update an existing one.

| Parameter | Type   | Required | Description                                                              |
| --------- | ------ | -------- | ------------------------------------------------------------------------ |
| `content` | string | Yes      | The information to remember                                              |
| `type`    | string | No       | Memory type: `semantic`, `episodic`, or `procedural` (default: semantic) |
| `tags`    | array  | No       | Tags for categorization                                                  |

### recall

Search through saved memories for the current user.

| Parameter | Type    | Required | Description                                                                   |
| --------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `query`   | string  | Yes      | What to search for in memories                                                |
| `type`    | string  | No       | Filter by type: `semantic`, `episodic`, `procedural`, or `all` (default: all) |
| `top`     | integer | No       | Number of results to return (default: 5)                                      |

### list\_memories

List all saved memories for the current user, ordered by most recent.

| Parameter | Type    | Required | Description                                                                   |
| --------- | ------- | -------- | ----------------------------------------------------------------------------- |
| `type`    | string  | No       | Filter by type: `semantic`, `episodic`, `procedural`, or `all` (default: all) |
| `limit`   | integer | No       | Max memories to return (default: 10)                                          |

### forget

Remove a specific memory about the current user.

| Parameter | Type   | Required | Description                         |
| --------- | ------ | -------- | ----------------------------------- |
| `query`   | string | Yes      | Description of the memory to forget |

***

## File Operations

File tools operate on the agent's sandbox [Workspace](/sdk/core/workspaces). See the [Workspaces documentation](/sdk/core/workspaces) for full details including REST API endpoints.

| Tool     | Approval    | Description                                                                |
| -------- | ----------- | -------------------------------------------------------------------------- |
| `write`  | Conditional | Create or overwrite a file — params: `file_path`, `content`, `language`    |
| `read`   | Auto        | Read file content — params: `file_path`, `start_line`, `end_line`          |
| `edit`   | Conditional | Exact string replacement — params: `file_path`, `old_string`, `new_string` |
| `grep`   | Auto        | Regex search across files — params: `pattern`, `file_path`, `include`      |
| `delete` | Conditional | Soft-delete a file — params: `file_path`                                   |

***

## Planning

Planning tools enable agents to create structured plans, track progress through todos, and get user approval before executing.

### create\_plan

Register a plan after writing the plan document to a workspace file. First use `write` to create the plan file at `/.plans/{title}.md`, then call this tool.

| Parameter        | Type   | Required | Description                                                        |
| ---------------- | ------ | -------- | ------------------------------------------------------------------ |
| `title`          | string | Yes      | A concise title for the plan                                       |
| `plan_file_path` | string | Yes      | Path to the plan `.md` file (e.g., `/.plans/add-dark-mode.md`)     |
| `todos`          | array  | No       | Todo descriptions (in plan mode, typically added after acceptance) |

### update\_plan

Update the active plan. Can modify title, replace todos, change status, or advance to the next todo.

| Parameter      | Type    | Required | Description                                                            |
| -------------- | ------- | -------- | ---------------------------------------------------------------------- |
| `title`        | string  | No       | New title for the plan                                                 |
| `todos`        | array   | No       | Replacement todos array (replaces all todos, resets status to pending) |
| `status`       | string  | No       | Set status: `cancelled` or `completed`                                 |
| `advance_todo` | boolean | No       | Mark current todo complete and advance to next                         |
| `todo_result`  | string  | No       | Summary of what was accomplished (used with `advance_todo`)            |

<Warning>
  Setting `todos` replaces the entire todo list and resets all statuses to pending. Use `advance_todo: true` to mark individual todos as completed.
</Warning>

### read\_plan

Read the current active plan. Returns title, status, todos with completion state, and current todo index. No parameters.

### accept\_plan

Submit the current draft plan for user approval. No parameters. Always requires user approval before proceeding.

<Info>
  After a plan is accepted, the agent typically adds execution todos via `update_plan` and then works through them step by step.
</Info>

***

## Communication

### ask\_user

Ask the user 1-4 structured questions with selectable options. Always requires approval — the user sees the questions and picks answers.

| Parameter   | Type  | Required | Description                   |
| ----------- | ----- | -------- | ----------------------------- |
| `questions` | array | Yes      | Array of 1-4 question objects |

Each question object:

| Field      | Type   | Required | Description                  |
| ---------- | ------ | -------- | ---------------------------- |
| `question` | string | Yes      | The question to ask          |
| `options`  | array  | Yes      | 2-4 answer options (strings) |

### notify\_user

Send a proactive notification to the user when something needs their attention.

| Parameter    | Type   | Required | Description                                              |
| ------------ | ------ | -------- | -------------------------------------------------------- |
| `title`      | string | Yes      | Short notification title                                 |
| `message`    | string | Yes      | Detailed notification message                            |
| `priority`   | string | No       | Priority: `low`, `normal`, or `urgent` (default: normal) |
| `action_url` | string | No       | URL the user can click to take action                    |

### message\_agent

Send a message to another agent in the same project. Delivered asynchronously.

| Parameter      | Type   | Required | Description                      |
| -------------- | ------ | -------- | -------------------------------- |
| `target_agent` | string | Yes      | Name or UUID of the target agent |
| `message`      | string | Yes      | The message to send              |
| `context`      | string | No       | Additional context to include    |

***

## Calendar

Calendar tools require the agent's **Calendar** feature to be enabled. They are designed for booking flows inside chat, including the interactive booking card.

### calendar\_check\_availability

Find available meeting slots for a duration and date range.

| Parameter          | Type    | Required | Description                                        |
| ------------------ | ------- | -------- | -------------------------------------------------- |
| `date_from`        | string  | No       | Start date or datetime to search from              |
| `date_to`          | string  | No       | End date or datetime to search until               |
| `timezone`         | string  | No       | IANA timezone for the visitor, e.g. `Africa/Lagos` |
| `duration_minutes` | integer | No       | Meeting duration                                   |
| `limit`            | integer | No       | Maximum slots to return (default: 12)              |

<Info>
  If this tool returns slots, the agent should show them with `calendar_request_booking`. It should not say no slots are available.
</Info>

### calendar\_request\_booking

Render an interactive booking card so the visitor can choose a slot. This waits for user input; it is not an approval step.

| Parameter          | Type    | Required | Description                                           |
| ------------------ | ------- | -------- | ----------------------------------------------------- |
| `title`            | string  | No       | Booking card title                                    |
| `slots`            | array   | No       | Available slots from `calendar_check_availability`    |
| `timezone`         | string  | No       | IANA timezone                                         |
| `duration_minutes` | integer | No       | Meeting duration                                      |
| `attendee_name`    | string  | No       | Attendee name                                         |
| `attendee_email`   | string  | No       | Attendee email                                        |
| `attendee_phone`   | string  | No       | Attendee phone                                        |
| `selected_slot`    | object  | No       | Slot selected by the visitor through the booking card |
| `skipped`          | boolean | No       | True when the visitor skips booking                   |

After this tool returns a selected slot, call `calendar_create_event` when attendee details are available.

### calendar\_create\_event

Create a confirmed calendar event. When `attendee_email` is provided, BoostGPT sends a booking confirmation email with an `.ics` file and calendar links.

| Parameter           | Type    | Required | Description                                                             |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------- |
| `title`             | string  | No       | Event title                                                             |
| `description`       | string  | No       | Event description                                                       |
| `start_at`          | string  | No       | Event start datetime; optional when `selected_slot` is supplied         |
| `end_at`            | string  | No       | Event end datetime                                                      |
| `selected_slot`     | object  | No       | Slot returned by `calendar_request_booking`                             |
| `timezone`          | string  | No       | IANA timezone                                                           |
| `duration_minutes`  | integer | No       | Meeting duration                                                        |
| `location`          | string  | No       | Meeting location or link                                                |
| `contact_id`        | string  | No       | CRM contact id                                                          |
| `attendee_name`     | string  | No       | Attendee name                                                           |
| `attendee_email`    | string  | No       | Attendee email                                                          |
| `attendee_phone`    | string  | No       | Attendee phone                                                          |
| `notes`             | string  | No       | Internal notes                                                          |
| `metadata`          | object  | No       | Additional metadata                                                     |
| `send_confirmation` | boolean | No       | Set false only when you intentionally do not want to email the attendee |

<Warning>
  Do not use `notify_user` as a calendar invite after `calendar_create_event` unless the visitor asks for a separate follow-up notification. In final answers, use the returned `display_time` when available because stored `start_at` values are UTC.
</Warning>

### calendar\_reschedule\_event

Move an existing calendar event. Sends an updated confirmation email with an `.ics` attachment when attendee email exists on the event.

| Parameter           | Type    | Required | Description                                                             |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------- |
| `event_id`          | string  | Yes      | Calendar event id                                                       |
| `start_at`          | string  | No       | New start datetime                                                      |
| `end_at`            | string  | No       | New end datetime                                                        |
| `selected_slot`     | object  | No       | Selected replacement slot                                               |
| `timezone`          | string  | No       | IANA timezone                                                           |
| `send_confirmation` | boolean | No       | Set false only when you intentionally do not want to email the attendee |

### calendar\_cancel\_event

Cancel an existing calendar event. Sends a cancellation email with a cancellation `.ics` attachment when attendee email exists on the event.

| Parameter           | Type    | Required | Description                                                             |
| ------------------- | ------- | -------- | ----------------------------------------------------------------------- |
| `event_id`          | string  | Yes      | Calendar event id                                                       |
| `reason`            | string  | No       | Cancellation reason                                                     |
| `send_confirmation` | boolean | No       | Set false only when you intentionally do not want to email the attendee |

***

## CRM

CRM tools require the agent's **CRM** feature to be enabled. The exact CRM tool set may include contact, deal, status, pipeline, note, and follow-up task actions depending on the agent configuration.

Common CRM tools include:

| Tool                 | Approval | Description                                                                        |
| -------------------- | -------- | ---------------------------------------------------------------------------------- |
| `create_crm_contact` | Auto     | Capture a contact from chat details such as name, email, phone, source, and status |
| `update_crm_contact` | Auto     | Update contact details as the conversation develops                                |
| `create_crm_deal`    | Auto     | Create a deal in a pipeline after qualified intent                                 |
| `create_crm_task`    | Auto     | Create a follow-up task tied to a contact or deal                                  |

Use CRM tools before booking when you need a persistent lead record, and update the record after booking if the meeting changes the lead status.

***

## Boost Platform Tools

Boost platform tools are internal tools used by the official dashboard assistant, **Boost**. They are user-scoped and intended for configuring the authenticated user's BoostGPT projects and agents.

Read-only tools:

| Tool                           | Description                                                                                              |
| ------------------------------ | -------------------------------------------------------------------------------------------------------- |
| `boost_list_agents`            | List manageable projects and agents                                                                      |
| `boost_get_agent_setup_status` | Inspect launch readiness across hosted page, widget, CRM, calendar, workflows, workspace, and connectors |
| `boost_check_plan_limits`      | Check plan gates and usage limits                                                                        |
| `boost_list_connectors`        | List predefined connectors and enabled connector state                                                   |
| `boost_run_test_conversation`  | Prepare a hosted test URL and prompt                                                                     |
| `boost_export_agent_template`  | Export a sanitized `.boostgpt` template                                                                  |

Change-making tools require confirmation because they can alter user-facing behavior:

| Tool                               | Description                                                                                |
| ---------------------------------- | ------------------------------------------------------------------------------------------ |
| `boost_create_agent_from_use_case` | Create an agent from a business outcome                                                    |
| `boost_update_agent_settings`      | Patch agent switches such as CRM, calendar, workspace, publishing, reasoning, or chat mode |
| `boost_apply_crm_template`         | Apply a CRM template and enable CRM                                                        |
| `boost_apply_workflow_template`    | Create a workflow from a template                                                          |
| `boost_publish_agent`              | Publish or unpublish the hosted agent page                                                 |
| `boost_configure_widget`           | Enable or disable the website widget                                                       |
| `boost_configure_calendar`         | Enable calendar booking and save booking defaults                                          |
| `boost_configure_agent_email`      | Configure the agent email channel                                                          |
| `boost_add_predefined_connector`   | Add a predefined connector to an agent                                                     |
| `boost_create_workspace_file`      | Create or overwrite a workspace file                                                       |
| `boost_publish_workspace`          | Publish or unpublish a workspace URL                                                       |

<Info>
  If a Boost platform tool is unavailable in a given environment, Boost should give exact UI steps instead of pretending it acted.
</Info>

***

## Automation

### schedule\_task

Create a recurring scheduled task that runs automatically.

| Parameter         | Type    | Required | Description                                                             |
| ----------------- | ------- | -------- | ----------------------------------------------------------------------- |
| `name`            | string  | Yes      | Short descriptive name for the task                                     |
| `prompt`          | string  | Yes      | The instruction to execute on each run                                  |
| `schedule_type`   | string  | No       | Frequency: `interval`, `daily`, `weekly`, or `once` (default: interval) |
| `schedule_config` | object  | No       | Schedule details (varies by `schedule_type`)                            |
| `description`     | string  | No       | Longer description of the task                                          |
| `timezone`        | string  | No       | Timezone for schedule (default: UTC)                                    |
| `max_executions`  | integer | No       | Maximum number of runs (null = unlimited)                               |

***

## Code Execution

### command

Run code or shell commands in an isolated sandbox environment. The sandbox has access to all workspace files under `/workspace` and has network access. Requires both **Workspace** and **Code Sandbox** to be enabled on the agent.

| Parameter | Type   | Required | Description                                                                                                            |
| --------- | ------ | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `command` | string | Yes      | The shell command to run (e.g., `python main.py`, `npm install express`, `node server.js`, `curl https://example.com`) |

<Info>
  The sandbox auto-detects the runtime (Python or Node.js) based on workspace file extensions. Files modified by the command are automatically synced back to the workspace. Each execution has a 30-second timeout.
</Info>

***

## Utility

### think

Reason aloud and plan next steps without producing any user-visible output. Useful for the agent to organize its thoughts before acting.

| Parameter | Type   | Required | Description                               |
| --------- | ------ | -------- | ----------------------------------------- |
| `thought` | string | Yes      | Reasoning, analysis, or planning thoughts |

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Workspaces" icon="folder" href="/sdk/core/workspaces">
    File tools details and REST API
  </Card>

  <Card title="User Memory" icon="brain" href="/sdk/core/user-memory">
    Memory management REST API
  </Card>

  <Card title="Chat API" icon="message-bot" href="/sdk/core/chat-api">
    Send messages and receive AI responses
  </Card>

  <Card title="Heartbeat API" icon="heart-pulse" href="/sdk/core/heartbeat">
    Autonomous agent schedules
  </Card>
</CardGroup>
