Docs: Clarify Custom Agent tool availability by environment (Web UI vs IDE)

Summary

The Custom Agents feature is impressive — the Web UI supports 78 GitLab API tools for issue triage, CI analysis, repository operations, security workflows, and MR management. The architecture makes sense: filesystem/shell tools require local execution, which the IDE extension provides but the browser cannot.

This is a documentation enhancement request to help Custom Agent authors understand which tools work in which environments.

Current State

The Agent Tools page lists 88 tools without indicating environment availability. The Agentic Chat comparison notes "Run Shell commands - IDEs only" but doesn't enumerate affected tools.

When authors select tools in AI Catalog, all tools appear equivalent. If an author configures filesystem tools and tests in Web UI, the agent simply doesn't have those tools — no error, just missing capabilities.

Suggestion

Agent Tools page — Add an "Availability" column to the tools table. Here's a ready-to-use table with all 88 tools:

Complete tool availability table (MR-ready)
Name Tool Description Web UI IDE
Add New Task add_new_task Add a task. Yes Yes
Build Review Merge Request Context build_review_merge_request_context Build comprehensive merge request context for code review. Yes Yes
Ci Linter ci_linter Validate CI/CD YAML configurations against CI/CD syntax rules. Yes Yes
Confirm Vulnerability confirm_vulnerability Change the state of a vulnerability in a project to CONFIRMED. Yes Yes
Create Commit create_commit Create a commit with multiple file actions in a repository. Yes Yes
Create Epic create_epic Create epics in a group. Yes Yes
Create File With Contents create_file_with_contents Create a file and write content to it. No Yes
Create Issue create_issue Create issues in a project. Yes Yes
Create Issue Note create_issue_note Add notes to an issue. Yes Yes
Create Merge Request create_merge_request Create merge requests in a project. Yes Yes
Create Merge Request Note create_merge_request_note Add notes to a merge request. Quick actions are not supported. Yes Yes
Create Plan create_plan Create a list of tasks. Yes Yes
Create Vulnerability Issue create_vulnerability_issue Create an issue linked to security vulnerabilities in a project. Yes Yes
Create Work Item create_work_item Create a work item in a group or project. Quick actions are not supported. Yes Yes
Create Work Item Note create_work_item_note Add a note to a work item. Quick actions are not supported. Yes Yes
Dismiss Vulnerability dismiss_vulnerability Dismiss a security vulnerability in a project. Yes Yes
Edit File edit_file Edit existing files. No Yes
Extract Lines From Text extract_lines_from_text Extract specific lines from text. Yes Yes
Find Files find_files Recursively find files in a project. No Yes
Get Commit get_commit Get a commit from a project. Yes Yes
Get Commit Comments get_commit_comments Get the comments of a commit in a project. Yes Yes
Get Commit Diff get_commit_diff Get the diff of a commit in a project. Yes Yes
Get Current User get_current_user Get the following information about the current user: username, job title, and preferred languages. Yes Yes
Get Epic get_epic Get an epic in a group. Yes Yes
Get Epic Note get_epic_note Get a note from an epic. Yes Yes
Get Issue get_issue Get an issue from a project. Yes Yes
Get Issue Note get_issue_note Get a note from an issue. Yes Yes
Get Job Logs get_job_logs Get the trace for a job. Yes Yes
Get Merge Request get_merge_request Get details about a merge request. Yes Yes
Get Pipeline Errors get_pipeline_errors Get the logs for failed jobs from the latest pipeline of a merge request. Yes Yes
Get Pipeline Failing Jobs get_pipeline_failing_jobs Get the IDs for failed jobs in a pipeline. Yes Yes
Get Plan get_plan Get a list of tasks. Yes Yes
Get Previous Session Context get_previous_session_context Get context from a previous session. Yes Yes
Get Project get_project Get details about a project. Yes Yes
Get Repository File get_repository_file Get the contents of a file from a remote repository. Yes Yes
Get Security Finding Details get_security_finding_details Get the details of a potential vulnerability by its ID and the ID of the pipeline scan that identified it. Yes Yes
Get Vulnerability Details get_vulnerability_details Get the following information about a vulnerability specified by ID: basic vulnerability information, location details, CVE enrichment data, detection pipeline information, and detailed vulnerability report data. Yes Yes
Get Wiki Page get_wiki_page Get a wiki page from a project or group, including all its comments. Yes Yes
Get Work Item get_work_item Get a work item from a group or project. Yes Yes
Get Work Item Notes get_work_item_notes Get all notes for a work item. Yes Yes
Gitlab Api Get gitlab_api_get Make read-only GET requests to any REST API endpoint. Yes Yes
Gitlab Blob Search gitlab_blob_search Search for the contents of files in a group or project. Yes Yes
Gitlab Commit Search gitlab_commit_search Search for commits in a project or group. Yes Yes
Gitlab Documentation Search gitlab_documentation_search Search the GitLab documentation for information. Yes Yes
Gitlab Graphql gitlab_graphql Execute read-only GraphQL queries against the GraphQL API. Yes Yes
Gitlab Group Project Search gitlab_group_project_search Search for projects in a group. Yes Yes
Gitlab Issue Search gitlab_issue_search Search for issues in a project or group. Yes Yes
Gitlab Merge Request Search gitlab_merge_request_search Search for merge requests in a project or group. Yes Yes
Gitlab Milestone Search gitlab_milestone_search Search for milestones in a project or group. Yes Yes
Gitlab Note Search gitlab_note_search Search for notes in a project. Yes Yes
Gitlab User Search gitlab__user_search Search for users in a project or group. Yes Yes
Gitlab Wiki Blob Search gitlab_wiki_blob_search Search the contents of wikis in a project or group. Yes Yes
Grep grep Recursively search for text patterns in files. This tool respects .gitignore file rules. No Yes
Link Vulnerability To Issue link_vulnerability_to_issue Link an issue to security vulnerabilities in a project. Yes Yes
Link Vulnerability To Merge Request link_vulnerability_to_merge_request Link a security vulnerability to a merge request in a project using GraphQL. Yes Yes
List All Merge Request Notes list_all_merge_request_notes List all notes on a merge request. Yes Yes
List Commits list_commits List commits in a project. Yes Yes
List Dir list_dir List files in a directory relative to the root of the project. No Yes
List Epic Notes list_epic_notes List all notes for an epic. Yes Yes
List Epics list_epics List all epics of a group and its subgroups. Yes Yes
List Group Audit Events list_group_audit_events List audit events for a group. You must have the Owner role to access group audit events. Yes Yes
List Instance Audit Events list_instance_audit_events List instance-level audit events. You must be an administrator to see instance audit events. Yes Yes
List Issue Notes list_issue_notes List all notes on an issue. Yes Yes
List Issues list_issues List all issues in a project. Yes Yes
List Merge Request Diffs list_merge_request_diffs List the diffs of changed files in a merge request. Yes Yes
List Project Audit Events list_project_audit_events List audit events for a project. You must have the Owner role to access project audit events. Yes Yes
List Repository Tree list_repository_tree List files and directories in a repository. Yes Yes
List Security Findings list_security_findings List ephemeral security findings from a specific pipeline security scan. Yes Yes
List Vulnerabilities list_vulnerabilities List security vulnerabilities in a project. Yes Yes
List Work Items list_work_items List work items in a project or group. Yes Yes
Mkdir mkdir Create a directory in the current working tree. No Yes
Post Duo Code Review post_duo_code_review Post a GitLab Duo code review to a merge request. Yes Yes
Post Sast Fp Analysis To Gitlab post_sast_fp_analysis_to_gitlab Post SAST false positive detection analysis results. Yes Yes
Read File read_file Read the contents of a file. No Yes
Read Files read_files Read the contents of files. No Yes
Remove Task remove_task Remove a task from a list of tasks. Yes Yes
Revert To Detected Vulnerability revert_to_detected_vulnerability Revert a vulnerability's state to detected. Yes Yes
Run Command run_command Run bash commands in the current working directory. Git commands are not supported. No Yes
Run Git Command run_git_command Run Git commands in the current working directory. No Yes
Run GLQL Query run_glql_query Execute GLQL queries for work items, epics, and merge requests. Yes Yes
Run Tests run_tests Execute test commands for any language or framework. Yes Yes
Set Task Status set_task_status Set the status of a task. Yes Yes
Update Epic update_epic Update an epic in a group. Yes Yes
Update Issue update_issue Update an issue in a project. Yes Yes
Update Merge Request update_merge_request Update a merge request. You can change the target branch, edit the title, or even close the MR. Yes Yes
Update Task Description update_task_description Update the description of a task. Yes Yes
Update Vulnerability Severity update_vulnerability_severity Update the severity level of vulnerabilities in a project. Yes Yes
Update Work Item update_work_item Update an existing work item in a group or project. Quick actions are not supported. Yes Yes

Summary: 78 tools work in both environments. 10 tools (filesystem/shell) require the IDE extension.

Custom Agents page — Brief note in the tool selection section:

Note: Some tools require the IDE extension (VS Code, JetBrains, Visual Studio) and are not available in Web UI. See Agent Tools for the complete availability matrix.

Source Code Reference (for maintainability)

The IDE-only determination can be derived programmatically:

  1. Tool definitions: ee/lib/ai/catalog/built_in_tool_definitions.rb
  2. Local action handlers: gitlab-lsp/.../executors/node/actions/

Tools with matching handlers in the LSP actions/ directory require local execution → IDE-only. All others use GitLab API → work everywhere.

Context

I discovered this while building a Custom Agent to process JSON files. After debugging:

  1. Web UI agents receive full tool schemas for available tools — they work correctly
  2. Filesystem tools simply aren't advertised to the agent in Web UI (expected, given the architecture)
  3. The architecture doc explains this clearly, but it's in the engineering handbook rather than user docs

Once I understood the model, I redesigned using list_repository_tree and get_repository_file instead. The capability is there — the documentation just needs to surface it.

Edited by 🤖 GitLab Bot 🤖