How-To · 15 min

Krew tools & building your own

Krew is Kaptain's toolbelt: everything a model can do beyond talking. This page maps the families, explains the switches and the approval gate, and shows the supported paths to adding your own tools.

The tool families

FamilyTools
Code intelligence (KodeGraph)kodegraph_search / _explore / _context / _callers / _callees / _impact / _node / _files / _index / _status
Filesfile_read / file_search / file_write / file_edit / patch_apply
Shell · tests · gitcli_exec / test_run / git_op
Webweb_search / web_fetch / web_fetch_raw / web_extract
Delegation (local models)delegate / delegate_batch / delegate_status / assemble
Skillsskill_list / skill_load
Memory · sessionremember / session_recall
Agents (A2A)agent_list / invoke_agent + agent_<name> per granted sub-agent
Workflow · misctodo / time_now / ask_user / agent_cards / vision_analyze
Modelskaptain_models / kaptain_chat

The same belt is what kaptain mcp serves to external CLIs as kaptain-engine (MCP guide).

Switches and the approval gate

How tools appear to models

Build your own tools

Your tool is a program that speaks MCP — any language, any SDK. Three supported ways to plug it in:

  1. Connect it as an MCP server — the standard path. kaptain mcp add mytool -- /path/to/mytool (or the Krew UI). Local stdio or hosted HTTP both work. Full walkthrough: Connect MCP servers.
  2. Ship it inside a Kapsule — give the kapsule an mcp section ({"mcp":{"command":["/path/to/mytool"]}}) and the folder becomes a self-contained unit: your tool server, plus optionally the agent and skills that use it, dropped into kapsules/ as one reviewable piece.
  3. Drop an executable into plugins/ in the data folder — Kaptain runs it as <binary> mcp and registers whatever it serves. The zero-ceremony path for a quick local tool (kept for compatibility; prefer 1 or 2).

However they arrive, your tools land in the same catalog, get the same per-tool switch, and pass the same approval gate as the built-ins — a model can't tell the difference, and neither has to.

What doesn't exist (on purpose)

Agent-readable version: index.md · Every claim on this page was exercised on a real install before being written. Something missing that cost you time? That is a documentation bug — tell us.