Dropstone Docs

Tools

Manage the tools an LLM can use.

Tools allow the LLM to perform actions in your codebase. Dropstone comes with a set of built-in tools, but you can extend it with custom tools or MCP servers.

By default, all tools are enabled and don't need permission to run. You can control tool behavior through permissions.


Configure

Use the permission field to control tool behavior. You can allow, deny, or require approval for each tool.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "deny",
    "bash": "ask",
    "webfetch": "allow"
  }
}

You can also use wildcards to control multiple tools at once. For example, to require approval for all tools from an MCP server:

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "mymcp_*": "ask"
  }
}

Learn more about configuring permissions.


Built-in

Here are all the built-in tools available in Dropstone.


bash

Execute shell commands in your project environment.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "bash": "allow"
  }
}

This tool allows the LLM to run terminal commands like npm install, git status, or any other shell command.


edit

Modify existing files using exact string replacements.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "allow"
  }
}

This tool performs precise edits to files by replacing exact text matches. It's the primary way the LLM modifies code.


write

Create new files or overwrite existing ones.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "allow"
  }
}

Use this to allow the LLM to create new files. It will overwrite existing files if they already exist.

Note:

The write tool is controlled by the edit permission, which covers all file modifications (edit, write, apply_patch).


read

Read file contents from your codebase.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "read": "allow"
  }
}

This tool reads files and returns their contents. It supports reading specific line ranges for large files.


grep

Search file contents using regular expressions.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "grep": "allow"
  }
}

Fast content search across your codebase. Supports full regex syntax and file pattern filtering.


glob

Find files by pattern matching.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "glob": "allow"
  }
}

Search for files using glob patterns like **/*.js or src/**/*.ts. Returns matching file paths sorted by modification time.


lsp (experimental)

Interact with your configured LSP servers to get code intelligence features like definitions, references, hover info, and call hierarchy.

Experimental:

The LSP tool is experimental and disabled by default. Behaviour may change between releases.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "lsp": "allow"
  }
}

Supported operations include goToDefinition, findReferences, hover, documentSymbol, workspaceSymbol, goToImplementation, prepareCallHierarchy, incomingCalls, and outgoingCalls.

To configure which LSP servers are available for your project, see LSP Servers.


apply_patch

Apply patches to files.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "edit": "allow"
  }
}

This tool applies patch files to your codebase. Useful for applying diffs and patches from various sources.

When handling tool.execute.before or tool.execute.after hooks, check input.tool === "apply_patch" (not "patch").

apply_patch uses output.args.patchText instead of output.args.filePath. Paths are embedded in marker lines within patchText and are relative to the project root (for example: *** Add File: src/new-file.ts, *** Update File: src/existing.ts, *** Move to: src/renamed.ts, *** Delete File: src/obsolete.ts).

Note:

The apply_patch tool is controlled by the edit permission, which covers all file modifications (edit, write, apply_patch).


skill

Load a skill (a SKILL.md file) and return its content in the conversation.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "skill": "allow"
  }
}

todowrite

Manage todo lists during coding sessions.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "todowrite": "allow"
  }
}

Creates and updates task lists to track progress during complex operations. The LLM uses this to organize multi-step tasks.

Note:

This tool is disabled for subagents by default, but you can enable it manually. Learn more.


webfetch

Fetch web content.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "webfetch": "allow"
  }
}

Allows the LLM to fetch and read web pages. Useful for looking up documentation or researching online resources.


websearch

Search the web for information. Available by default when you're signed in to Dropstone.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "websearch": "allow"
  }
}

Performs web searches to find relevant information online. Useful for researching topics, finding current events, or gathering information beyond the training data cutoff. No API key or extra setup is required when you are signed in to Dropstone.

Tip:

Use websearch when you need to find information (discovery), and webfetch when you need to retrieve content from a specific URL (retrieval).


question

Ask the user questions during execution.

{
  "$schema": "https://dropstone.io/schema/config.json",
  "permission": {
    "question": "allow"
  }
}

This tool allows the LLM to ask the user questions during a task. It's useful for:

  • Gathering user preferences or requirements
  • Clarifying ambiguous instructions
  • Getting decisions on implementation choices
  • Offering choices about what direction to take

Each question includes a header, the question text, and a list of options. Users can select from the provided options or type a custom answer. When there are multiple questions, users can navigate between them before submitting all answers.


Custom tools

Custom tools let you define your own functions that the LLM can call. These are defined in your config file and can execute arbitrary code.

Learn more about creating custom tools.


MCP servers

MCP (Model Context Protocol) servers allow you to integrate external tools and services. This includes database access, API integrations, and third-party services.

Learn more about configuring MCP servers.


Ignore patterns

By default, grep and glob respect your .gitignore: files and directories listed there are excluded from searches and listings.

To include files that would normally be ignored, create a .ignore file in your project root. This file can explicitly allow certain paths.

!node_modules/
!dist/
!build/

For example, this .ignore file allows search within node_modules/, dist/, and build/ directories even if they are listed in .gitignore.

Ctrl+I