Skip to content

Sponsor

Built-in Tools ​

These tools are available to the agent in every session.

Filesystem ​

ToolWhat it does
ReadFileReads a text file, or a range of lines from it — pass offset and limit to read around a SearchCode hit instead of the whole file (a whole-file read is re-sent on every following step). Ranged reads come back line-numbered. Binary files are refused; very large reads are truncated.
GlobLists files matching a pattern. Protected paths are excluded from results.
SearchCodeGrep-style search returning file + line + snippet. Capped at 50 results.
EditFilestr_replace edit — old_str must appear exactly once or the edit is refused.
WriteFileCreates a new file. Refuses if the path already exists.

Execution ​

ToolWhat it does
RunArtisanRuns php artisan <command> in a subprocess. Allowlist-gated. make:* commands return the created file's contents, so the next edit needs no read. Failures report stdout as well as stderr — artisan prints most errors there.
RunTestsRuns Pest or php artisan test in a subprocess. Returns a structured summary — pass/fail counts and, per failure, the test name, file:line, and assertion — not the raw log.
RunPintRuns Laravel Pint to format files. Called before finishing a task.
RunLarastanRuns PHPStan / Larastan static analysis and returns the findings. Accepts an optional path and level override. No-ops gracefully if vendor/bin/phpstan is not present.
RunShellGeneral shell — governed by the shell config mode.
RunComposerComposer with the dangerous parts fenced off — a fixed set of read-only and mutating subcommands, mutations always --no-scripts, scripts re-enabled only by a human at the terminal. Used by ai:upgrade.
ReadPackageDocsReads an installed package's upgrade guide, changelog, or composer.json from vendor/ — a docs-only carve-out of the vendor/* protected path; package code stays unreadable. Used by ai:upgrade.

Observability ​

ToolWhat it does
ReadLogReturns the last N lines of storage/logs/laravel.log. Accepts an optional filter string.
QueryDatabaseRuns a read-only SELECT query and returns results as JSON. Capped at 100 rows.
MutateDatabaseOne UPDATE, INSERT, or DELETE, run inside a transaction that is only committed once a human has confirmed the exact affected-row count. Off by default — see Database writes.
ListRoutesRegistered routes with method, URI, name, and action. One filter matches across all three; method narrows by verb. Boots a fresh process, so routes the agent wrote moments ago are seen.
DescribeSchemaReal DB schema from the live connection — tables, columns, types, indexes, foreign keys. Authoritative, not guessed from migrations.
DescribeModelsThe application map for one model — real columns and types from the live connection, casts, fillable, relations (type, related model, foreign key), local and global scopes, accessors, observers, policy, and factory states. With no argument, lists every model. Schema only, never rows.
DescribeRouteOne route as the framework resolved it — the middleware stack with groups and aliases expanded, route-model bindings, the FormRequest and its validation rules, and the authorization guarding it. ListRoutes answers what exists; this answers what happens.
AppInfoThe application stack — Laravel/PHP versions, drivers (via artisan about), and notable installed packages (Livewire/Inertia/Filament, Pest/PHPUnit, Fortify, …).
GitDiffShows a git diff — supports staged, a specific commit, a branch range, or a path.
ReadTelescopeEntryReads Telescope exception entries. Pass a job UUID for a specific lookup, or omit to return recent exceptions. No-ops gracefully if Telescope is not installed.
ReadSentryIssueFetches a Sentry issue by ID — exception, stacktrace, breadcrumbs, and request context. Omit the ID to list recent unresolved issues for the configured project. No-ops gracefully if SENTRY_AUTH_TOKEN / SENTRY_ORG are not set.
ReadGitHubIssueFetches a GitHub issue by number — title, body, labels, and all comments. Omit the number to list recent open issues. No-ops gracefully if GITHUB_TOKEN / GITHUB_REPO are not set.
ReadPullRequestFetches a GitHub pull request by number — title, body, branch name (head ref), base branch, state, author, and comments. Use this (not ReadGitHubIssue) when the user references a PR number, especially when the branch name is needed for CommitAndPush.
CreateGitHubIssueOpens a new GitHub issue with a title and body.
CreatePullRequestCreates a branch, commits all worktree changes, pushes to origin, and opens a GitHub pull request. If the change added tests, they are first run twice — with the change (must pass) and with it reverted (must fail) — and the result is reported in the PR body; a test that passes either way is flagged as possibly not covering the change. AI_CODE_VERIFY_RED_GREEN=false disables.
CommitAndPushStages all changes, fetches the remote branch tip, rebases onto it, commits, and pushes via HEAD:<branch> — without checking out the branch. Use this to add follow-up commits to an existing PR from a worktree session. Always pass the branch parameter (get it from ReadPullRequest).
AskUserPresents the user with a select() or multiselect() prompt and returns their choice. Interactive sessions only — not exposed to headless runs.
ConfirmActionPresents the user with a confirm() prompt before a destructive or irreversible operation. Returns "confirmed" or "cancelled". Interactive sessions only — not exposed to headless runs.
DelegateRuns a self-contained task in a subagent — a separate agent with its own fresh context and narrower toolset — and returns only its final report. Present only when tackle.subagents is non-empty.

All file reads happen in-process. Everything that executes code runs as a subprocess, so a broken generated file cannot crash the agent session.

DescribeSchema, DescribeModels, and DescribeRoute are the tools an agent running outside your application cannot have — see The Application Map for what they return and why it beats reading the files.

Want to add your own? See Custom Tools.

Grokbot package tools ​

Installing Tackle Grokbot adds these tools to the default coding agent through the package tool registry. Explicit tackle.tools allowlists must include their class names.

ToolArgumentsPurpose
ListGrokbotspage?List enabled bot IDs, names, and instructions; 25 per page. No credentials.
SendToGrokbotgrokbot_id, payloadSend a JSON object encoded as a string, up to 64 KiB. Authentication is supplied internally.
ListGrokbotDeliveriesgrokbot_id?, page?Read sanitized delivery history, including removed bots; 25 per page.

An accepted result means HTTP 2xx, not completion of the remote automation. Transport errors have unknown status; investigate before resending. The package does not automatically retry. See delivery behavior.

Released under the MIT License.