Documentation
Tools
The coding tools agents need ship in the server binary. Optional capabilities and MCP servers add more when a workspace needs them.
On this page
Built-in tools
A fresh prokop init can work with files, search code, run commands, fetch the web, ask structured questions, manage tasks, and delegate research without installing a separate tool pack.
Built-in and product tools take precedence when an external extension declares the same name.
Files and search
| Tool | Purpose |
|---|---|
read-file |
Read text files with line numbers or list a directory |
file-to-markdown |
Convert PDF, Office, LibreOffice, and ZIP files into readable Markdown |
write-file |
Create a file or deliberately replace its full contents |
edit |
Make one targeted string replacement |
edit-range |
Replace line ranges with revision checking |
multiedit |
Apply several replacements to one file atomically |
apply-patch |
Apply a patch across one or more files |
glob |
Find files by path pattern |
grep |
Search file contents with regular expressions |
ls |
Explore a directory as a tree |
Editing tools enforce workspace boundaries and ask before sensitive operations. Existing files are normally changed with targeted edits instead of full rewrites.
Shell and terminal
The shell tool starts a fresh process for one command. Persistent PTY sessions are available through the terminal tool when a working directory, environment changes, a warm build process, or an interactive prompt needs to survive between calls.
Dangerous commands, filesystem modifications, network operations, and work outside the workspace can require explicit permission.
Git worktrees
The git-worktree tool can create, list, check the status of, and remove Git worktrees. A created path is registered with the workspace so later file tools can use it. Removing a worktree requires explicit approval.
Web and browser
| Tool | Purpose |
|---|---|
webfetch |
Fetch a URL and convert it to readable text or Markdown |
tavily-search |
Search the web with date, topic, and domain filters |
| Browser tools | Read tabs and interact with pages through Prokop Browser |
Web search requires your own Tavily API key. Browser automation requires the Prokop Browser extension connected to the same server. Browser tools can be added to a custom preconfig when you want an agent to use them.
Interaction and task management
The question tool renders typed forms for confirmation, free text, single selection, or multiple selection. The todowrite and todoread tools let an agent keep a visible task list for longer work.
The task tool delegates focused work to isolated subagents. Subagents can inspect a codebase without flooding the parent conversation with every file read.
Capability tools
Most of these appear only when the corresponding workspace capability is enabled. The skill tool appears whenever discoverable skills are available to the active preconfig, even when skill management is disabled.
| Tool | Capability | Purpose |
|---|---|---|
memory |
Memory | Manage durable preferences and project facts |
session_search |
Session Search | Find and read earlier conversations |
workflow |
Workflow | Decompose, fan out, and synthesize parallel work |
skill_manage |
Skills | Create, patch, update, or delete workspace skills |
skill |
Available skills | Load one available skill’s procedure |
scheduler |
Scheduling | Create and manage scheduled jobs |
See Workspaces & sessions for storage and permission behavior.
MCP tools
Connect an MCP server and its tools become available to the workspace. Prokop supports local stdio processes and remote Streamable HTTP/SSE servers with optional request headers.
MCP definitions live in <workspace>/.prokopai/mcp.json. See Configuration.
Permissions and asks
Tools can pause and ask for authority or input. For a permission request, you can approve once, create a reusable grant, or deny the operation. Grants are scoped and can be reviewed or revoked in the client.
This permission layer is separate from server authentication. Authentication controls who can connect. Tool permissions control what an agent may do after connecting.
External tool modules
Prokop loads user-prepared tools from its configured tools directory. The default is ~/.prokopai/tools/; prokop init --tools-path <path> stores another path in config.json, and PROKOPAI_TOOLS_PATH overrides it. Prokop does not download tools, install their dependencies, manage their builds, update them, or remove them for you.
Place each extension in its own directory:
~/.prokopai/tools/
my-tool/
tool.ts
package.json # optional, dependencies must already be prepared
VERSION # optional
The runtime loads the entry recorded by an existing .install-manifest.json, then falls back to tool.js and tool.ts. Restart the server when you need an immediate guaranteed reload.
Tool contracts come from @capekai/tool. A minimal TypeScript tool exports a definition and an execute function:
import type { ToolContext, ToolDefinition, ToolResult } from '@capekai/tool';
export const definition: ToolDefinition = {
name: 'word-count',
description: 'Count words in a string.',
inputSchema: {
type: 'object',
properties: {
text: { type: 'string' },
},
required: ['text'],
},
};
export async function execute(
input: { text: string },
_ctx: ToolContext,
): Promise<ToolResult> {
const count = input.text.trim().split(/\s+/).filter(Boolean).length;
return { success: true, result: { count } };
}
External tools should validate input and return the shared ToolResult contract. Use ctx.ask() when an operation needs permission or structured input.