gemini-cli-bridge
Integrates with Google's Gemini AI model and Google Search, allowing AI agents to send prompts, perform web fetches, and execute Google searches through the Gemini CLI, with structured JSON responses.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gemini-cli-bridgeprompt: write a short story about a robot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Gemini CLI MCP Bridge
[English] | 简体中文
A tiny bridge that exposes your local Gemini CLI as an MCP (Model Context Protocol) stdio server. It wraps common Gemini CLI flows and adds handy file/network utilities for tools-capable clients like Codex CLI and Claude Code.
Note: In client UIs and configs, the server is displayed as "Gemini" while the command remains gemini-cli-bridge (or uvx --from . gemini-cli-bridge).
Features
Standard MCP (stdio) server
Thin wrappers for common Gemini CLI flows: version, prompt, WebFetch/Search, MCP management
Utilities: read/write files, list folders, simple web fetch, text search, optional Shell (disabled by default)
Runs with uv/uvx without manually installing dependencies
Related MCP server: Gemini CLI MCP/OpenAI Bridge
Prerequisites
Python 3.10+ (3.11+ recommended)
Gemini CLI installed and authenticated (used to call the actual model)
On macOS, ensure Homebrew bin is in PATH:
/opt/homebrew/bin
Quick checks:
python3 --version
which gemini && gemini --versionInstall & Run
Quick install (PyPI)
pip
pip install gemini-cli-bridgeStart:
gemini-cli-bridge(Ctrl+C to exit)
pipx (isolated)
pipx install gemini-cli-bridgegemini-cli-bridge
Clone first:
git clone https://github.com/chaodongzhang/gemini_cli_bridge.git
cd gemini_cli_bridgeClone repository (for dev workflows):
git clone https://github.com/chaodongzhang/gemini_cli_bridge.git
cd gemini_cli_bridgeFrom source (dev), install as a global tool via uv:
uv tool install --from . gemini-cli-bridge
# Verify (should work from any directory)
gemini-cli-bridgeAdd uv tools dir to PATH if needed.
macOS (zsh):
# Typically: $HOME/Library/Application Support/uv/tools/bin echo 'export PATH="$HOME/Library/Application Support/uv/tools/bin:$PATH"' >> ~/.zshrc && source ~/.zshrcLinux: usually
~/.local/bin.
One-off try (uvx, no install):
uvx --from . gemini-cli-bridgeDirect run (repo checkout):
python3 ./gemini_cli_bridge.pyRelease downloads
Prebuilt wheels and source tarballs are available on GitHub Releases: https://github.com/chaodongzhang/gemini_cli_bridge/releases
Notes
Runs in foreground; press Ctrl+C to stop.
On macOS ensure
/opt/homebrew/binis on PATH.uv tools bin (if needed):
$HOME/Library/Application Support/uv/tools/bin.
Use with common clients (stdio)
Examples below use stdio; adjust command/paths for your system.
1) Codex CLI (global TOML)
~/.codex/config.toml:
[mcp_servers.Gemini]
command = "gemini-cli-bridge"
args = []
[mcp_servers.Gemini.env]
NO_COLOR = "1"Notes:
As of 2025-09-10, Codex only supports a global
~/.codex/config.toml.Restart Codex after changes. Use
gemini_versionas a quick health check.
2) Claude Code (VS Code extension)
User Settings (JSON):
{
"claude.mcpServers": {
"Gemini": {
"command": "gemini-cli-bridge",
"args": [],
"env": { "NO_COLOR": "1" }
}
}
}3) Generic MCP CLI (for local testing)
npm i -g @modelcontextprotocol/cli
mcp-cli --server gemini-cli-bridge4) Claude Desktop (optional)
{
"mcpServers": {
"Gemini": {
"command": "gemini-cli-bridge",
"args": [],
"env": { "NO_COLOR": "1" }
}
}
}Typical usage (from clients)
Version:
gemini_versionNon-interactive prompt:
gemini_prompt(prompt=..., model="gemini-2.5-pro")Advanced prompt with attachments/approval:
gemini_prompt_plus(...)Web fetch:
gemini_web_fetch(prompt, urls=[...])Manage Gemini CLI MCP:
gemini_mcp_list / gemini_mcp_add / gemini_mcp_removeGoogle search:
GoogleSearch(query="...", limit=5)(defaults to CLI built-in)Alias to avoid tool name conflicts:
GeminiGoogleSearch(...)(same args asGoogleSearch)
Return shape note (wrappers):
Gemini CLI wrappers now return structured JSON:
{ "ok", "exit_code", "stdout", "stderr" }. Tools affected:gemini_version,gemini_prompt,gemini_prompt_plus,gemini_prompt_with_memory,gemini_search,gemini_web_fetch,gemini_extensions_list,gemini_mcp_list/add/remove.
Notes about GoogleSearch:
By default it uses Gemini CLI’s built-in GoogleSearch (no Google API keys needed, assuming you’re logged in to the CLI).
If both
GOOGLE_CSE_IDandGOOGLE_API_KEYare set (env or args), it switches to Google Programmable Search (CSE).You can force the mode via
mode:"gemini_cli" | "gcs" | "auto"(default auto).
MCP tool call examples
gemini_prompt_plus payload example:
{
"name": "gemini_prompt_plus",
"arguments": {
"prompt": "hello",
"extra_args": ["--debug", "--proxy=http://127.0.0.1:7890"]
}
}Minimal GoogleSearch payload (defaults to CLI built-in):
{
"name": "GoogleSearch",
"arguments": {
"query": "Acme Corp",
"limit": 5
}
}Use the alias to avoid naming conflicts in some IDEs:
{
"name": "GeminiGoogleSearch",
"arguments": {
"query": "today ai industry news",
"limit": 5
}
}Force built-in mode (no keys):
{
"name": "GoogleSearch",
"arguments": {
"query": "today ai industry news",
"limit": 5,
"mode": "gemini_cli"
}
}Troubleshooting startup/handshake timeouts
Prefer installed command over
uvx --from .to avoid cold-start dependency resolution.Increase client startup/handshake timeouts if supported.
PATH issues on macOS: ensure
/opt/homebrew/binor set PATH in client env.
Make sure it uses CLI built-in search (avoid unintended CSE mode)
Possible causes:
Another tool named
GoogleSearchfrom a different server/extension.Your environment sets both
GOOGLE_API_KEYandGOOGLE_CSE_ID, which switches this bridge into CSE mode.
What to do:
Explicitly clear two vars in your MCP config
Codex (~/.codex/config.toml):
[mcp_servers.Gemini]
command = "gemini-cli-bridge"
args = []
[mcp_servers.Gemini.env]
PATH = "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin"
GOOGLE_API_KEY = ""
GOOGLE_CSE_ID = ""Claude Code (VS Code settings JSON):
{
"claude.mcpServers": {
"Gemini": {
"command": "gemini-cli-bridge",
"args": [],
"env": { "GOOGLE_API_KEY": "", "GOOGLE_CSE_ID": "" }
}
}
}Disambiguate in prompts
Ask explicitly: “Use GoogleSearch from MCP server ‘Gemini’ …”.
Verify the path taken
Call
gemini_version(should returngemini --version).Call
GoogleSearch(query="test", limit=3); the JSON should include"mode":"gemini_cli"if it used CLI built-in.
Avoid tool name conflicts (optional)
If another GoogleSearch exists in your IDE, consider renaming this tool to GeminiGoogleSearch in code to remove ambiguity.
Developer Notes
Standardized gemini wrapper output
Use the helper
_run_gemini_and_format_output(cmd, timeout_s)for allgemini_*tools to return a consistent JSON shape:{ ok, exit_code, stdout, stderr }.When adding new Gemini CLI wrappers, focus on building the
cmdlist and delegate execution/formatting to the helper.
WebFetch behavior
Uses
requestsand respectsGEMINI_BRIDGE_MAX_OUTfor truncation viaget_max_out().Blocks private/loopback/link-local targets using
_is_private_url.Returns
{ ok, status, content?, error? }.
Running tests
pytest -qafter installing dev deps, or run without installing by settingPYTHONPATH:PYTHONPATH=.::tests pytest -q
A lightweight
tests/fastmcp.pyshim is included so tests run without installing external packages.
Publishing
GitHub Release: push a tag like
v0.1.xto trigger artifact build and release.PyPI: supports Trusted Publisher (OIDC). Push a tag
v*to publish viapypa/gh-action-pypi-publish(no API token needed once Trusted Publisher is configured on PyPI).See
CHANGELOG.mdfor version history.
Configuration (env)
GEMINI_BRIDGE_MAX_OUT(int > 0): unified output truncation length. Default 200000.GEMINI_BRIDGE_DEFAULT_TIMEOUT_S(int > 0): default timeout when a tool argtimeout_sis not provided.GEMINI_BRIDGE_EXTRA_PATHS: colon-separated directories to append to PATH.GEMINI_BRIDGE_ALLOWED_PATH_PREFIXES: colon-separated safe prefixes that extra paths must reside under. Defaults include/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/sbin.
Notes
PATH cannot be overridden directly by tools; only appended via the whitelist above.
Shell tool remains disabled unless
MCP_BASH_ALLOW=1.
License
MIT
Available Tools
22 toolsEditEditC
String replace; count=0 means replace all. Return JSON {"replaced": n}.
| Name | Required | Description | Default |
|---|---|---|---|
| find | Yes | ||
| path | Yes | ||
| count | No | ||
| replace | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the count=0 semantics and the return shape, but says nothing about whether the file is created if missing, what happens when find has no match, whether the operation is destructive/irreversible (despite using 'replaced: n' in the return shape), or any permission/error behavior for a file-mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with no filler and the key behavior front-loaded, so it is efficient. However the terseness tips into under-specification rather than purposeful brevity, and the return-value clause duplicates the existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return-value sentence is redundant and could be dropped, yet the description still omits critical context for a file-mutating tool with zero annotations and zero schema descriptions. Nothing explains file resolution, error behavior, or how this differs from sibling write/read tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only clarifies one of four parameters ('count=0 means replace all'). The semantics of path, find and replace are left entirely to the parameter names, and the description never states that path is a file, whether wildcards/recursion apply, or how find/replace strings are matched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'String replace', which is a specific operation but never states the resource: that it edits a file at a path. Against siblings like WriteFile, ReadFile and SearchText, an agent cannot tell from the description alone that this performs in-place file text substitution rather than an in-memory or query operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no reference to any alternative such as WriteFile for whole-file writes or SearchText for locating matches. The tool name 'Edit' is generic and the description offers nothing to disambiguate the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
FindFilesFindfilesC
Find files; return JSON array of paths. Supports recursion.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | . | |
| pattern | No | * | |
| recursive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a read-only listing and states the return type, but says nothing about error behavior when no files match, whether traversal follows symlinks, or how permissions problems surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words, and the core purpose plus return type are front-loaded. The second sentence is thin but does not bloat the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be re-explained, but with zero annotation coverage and 0% parameter description coverage the definition leaves the two most important parameters ('base' and 'pattern') undocumented. For a three-parameter search tool this is under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across three parameters, and the description only touches one of them ('Supports recursion'). The meaning of 'base' (root directory, default '.') and 'pattern' (glob vs regex, default '*') is left entirely undefined in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Find files') and adds the return shape ('JSON array of paths'), so the operation is unambiguous. It does not distinguish the tool from siblings such as ReadManyFiles, ReadFolder, or SearchText, which also surface files or matches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage statement is 'Supports recursion', which describes a capability rather than a selection condition. There is no guidance on when to pick FindFiles over ReadFolder, ReadManyFiles, or Shell, and no mention of prerequisites such as glob syntax.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_extensions_listGemini Extensions ListB
List available Gemini CLI extensions (gemini --list-extensions).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this wraps the CLI command 'gemini --list-extensions', which implies a read-only enumeration, but says nothing about auth/permission needs, whether the CLI must be installed, or failure modes. With an output schema present, return values need not be explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the action and resource, with the parenthetical command adding useful grounding without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, side-effect-free listing tool with an output schema, the description covers what is needed to select and call it. The missing piece is any treatment of the timeout_s parameter and basic operational context (CLI availability/auth).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter timeout_s has 0% schema description coverage and is never mentioned in the description, so an agent gets no meaning, units, or default behavior for it beyond the schema's null default. For a 1-parameter tool with no compensating text, this is a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List available Gemini CLI extensions') and even names the underlying command, so the agent knows this enumerates extensions rather than MCP servers or prompts. It does not explicitly contrast with the closest sibling (gemini_mcp_list), but the resource is distinct enough to disambiguate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, no prerequisites, and no pointer to alternatives such as gemini_mcp_list. The name implies a read-only listing, but that is inference rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GeminiGoogleSearchGeminigooglesearchC
Alias to GoogleSearch to avoid tool name collisions in some IDEs.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| limit | No | ||
| model | No | gemini-2.5-pro | |
| query | Yes | ||
| cse_id | No | ||
| api_key | No | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that this is a duplicate of GoogleSearch; it says nothing about read-only semantics, the api_key/cse_id auth requirements implied by the schema, rate limits, or return behavior. One meaningful trait (duplicate tool) is given, but the behavioral picture is largely blank.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the alias relationship front-loaded and no filler. It is efficient, though the brevity comes at the cost of substance rather than being genuinely tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but with 7 undocumented parameters, no annotations, and no explanation of the search operation itself, the definition is far too thin for an agent to invoke it correctly beyond passing a bare query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Seven parameters with 0% schema description coverage and zero mention in the description. Non-obvious parameters like mode, cse_id, api_key, and timeout_s are entirely undocumented, leaving the agent no way to know what values are valid or required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states this is an alias to GoogleSearch, which tells the agent it performs the same function, but it never says the function is web search. The relationship to GoogleSearch provides routing value, yet the actual verb+resource is only inferable if the agent already knows what GoogleSearch does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains why the alias exists ('avoid tool name collisions in some IDEs') but gives no guidance on when to pick this over GoogleSearch or the other search siblings (gemini_search, WebFetch). The agent must guess whether the two are interchangeable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_mcp_addGemini Mcp AddB
Add an MCP server via gemini CLI (gemini mcp add ...). transport: stdio|http|sse; for stdio pass executable, for http/sse pass URL. headers are only valid for http/sse. Returns CLI stdout.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| name | Yes | ||
| scope | No | project | |
| trust | No | ||
| headers | No | ||
| env_vars | No | ||
| timeout_s | No | ||
| transport | No | stdio | |
| timeout_ms | No | ||
| description | No | ||
| exclude_tools | No | ||
| include_tools | No | ||
| command_or_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the return contract ('Returns CLI stdout') and a real behavioral constraint (headers only valid for http/sse), and the verb 'Add' signals a mutation. It is silent on persistence of the config, conflict behavior for duplicate names, permission needs, and side effects on scope, which for a 13-parameter mutating CLI wrapper leaves meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, purpose and the CLI anchor front-loaded, followed by the transport rules and return contract. The terse 'transport: stdio|http|sse' shorthand is efficient and no sentence is wasted. Minor density: cramming two conditional rules into one sentence slightly reduces readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained and the description reasonably does not. But this is a 13-parameter tool with 0% schema description coverage, and the majority of parameters (scope defaulting to 'project', trust, include/exclude_tools, env_vars, timeouts) are unexplained anywhere — an agent cannot confidently populate them from this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does add real meaning for the most critical parameters: it defines the transport enum values and, crucially, explains that command_or_url means an executable under stdio but a URL under http/sse — semantics not derivable from the schema. It still leaves roughly ten parameters (scope, trust, args, env_vars, timeouts, include/exclude_tools, description) completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource — 'Add an MCP server via gemini CLI (gemini mcp add ...)' — which clearly distinguishes it from siblings like gemini_mcp_list and gemini_mcp_remove. It is not merely a restatement of the name; it identifies the concrete CLI operation performed. It stops short of a 5 because it never explicitly names the sibling tools it complements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional usage rules for parameters ('for stdio pass executable, for http/sse pass URL' and 'headers are only valid for http/sse'), which is genuine how-to guidance. However, there is no explicit statement of when to choose this tool over gemini_mcp_list/remove, nor any prerequisites such as needing the CLI installed or the config scope implications. Usage is implied by the verb, not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_mcp_listGemini Mcp ListB
List MCP servers configured in gemini CLI (gemini mcp list). Scope: user|project.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. 'List' implies a safe read, but the description says nothing about auth requirements, failure modes, or what timeout_s does. It only hints at scope semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and followed by the scope constraint. No filler; every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. However, with 0% parameter coverage the description leaves timeout_s unexplained and gives no operational context (prerequisites, failure behavior) for a tool an agent may invoke across many MCP workflows.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It usefully constrains the scope parameter to user|project (an enum-like value the bare string schema does not convey), but timeout_s is entirely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'List MCP servers configured in gemini CLI', plus the underlying CLI command. The 'list' verb clearly distinguishes it from sibling write tools like gemini_mcp_add and gemini_mcp_remove, though those siblings are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance; the agent must infer that this is the read counterpart to gemini_mcp_add/remove. No prerequisites (e.g., gemini CLI installed/authenticated) are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_mcp_removeGemini Mcp RemoveB
Remove an MCP server from gemini CLI (gemini mcp remove ).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| scope | No | project | |
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says the tool removes an MCP server but does not disclose whether removal is permanent, what happens if the server does not exist, permission requirements, or how scope affects the operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It includes the underlying CLI form, which is useful and appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and return values need not be explained, the description is still incomplete for a three-parameter mutation tool with no annotations and no schema descriptions. It omits parameter meanings and behavioral consequences that an agent needs in order to invoke it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it only mentions the required name parameter via CLI syntax. It does not explain the scope parameter or the timeout_s parameter, leaving two of three parameters undocumented beyond raw schema types and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: remove an MCP server from Gemini CLI. It is immediately distinguishable from the sibling add/list MCP tools without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, prerequisites, or route to alternatives such as gemini_mcp_add or gemini_mcp_list. The operation is implied by the verb, but no conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_promptGemini PromptC
Run local gemini CLI non-interactively; return structured JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | gemini-2.5-pro | |
| prompt | Yes | ||
| timeout_s | No | ||
| extra_args | No | ||
| include_dirs | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It discloses the non-interactive mode and JSON output, which is useful, but says nothing about authentication/credentials needed by the CLI, side effects (does it read include_dirs and touch the filesystem?), rate limits, cost, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action and output are stated immediately. It is efficient, though arguably under-sized for a five-parameter CLI wrapper.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, but the tool is a relatively complex CLI wrapper with 5 undocumented parameters and no annotations. Key context an agent needs — credential requirements, sandbox/side-effect profile, and parameter behavior — is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across five parameters (model, prompt, timeout_s, extra_args, include_dirs), and the description adds no parameter meaning at all. Obscure parameters like extra_args and include_dirs are left entirely undefined in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states an action and resource ('run local gemini CLI non-interactively') and an output trait ('return structured JSON'), so the general purpose is inferable. However, in a cluster with gemini_prompt_plus, gemini_prompt_with_memory, and gemini_search, it does not establish what makes this the base prompting entry point versus its siblings, leaving the agent to guess from names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives, prerequisites, or the conditions under which this should be chosen over gemini_prompt_plus or gemini_prompt_with_memory. 'Non-interactively' hints at a batch use case but is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_prompt_plusGemini Prompt PlusC
Advanced non-interactive run with attachments/approval/checkpoint/dirs/flags.
attachments: file/dir paths appended as @path at the end of prompt.
approval_mode: default|auto_edit|yolo; if unset and yolo=True, add --yolo.
| Name | Required | Description | Default |
|---|---|---|---|
| yolo | No | ||
| model | No | gemini-2.5-pro | |
| prompt | Yes | ||
| timeout_s | No | ||
| extra_args | No | ||
| attachments | No | ||
| include_dirs | No | ||
| approval_mode | No | ||
| checkpointing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the approval_mode options (default|auto_edit|yolo), which hints that the tool can trigger edits requiring approval, but it never states the side effects of yolo/auto_edit, whether it writes files, or what permissions are needed — significant gaps for a CLI-invoking mutation-capable tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bullet format is compact and front-loads the summary line, but that line is a keyword dump ('attachments/approval/checkpoint/dirs/flags') rather than a clear sentence. The remaining text is terse and earns its place but is fragmentary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with 9 parameters at 0% schema coverage and only 2-3 partially covered by the description, an agent lacks enough to call this complex CLI wrapper confidently — especially regarding timeout_s, extra_args, and checkpointing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters, so the description must compensate. It explains attachments (appended as @path) and approval_mode plus the yolo interaction, but leaves model, prompt, timeout_s, extra_args, include_dirs, and checkpointing completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it is an 'Advanced non-interactive run with attachments/approval/checkpoint/dirs/flags', which names a mode (non-interactive run) and lists feature categories, but 'run' is a generic verb and it never states plainly that it invokes the Gemini model/CLI with a prompt. It gestures at being a richer variant of the sibling gemini_prompt without making the distinction explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this over gemini_prompt, gemini_prompt_with_memory, or gemini_search, despite those siblings clearly occupying adjacent niches. The only conditional offered is internal mechanics ('if unset and yolo=True, add --yolo'), not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_prompt_with_memoryGemini Prompt With MemoryC
Inject memory_paths as high-priority context, then run non-interactively.
memory_paths: authoritative project/system memory (e.g., GEMINI.md, conventions).
attachments: additional files/dirs injected as @path.
| Name | Required | Description | Default |
|---|---|---|---|
| yolo | No | ||
| model | No | gemini-2.5-pro | |
| prompt | Yes | ||
| timeout_s | No | ||
| extra_args | No | ||
| attachments | No | ||
| include_dirs | No | ||
| memory_paths | No | ||
| approval_mode | No | ||
| checkpointing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that memory_paths override as 'high-priority context' and that the run is non-interactive, which is useful. However, it is silent on the safety-relevant parameters yolo, approval_mode, checkpointing, and timeout_s, so the agent cannot gauge autonomy or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight lines that front-load the core action, with the parameter notes as crisp bullets. No filler. Slightly terse given the parameter breadth, but well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described. But for a 10-parameter tool with zero schema coverage and no annotations, covering only 2 parameters leaves the definition materially incomplete, especially around the autonomy controls (yolo, approval_mode) an agent would need before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains only memory_paths and attachments, leaving 8 of 10 parameters (yolo, approval_mode, model, timeout_s, extra_args, include_dirs, checkpointing, prompt) completely undocumented in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific compound action (inject memory_paths as high-priority context, then run the prompt non-interactively) on a named resource. The 'with_memory' framing distinguishes it conceptually from the plain gemini_prompt sibling, but the description never names that sibling explicitly to confirm the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clarifies that memory_paths are treated as authoritative context, which hints at when this tool is preferred, but gives no explicit when-to-use/when-not guidance and never contrasts it with gemini_prompt or gemini_prompt_plus. Nothing tells the agent which sibling to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_searchGemini SearchC
Lightweight search: guide the model to use built-in GoogleSearch and cite sources. Note: tool invocation is model-driven; default yolo=True to avoid interactive prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| yolo | No | ||
| model | No | gemini-2.5-pro | |
| query | Yes | ||
| timeout_s | No | ||
| extra_args | No | ||
| include_dirs | No | ||
| approval_mode | No | ||
| checkpointing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose two useful traits: invocation is model-driven and yolo=True avoids interactive prompts. However, it says nothing about approval_mode, checkpointing side effects, timeout behavior, or any permission/rate constraints, which matters for an 8-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler, and the core purpose is front-loaded ahead of the operational note. Efficient and readable, though the note could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, but with no annotations, 8 parameters at 0% coverage, and undocumented behavioral flags like approval_mode and checkpointing, the description is not complete enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 8 parameters, so the description must compensate, but it only explains the yolo default. model, timeout_s, extra_args, include_dirs, approval_mode, and checkpointing are left entirely unexplained in both schema and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Lightweight search' that instructs the model to use built-in GoogleSearch and cite sources. That is clear enough to understand the tool's function, but it does not distinguish itself from siblings like GoogleSearch or GeminiGoogleSearch, leaving the agent to guess which search variant applies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the 'Note' about model-driven invocation and defaulting yolo=True to avoid interactive prompts, which is invocation mechanics rather than when-to-use. There is no statement of when this search should be chosen over gemini_web_fetch, GoogleSearch, or GeminiGoogleSearch, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_versionGemini VersionB
Return installed gemini CLI version (gemini --version) as JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it discloses the underlying mechanism (spawns `gemini --version`) and the return encoding (JSON), which is meaningful context. It omits that this is a non-destructive read, and says nothing about the timeout_s behavior or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the command equivalence in parentheses and the output format stated last. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained in prose. For a trivial zero-required-param probe, the description covers purpose, mechanism, and output format; only the timeout parameter is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and timeout_s is undocumented in both schema and description. The description supplies no meaning for the single parameter, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: return the installed gemini CLI version. The parenthetical '(gemini --version)' makes the exact scope unambiguous, and no sibling covers version reporting. It does not, however, contrast itself with any sibling, which caps it below 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is given, and no alternatives are named. The intent ('check what version is installed') is inferable but only implied by the description text, so it lands at the no-guidance level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gemini_web_fetchGemini Web FetchC
Convenience wrapper: inject URLs into prompt to trigger CLI WebFetch. Note: WebFetch is a CLI built-in; the model decides whether to call it.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | ||
| yolo | No | ||
| model | No | gemini-2.5-pro | |
| prompt | Yes | ||
| timeout_s | No | ||
| extra_args | No | ||
| include_dirs | No | ||
| approval_mode | No | ||
| checkpointing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It discloses one useful trait: invocation may not actually trigger a fetch because the model decides. But it says nothing about the effects of yolo, approval_mode, checkpointing, include_dirs, or timeouts, which are potentially impactful behavioral knobs on a 9-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the mechanism and followed by the caveat. No filler, though the caveat sentence could be worked into a fuller description rather than standing alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter wrapper with a rich output schema and no annotations, the description is far too thin. It need not explain return values, but it must explain the safety-relevant and behavior-altering parameters it leaves entirely undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 9 parameters. The description only gestures at urls and prompt; the remaining seven parameters (yolo, model, timeout_s, extra_args, include_dirs, approval_mode, checkpointing) are undocumented in both schema and description. No compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it injects URLs into a prompt to trigger CLI WebFetch, which is a recognizable verb+resource. However, 'convenience wrapper' is meta rather than descriptive, and the second sentence muddies the purpose by stating that the model, not the caller, decides whether WebFetch actually runs. An agent cannot confidently tell what calling this tool accomplishes relative to the sibling WebFetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus the sibling WebFetch, gemini_prompt, or GeminiGoogleSearch. The note that WebFetch is a CLI built-in and the model decides whether to call it is a behavioral caveat, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GoogleSearchGooglesearchA
Search tool (defaults to Gemini CLI built-in GoogleSearch).
Modes:
mode="gemini_cli": force CLI built-in (no keys; requires signed-in gemini CLI)
mode="gcs": force Google Programmable Search (requires GOOGLE_CSE_ID + GOOGLE_API_KEY)
mode=None/"auto": auto-select (use gcs if both keys present, else gemini_cli)
Returns JSON:
gemini_cli: { ok: true, mode: "gemini_cli", answer: string }
gcs: { ok: true, mode: "gcs", results: [{title, link, snippet}] } on error: { ok: false, error, results? }
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| limit | No | ||
| model | No | gemini-2.5-pro | |
| query | Yes | ||
| cse_id | No | ||
| api_key | No | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does well: it names authentication requirements (signed-in gemini CLI, or GOOGLE_CSE_ID + GOOGLE_API_KEY) and describes success and error response shapes. It omits rate limits, timeouts behavior, or failure/retry characteristics, but the credential and fallback behavior is solidly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is front-loaded with the core purpose, then a compact mode list and return-value summary. It is reasonably tight, though the return-shape block partly duplicates the existing output schema and could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return-value detail is not strictly needed, and the mode logic plus credentials are covered. But with 7 parameters, no annotations, and 0% schema documentation, the unexplained limit/model/timeout_s parameters leave the definition short of complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 7 parameters, so the description must compensate. It meaningfully explains the 'mode' parameter's allowed values and the roles of cse_id/api_key, but leaves limit, model, and timeout_s completely undefined in both schema and prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (search tool) and elaborates its three operating modes with concrete behavior for each. It is clear what the tool does, but it never distinguishes itself from near-identical siblings such as GeminiGoogleSearch or gemini_search, leaving the agent to guess which search tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit mode-selection rules ('use gcs if both keys present, else gemini_cli') and names the credential prerequisites for each mode, which is useful decision logic. However, it gives no guidance on when to use this tool versus the other search siblings in the namespace, so usage is only partially covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ReadFileReadfileB
Read a text file (utf-8, ignore errors). Raises if missing.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose several real traits: utf-8 encoding, errors are ignored, and a missing file raises. However, it leaves permissions, size limits, and directory-path handling unstated, and 'ignore errors' is ambiguous about what errors are being swallowed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and zero filler. Every clause (encoding, error policy, failure mode) adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and for a one-parameter read tool the description covers encoding, error handling, and the missing-file failure mode. Only the path parameter's semantics remain unaddressed, which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description never names or characterizes the single 'path' parameter. 'Read a text file' weakly implies the path targets a file rather than a folder, but nothing is said about relative vs absolute paths or expected format, so the description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read a text file', with added scope qualifiers (utf-8, missing-file behavior). An agent can tell it apart from WriteFile/Edit, but the description never distinguishes it from the other read-oriented siblings (ReadManyFiles, ReadFolder, Shell), which is the main ambiguity for a file-reading tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. The phrase 'a text file' weakly implies single-file scope, but nothing tells the agent when to prefer this over ReadManyFiles for multiple files, ReadFolder for directories, or Shell for binary/other content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ReadFolderReadfolderC
Read a directory; return JSON array of entries (optionally recursive).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| recursive | No | ||
| max_entries | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It says the result is a JSON array of entries but omits the default max_entries=2000 truncation cap, permission/error behavior, and whether entries include metadata (size, type, mtime) or just names — all material for a directory read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the action, the output format, and the recursion option all land immediately. It is arguably too terse for the disclosure burden it carries, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, 0% schema coverage, and a truncating max_entries parameter, the description leaves key operational facts unstated; the existence of an output schema excuses it from explaining return values, but not from explaining path defaults and entry-limit behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters, but it only gestures at 'recursive'. The 'path' default of '.' and especially the 'max_entries' cap of 2000 (a silent truncation risk) are undocumented in both the schema and the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a directory') plus the return shape ('JSON array of entries'), which separates it from ReadFile/ReadManyFiles at a glance. It does not explicitly name or contrast with the closest sibling, FindFiles, which also walks directories, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(optionally recursive)' is the only usage signal; there is no guidance on when to prefer this over FindFiles, SearchText, or ReadManyFiles, and no stated prerequisites or exclusions. An agent must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ReadManyFilesReadmanyfilesC
Read multiple files; return JSON object {path: content}.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | ||
| ignore_missing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the read operation and JSON return, but says nothing about missing-file behavior, permissions, or the ignore_missing flag.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the action and resource. It has no filler, though it omits necessary parameter detail rather than being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be fully explained. However, with no annotations and 0% parameter coverage, the description leaves ignore_missing semantics and error behavior unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters. The description implies paths is a list of files but never explains ignore_missing or its default true behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb 'Read' and resource 'multiple files', and notes the return shape. It distinguishes itself from ReadFile by scope, but does not explicitly name or differentiate from siblings like ReadFolder or FindFiles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no alternative tools named, and no conditions such as when to prefer it over ReadFile or ReadFolder. Usage is only implied by the name and the phrase 'multiple files'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SaveMemorySavememoryC
Save content to path; mode=append|overwrite; return JSON {ok, bytes}.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | append | |
| path | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the mode options and the return shape, which is useful, but says nothing about the destructive effect of overwrite, whether the path is created if missing, permission requirements, or where 'memory' actually resides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the action front-loaded and no filler; the mode choices and return shape are packed in efficiently. It is arguably compressed to the point of dropping needed context, but nothing present is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (3 params, flat schema) and an output schema exists, so return values need not be explained. Still, with zero annotations and no sibling differentiation, the description is only minimally adequate for a write-style operation whose blast radius and target store go unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it only does so for one of three parameters: it supplies the 'append|overwrite' enum values that the schema itself lacks. The meaning of 'path' in a memory context and the role of 'content' remain undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Save content to path', which tells an agent exactly the operation. However, it offers no differentiation from close siblings like WriteFile, Edit, or gemini_prompt_with_memory, so an agent cannot tell whether this writes to a memory store or the filesystem.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which alternative (WriteFile, Edit, gemini_prompt_with_memory) to prefer. The mode parameter carries implicit usage semantics but the description never frames a selection condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
SearchTextSearchtextC
Search text within a file; return JSON array [{line, text}].
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| pattern | Yes | ||
| case_insensitive | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden, and it delivers little: it does not say whether `pattern` is a literal substring or a regular expression, whether matching is per-line, whether large files are truncated, or what happens on no matches. It only discloses the return shape, which the output schema already covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact, front-loaded sentence with no filler. The return-shape clause is largely redundant given the output schema, but it costs little and is tucked at the end rather than leading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema excuses the description from explaining return values, and it has a 3-param surface. Still, the ambiguities that would most change how an agent calls it — regex vs. literal matching, path-target constraints, case sensitivity — are absent from both schema and description, leaving the tool under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across all 3 parameters, so the description must compensate — but it says nothing about `path` (file vs. directory), nothing about whether `pattern` is regex or literal, and never mentions `case_insensitive` or its default. The word 'text' offers only the faintest hint about pattern semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (text within a file), which distinguishes it from ReadFile, FindFiles, and Shell for the likely use case. However, it does not explicitly differentiate itself from grep-via-Shell or from FindFiles, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no mention of the sibling alternatives (FindFiles for filename matching, Shell for general-purpose grep, ReadFile for full contents), and no prerequisites. The agent must infer the routing entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ShellShellB
Execute a shell command; return JSON {code, stdout, stderr}. Disabled by default; set MCP_BASH_ALLOW=1 to enable.
| Name | Required | Description | Default |
|---|---|---|---|
| cmd | Yes | ||
| cwd | No | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the return shape and the enablement flag, but for an arbitrary-code-execution tool it omits the critical traits: that it can mutate or delete anything on the host, run network operations, and has no stated sandboxing or permission model. The 'Disabled by default' note is the only safety signal, which is far short of what this tool requires.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short clauses with zero padding; the purpose is front-loaded and the operational constraint follows. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not explain return values (though it helpfully does). What is missing for a high-risk, zero-annotation, three-parameter tool is any warning about destructiveness or execution scope, and any semantics for cwd/timeout_s. Adequate at minimum but with clear gaps given the tool's risk profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description mentions none of the three parameters. 'cmd' is obvious from context, and 'cwd'/'timeout_s' are fairly self-describing names, but there is no statement of default working directory, units or default for the timeout, or what happens when the timeout fires. The description does not compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute a shell command') that is unmistakably distinct from every sibling, which are all file/search/memory operations. An agent can immediately tell this is the arbitrary-command tool and not a filesystem helper.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an availability prerequisite ('Disabled by default; set MCP_BASH_ALLOW=1 to enable'), which is genuinely useful for knowing whether the tool will work at all. However it never says when to prefer Shell over siblings like ReadFile, WriteFile, or SearchText, nor any when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
WebFetchWebfetchB
Minimal web fetch using the requests library; return JSON {ok,status,content?,error?}.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| timeout_s | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the return shape ({ok,status,content?,error?}) and that it is a plain 'requests' fetch (no browser/JS rendering), but says nothing about auth, redirects, content-type handling, or failure modes. Helpful but far from complete for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the core action and ending with the return contract. No filler; every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be restated (and the description's restatement is redundant but harmless). However, for an unannotated, 0%-coverage two-parameter tool, the description is thin on error behavior, timeouts, and invocation context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no parameter detail. The 'url' target is loosely inferable from 'web fetch,' but 'timeout_s' (its unit — seconds — and default of 15) is undocumented anywhere the agent can see from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (web fetch) and adds the implementation detail 'using the requests library,' which implicitly distinguishes it from the sibling gemini_web_fetch (a Gemini-processed fetch). It does not explicitly name or contrast the sibling, so an agent must infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Minimal' hints at the lightweight use case versus gemini_web_fetch, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is implied at best, leaving the agent to infer which fetch tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
WriteFileWritefileB
Write a UTF-8 text file, creating parents as needed. Return "ok".
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose useful traits — UTF-8 encoding, automatic parent-directory creation, and the "ok" return — but omits the critical question for a write tool: whether an existing file at the path is overwritten or truncated. That gap matters for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the core action front-loaded and the secondary behaviors appended. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the return value need not be explained (though it is). For a two-parameter mutation tool with no annotations and 0% schema coverage, the description is thin on overwrite semantics and path format — the details an agent actually needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning for either parameter. It does not say whether "path" may be relative or absolute, or whether "content" is raw text vs. encoded data, so the caller must guess at both.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Write a UTF-8 text file") with an extra scope detail (creates parents as needed). An agent can distinguish it from ReadFile and FindFiles, but the description does not differentiate it from the sibling Edit, which is the real ambiguity for a write tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the verb: write a file when you have a path and contents. There is no statement of when to prefer WriteFile over Edit (e.g., new file vs. modifying existing content) or any prerequisite the caller must satisfy.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
22 tool updates
v0.1.2- First observed
Edit - First observed
FindFiles - First observed
gemini_extensions_list - First observed
gemini_mcp_add - First observed
gemini_mcp_list - First observed
gemini_mcp_remove - First observed
gemini_prompt - First observed
gemini_prompt_plus - First observed
gemini_prompt_with_memory - First observed
gemini_search - First observed
gemini_version - First observed
gemini_web_fetch - First observed
GeminiGoogleSearch - First observed
GoogleSearch - First observed
ReadFile - First observed
ReadFolder - First observed
ReadManyFiles - First observed
SaveMemory - First observed
SearchText - First observed
Shell - First observed
WebFetch - First observed
WriteFile
TDQS
Scored across 22 tools
Several tool families overlap: gemini_prompt/plus/with_memory, gemini_search/GoogleSearch/GeminiGoogleSearch, and WebFetch/gemini_web_fetch. Descriptions distinguish intended use cases, but an agent still faces non-trivial selection among prompt and search variants.
Names split into a snake_case gemini_* family for CLI operations and a PascalCase family for local file/search/shell tools. This is readable but not a single predictable convention.
22 tools is on the heavy side for a CLI bridge, spanning CLI invocation, MCP management, search, file I/O, memory, and shell. The surface is broad but many tools earn their place.
Core bridge operations are covered: prompt execution, MCP add/list/remove, version/extensions, search/fetch, file read/write/search/find, memory, and shell. Minor gaps like file deletion/move or MCP update are workaroundable via shell or overwrite.
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that wraps the Gemini CLI to provide tools for executing prompts, managing chat sessions, and accessing CLI extensions. It supports both local stdio and remote SSE transports for flexible integration with MCP clients.1-
- AlicenseNot gradedqualityFmaintenanceExposes Gemini CLI's built-in tools and external MCP proxies through a unified MCP endpoint while providing an OpenAI-compatible API for Gemini models. It features configurable security modes to safely manage file system operations, web searches, and shell command execution.5 npm138Apache 2.0
- AlicenseAqualityCmaintenanceA stateless MCP server that wraps the headless Gemini CLI, providing tools to send prompts to Google's Gemini models and receive text responses. It supports both simple prompts and prompts with contextual information.2MIT
- AlicenseAqualityDmaintenanceWraps the Gemini CLI as an MCP server, enabling AI tools to perform Gemini queries, interactive sessions, and extension management via a unified tool.411MIT