Skip to main content

Tools

Tools are how the model takes actions on your machine: read a file, run a shell command, search the web, query a database. Kenaz ships built-ins and connects to any Model Context Protocol (MCP) server you point it at.

Built-in tools

Built-in tools are shipped with the harness binary. The shell and network tools have an explicit on/off switch in the Tools view and are off by default. The filesystem tools don't have a separate switch — they're governed by the permission prompt at call time. kenaz__save_artifact and kenaz__update_artifact are on by default.

ToolWhat it doesGated byDefault
kenaz__read_fileRead a file by pathFilesystem-read permissionPermission-gated
kenaz__list_dirList a directory's entriesFilesystem-read permissionPermission-gated
kenaz__globGlob-match files across a directory treeFilesystem-read permissionPermission-gated
kenaz__grepIn-process regex search across filesFilesystem-read permissionPermission-gated
kenaz__write_fileAtomically create or overwrite a fileFilesystem-write permissionPermission-gated
kenaz__edit_fileReplace a substring in an existing file (requires a prior read_file call in the session)Filesystem-write permissionPermission-gated
kenaz__bashRun a shell commandTools-view switch + Shell permissionOff
kenaz__web_searchWeb search via your configured providerTools-view switch + Network permissionOff
kenaz__web_fetchFetch arbitrary HTTP URLsTools-view switch + Network permissionOff
kenaz__save_artifactPersist a generated artifact to the Artifacts tab(no permission needed)On
kenaz__update_artifactRevise an existing artifact in place(no permission needed)On

Each tool call is gated by permissions — see that page for how to pre-grant categories or paths so the model isn't pinging you constantly.

MCP — Model Context Protocol

MCP is the open spec for how AI clients (like Kenaz) connect to external tool/data servers. There are hundreds of MCP servers — official ones from major SaaS vendors, plus a long tail of community servers.

For step-by-step install instructions, examples (Filesystem, GitHub, Postgres, Slack, Docker-based, custom Python), JSON-config import, per-project configs, and how to write your own server, see Installing MCP servers.

The official catalog: github.com/modelcontextprotocol/servers.

Connecting an MCP server

Tools view → Add MCP server.

Three transports are supported:

  • stdio — Kenaz spawns the server as a child process and talks over stdin/stdout. The most common pattern; fits anything you can run with npx or uvx.
  • HTTP — point at a URL the server is listening on. Use for servers running as system services or in your team's infrastructure.
  • SSE — server-sent events over HTTP. Used by some hosted MCP services.

For stdio servers, the command is what you'd run in a terminal:

# Filesystem (sandboxed to a path)
npx -y @modelcontextprotocol/server-filesystem /Users/you/code

# GitHub
npx -y @modelcontextprotocol/server-github

# Slack
npx -y @modelcontextprotocol/server-slack

You can usually copy these straight from the server's README.

Credentials for MCP servers

Some MCP servers need API keys (GitHub, Slack, Google Drive, …). Kenaz handles this two ways:

  • Env vars on spawn. Type GITHUB_TOKEN=ghp_… in the env section of the server config; Kenaz writes it to the keychain and re-injects on spawn. Plaintext only ever exists in memory while the child process is alive.
  • OAuth flow. Some servers (Notion, Slack, Google Drive) use the harness's credential resolver to mint per-spawn tokens via OAuth. Kenaz drives the OAuth flow once; subsequent spawns get fresh tokens automatically.

Tool discovery

When you connect an MCP server, Kenaz pulls its tool list and shows it in the Tools view. Each tool can be:

  • Enabled by default — the model sees it on every session.
  • Available — the model only sees it if you turn it on in the session.
  • Disabled — never exposed.

The default for newly-discovered tools is Available (not Enabled) — so the model can't accidentally call a Slack-message-sending tool on its first turn. Promote to Enabled once you've vetted the tool.

Per-session tool selection

In the chat header → Tools dropdown — toggle individual tools on/off for that session. Useful when you want a focused agent (e.g. "filesystem only, no shell") without permanently disabling tools globally.

For most users:

  • Filesystem (@modelcontextprotocol/server-filesystem) — scoped reads/writes within a path. Better than the built-in for project work because you can restrict the root and control paths declaratively.
  • GitHub (@modelcontextprotocol/server-github) — issues, PRs, commits.
  • Web fetch (@modelcontextprotocol/server-fetch) — HTTP fetch for arbitrary URLs.

For developers:

  • SQLite / Postgres — query a local DB.
  • Memory (@modelcontextprotocol/server-memory) — persistent fact storage across sessions, useful for long-running agents.

For knowledge workers:

  • Notion / Slack / Google Drive — read your documents, summarize threads.