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.