Skip to main content
Glama

gpal

Python 3.12+ License: MIT MCP

An MCP server that gives your IDE or agent access to Google Gemini with autonomous codebase exploration. Your pal Gemini.

Why gpal?

When you ask gpal a question, Gemini doesn't just guess β€” it explores your codebase itself. It lists directories, reads files, and searches for patterns before answering. This makes it ideal for:

  • πŸ” Deep code analysis β€” "Find all error handling patterns in this codebase"

  • πŸ—οΈ Architectural reviews β€” "How is authentication implemented?"

  • πŸ› Bug hunting β€” "Why might this function return null?"

  • πŸ“š Codebase onboarding β€” "Explain how the request pipeline works"

  • πŸ–ΌοΈ Visual review β€” Analyze screenshots, diagrams, video via media_paths

  • πŸ“‹ Structured extraction β€” "List all API endpoints as JSON"

Related MCP server: Gemini Bridge

Features

Feature

Description

Stateful sessions

Maintains conversation history via ctx.session_id

Autonomous exploration

Gemini has tools to list, read, and search files

FileSearch

Semantic code search via Google's native FileSearch API

Gemini 3 Series

Supports Flash and Pro with unified auto mode

Context Caching

Store large code contexts to reduce costs and latency

Observability

Native OpenTelemetry support (OTLP gRPC)

Distributed Tracing

Propagates traceparent from MCP requests

Multimodal

Analyze images, audio, video, PDFs

Batch Processing

Async discounted (~50%) Gemini batch API

Limits: 10MB file reads, 20MB inline media, 20 search matches max.

Model Tiers

Tool

Model

Use Case

consult_gemini

auto (default)

Lite explores, then Flash synthesizes

consult_gemini

flash

Fast, efficient mapping and searching

consult_gemini

pro

Deep reasoning, complex reviews

consult_gemini_oneshot

flash / pro

Stateless single-shot queries, no session history

Auto mode: Lite autonomously explores the codebase (cheap, thorough), then Flash synthesizes over what Lite found. Use model="pro" for deep reasoning (Lite explores, then Pro with thinking HIGH).

Observability & Tracing

gpal supports native OpenTelemetry for monitoring and distributed tracing. It automatically propagates traceparent headers from incoming MCP requests.

# Configure via standard environment variables
export OTEL_SERVICE_NAME="gpal-server"
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317"

# Or via CLI argument
uv run gpal --otel-endpoint localhost:4317

Context Caching

Reduce costs for large projects by caching context on Google's servers:

  1. Upload large files using upload_file.

  2. Create a cache using create_context_cache with the returned URIs.

  3. Reference the cache name in consult_gemini calls via the cached_content parameter.

  4. View active caches via the gpal://caches resource.

Semantic code search using Google's native FileSearch API β€” no local embeddings or databases:

# Create a store and upload files
create_file_store("my-project")
upload_to_file_store("stores/...", "src/server.py")

# Gemini searches stores automatically during generation
consult_gemini("find authentication logic", model="auto")
  • Google handles chunking, embedding, and retrieval

  • Stores managed via create_file_store, upload_to_file_store, list_file_stores, delete_file_store

  • When stores exist, Gemini searches them automatically during consult_gemini calls

Custom System Prompts

Customize what Gemini "knows" about you, your project, or your workflow by composing system prompts from multiple sources.

Config file (~/.config/gpal/config.toml):

# Files loaded in order and concatenated
system_prompts = [
    "~/.config/gpal/GEMINI.md",
    "~/CLAUDE.md",
]

# Inline text appended after files
system_prompt = "常にζ—₯本θͺžγ§ε›žη­”してください (Always respond in Japanese)"

# Set to false to fully replace the built-in prompt with your own
include_default_prompt = true

Paths support ~ and $ENV_VAR expansion, so you can use $WORKSPACE/CLAUDE.md etc.

CLI flags (repeatable, concatenated in order):

# Append additional prompt files
uv run gpal --system-prompt /path/to/project-context.md

# Multiple files
uv run gpal --system-prompt ~/GEMINI.md --system-prompt ./CLAUDE.md

# Replace the built-in prompt entirely
uv run gpal --system-prompt ~/my-prompt.md --no-default-prompt

Composition order:

  1. Built-in gpal system instruction (unless include_default_prompt = false or --no-default-prompt)

  2. Files from system_prompts in config.toml

  3. Inline system_prompt from config.toml

  4. Files from --system-prompt CLI flags

Check what's active via the gpal://info resource β€” it shows which sources contributed and the total instruction length.

Installation

Prerequisites

Quick Start

git clone https://github.com/tobert/gpal.git
cd gpal
export GEMINI_API_KEY="your_key_here"  # or GOOGLE_API_KEY
uv run gpal

Usage

Claude Desktop / Cursor / VS Code

Add to your MCP config (e.g., claude_desktop_config.json):

{
  "mcpServers": {
    "gpal": {
      "command": "uv",
      "args": ["--directory", "/path/to/gpal", "run", "gpal"],
      "env": {
        "GEMINI_API_KEY": "your_key_here"
      }
    }
  }
}

Then ask your AI assistant:

"Ask Gemini to analyze the authentication flow in this codebase"

"Use consult_gemini to find where errors are handled"

Development

uv run pytest              # Run tests
uv run pytest -v           # Verbose output

⚠️ Note: Integration tests (test_connectivity.py, test_agentic.py, test_switching.py) make live API calls and will incur Gemini API costs.

See Also

  • cpal β€” The inverse: an MCP server that lets Gemini (or any MCP client) consult Claude. Your pal Claude.

License

MIT β€” see LICENSE

Roadmap / TODO

  • Refactoring Agent: A loop that edits files, runs tests (via code_execution or shell), and iterates until green.

  • Review Agent: specialized system instruction for code review that outputs structured comments.

Available Tools

20 tools
cancel_batchA
Destructive

Cancel a running batch job. Already-completed requests are unaffected.

Args: name: Batch job name from create_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as destructive and open-world. The description adds that only the running job is canceled and completed requests are untouched, which is useful behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus an args line. It front-loads the purpose and adds necessary detail without waste. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and the presence of an output schema, the description covers the key aspects. It could mention potential errors or behavior when the batch is already done, but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates by explaining the 'name' parameter as 'Batch job name from create_batch', providing essential context for the single required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('cancel') and the target ('a running batch job'). It provides nuance about already-completed requests being unaffected. However, it does not explicitly distinguish itself from the sibling tool 'delete_batch', which may cause confusion about when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context that this is for canceling a running batch, and notes that completed requests remain unaffected. It does not specify when not to use it or mention alternatives like 'delete_batch' for finished batches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consult_geminiA
Read-only

Consult Gemini for codebase analysis.

Gemini autonomously explores our project β€” reading files, listing directories, and searching code β€” so we don't need to pre-read files. Just describe what we need. Use file_paths only when specific files must be included.

Pipeline: For auto, flash, and pro, Lite explores quickly first, then our selected model synthesizes. "lite" and explicit model IDs skip the exploration phase and query directly. Gemini's tools: list_directory, read_file, search_project, git, gemini_search; FileSearch stores are searched automatically when present.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question or instruction
modelNo"auto" (default, Lite explore β†’ Flash analyze), "flash", "pro", "lite", or full model IDauto
file_pathsNoLocal text files to read and include inline as context
media_pathsNoLocal image/PDF files (.png, .jpg, .webp, .gif, .pdf) for vision analysis
file_urisNoGemini File API URIs (from upload_file). Use for large files that exceed inline limits
json_modeNoReturn structured JSON output
response_schemaNoJSON schema string for structured output
cached_contentNoGemini context cache name
thinkingNoThinking level: "minimal", "low", "medium", "high", or None. Pro defaults to "high"

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. The description adds context about autonomous exploration, the pipeline (Lite explores then selected model synthesizes), and lists Gemini's internal tools, which enriches the behavioral model beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and no fluff. Every sentence adds value, though it is slightly longer than necessary for the core purpose. It remains front-loaded with the most critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity and number of parameters, the description covers the tool's workflow and parameter usage quite well. It does not explain return values (no output schema), but the rest of the context is sufficiently complete for an agent to understand usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% but the description adds meaning: explains 'auto' model behavior, that file_paths are for specific inclusions, and that thinking levels affect depth. This provides semantic value beyond the bare schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it's for codebase analysis using Gemini, with autonomous exploration. However, it does not explicitly distinguish itself from the sibling tool 'consult_gemini_oneshot', which may have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on when to use file_paths and explains the pipeline for different models. However, it lacks explicit when-not-to-use conditions or comparisons with sibling tools like gemini_search or consult_gemini_oneshot, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

consult_gemini_oneshotA
Read-only

Stateless single-shot Gemini query with no session history.

Use for independent questions, one-off lookups, or batch-style queries where conversation context would be noise. Still has tool access (list_directory, read_file, etc.) and retry logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question or instruction
modelNo"flash", "pro" (default), or full model IDpro
file_pathsNoLocal text files to read and include inline as context
media_pathsNoLocal image/PDF files (.png, .jpg, .webp, .gif, .pdf) for vision analysis
file_urisNoGemini File API URIs (from upload_file). Use for large files that exceed inline limits
json_modeNoReturn structured JSON output
response_schemaNoJSON schema string for structured output
cached_contentNoGemini context cache name
thinkingNoThinking level: "minimal", "low", "medium", "high", or None. Pro defaults to "high"

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context about statelessness and retry logic beyond the readOnlyHint and openWorldHint annotations. However, it does not detail what happens on failure or idempotency guarantees, keeping it from a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences plus a line break, elegantly front-loading the core stateless concept and usage context with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, robust schema, and annotations, the description is mostly complete. It lacks mention of the return format (no output schema), but the statelessness and usage guidance are well-covered, earning a 4.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all parameters. The description does not add extra meaning beyond what the schema provides, meeting the baseline for a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Stateless single-shot Gemini query with no session history,' which clearly identifies the tool's purpose and distinguishes it from the sibling 'consult_gemini' that likely maintains session state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using the tool for 'independent questions, one-off lookups, or batch-style queries where conversation context would be noise,' providing clear guidance on when to use it versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_batchA

Submit a batch of queries for async processing (~50% cost discount).

Batches run asynchronously (up to 24h). No tool use β€” inline all relevant context in each prompt. Use get_batch/list_batches to check status and get_batch_results when the job completes.

The system prompt follows the same configuration as consult_gemini (config.toml, --system-prompt CLI flags).

Args: queries: List of {custom_id: str, prompt: str} dicts. model: Model alias or ID (default: "flash"). "pro" enables deep thinking. temperature: Sampling temperature (default: 0.2).

ParametersJSON Schema
NameRequiredDescriptionDefault
queriesYes
modelNoflash
temperatureNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the openWorldHint annotation, the description discloses key behaviors: asynchronous processing with 24h limit, cost discount, and the system prompt configuration matched from consult_gemini. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the first sentence captures the core purpose. The bullet-style Args section is clean and avoids unnecessary prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and moderate complexity (3 params, 1 required), the description covers all critical aspects: usage, constraints, related tools, and configuration. No gaps remain for this async batch submission tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds essential structure beyond the schema: it specifies that queries are a list of objects with 'custom_id' and 'prompt' strings, and notes that model 'pro' enables deep thinking. With 0% schema coverage, this compensates well, though temperature semantics could be expanded slightly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Submit a batch of queries for async processing (~50% cost discount).' This verb-resource combination immediately distinguishes it from synchronous tools like consult_gemini.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided on async nature (up to 24h), inlining context instead of tool use, and using get_batch/list_batches/get_batch_results for status. This tells the agent exactly when and how to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_context_cacheA
Idempotent

Create a Gemini context cache for a set of files.

Caching is useful for large files (>32k tokens) used across multiple turns. Model must be an explicit version (e.g., gemini-1.5-flash-001) or a supported alias.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_urisYesGemini File API URIs (from upload_file)
modelNoModel alias or explicit version IDflash
display_nameNoDisplay name for the cache
ttl_secondsNoCache TTL in seconds (default 1 hour)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare idempotentHint and openWorldHint. Description adds context about caching use cases but does not disclose behavior on cache collisions or error conditions. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise, three sentences front-loaded with essential information. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers use case, parameter context, and model requirement. Output schema exists, so return values not needed. Could mention prerequisites like authentication, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description adds value by clarifying file_uris source (from upload_file) and model version requirement, which are not fully covered in schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'create' and the resource 'Gemini context cache', with specific context about files. Distinct from sibling tools like delete_context_cache.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on when caching is useful (large files >32k tokens, multiple turns) and model requirements (explicit version or alias). Lacks explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_file_storeA

Create a new FileSearch store for semantic code search.

Upload files to the store with upload_to_file_store. Once populated, Gemini will automatically search the store during consult_gemini calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
display_nameYesDisplay name for the store

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that Gemini automatically searches the store during consult_gemini calls after population. No contradictions with annotations (openWorldHint=true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose, second explains workflow. Front-loaded with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool, it explains the post-creation workflow (upload, then auto-search) and has an output schema, making it sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No additional semantics beyond the schema's 'display_name' description. 100% schema coverage keeps baseline at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool creates a new FileSearch store for semantic code search with specific verb and resource. Distinguishes from siblings like delete_file_store and upload_to_file_store.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on how to use the store (upload files then Gemini auto-searches) and implies the creation step is before uploads, but does not explicitly state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_batchA
DestructiveIdempotent

Delete a batch job. Only works on ended (succeeded/failed/cancelled) jobs.

Args: name: Batch job name from create_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate `destructiveHint: true` and `idempotentHint: true`. The description adds the key behavioral detail that the tool only succeeds on ended jobs, preventing misuse on active jobs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and front-loaded with the core action. It could be extended slightly to cover error cases, but it is efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with one parameter and annotations covering safety, the description is complete enough. It specifies the constraint and parameter origin, and the output schema exists, so return values are handled elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage for parameter descriptions, so the description carries the burden. It explains that `name` is the batch job name from `create_batch`, which adds context but no further details about format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a batch job, with the specific constraint that it only works on ended jobs (succeeded/failed/cancelled). This distinguishes it from the sibling `cancel_batch` which targets active jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Only works on ended jobs,' guiding the agent not to use it on active jobs. While it doesn't name the alternative explicitly, the sibling `cancel_batch` is implied for active jobs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_context_cacheB
DestructiveIdempotent

Delete a Gemini context cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
cache_nameYesCache name to delete (from create_context_cache)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, so the agent knows this is a mutating operation. The description adds no further behavioral details (e.g., side effects, irreversibility, or consequences of deleting in-use caches). With annotations covering the basic safety profile, a score of 3 is appropriate because the description does not enhance transparency beyond what is already structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that gets straight to the point. It is front-loaded and efficient, though it could benefit from mentioning idempotency or return behavior. Still, it avoids unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no nested objects, output schema present), the description is minimally adequate. However, it does not explain what happens on successful deletion (e.g., returns nothing or a confirmation) or any error conditions. The output schema exists but the description doesn't leverage it to set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself provides a clear meaning for cache_name ('Cache name to delete (from create_context_cache)'). The description adds no additional semantics beyond the schema. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Delete' and the resource 'Gemini context cache'. It uses a specific verb and resource, and it's easily distinguishable from sibling tools like create_context_cache, get_batch, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to delete a cache versus leaving it or using another deletion tool. The description does not mention any prerequisites or conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_file_storeA
Destructive

Delete a FileSearch store and all its documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesStore resource name (e.g. 'fileSearchStores/xxx')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds the important detail that all documents are deleted, which supplements the 'destructiveHint' annotation. However, it doesn't mention permissions, irreversibility, or rate limits, though the annotation already signals destructiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no extraneous words, directly communicating the tool's action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple operation (one parameter) and presence of output schema, the description covers the core effect. It could mention that the operation is irreversible to enhance completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds no additional meaning to the 'name' parameter beyond what the schema already provides (resource name format).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') and resource ('FileSearch store') and clarifies that all associated documents are also removed, distinguishing it from siblings like 'delete_batch' or 'delete_context_cache'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but provides no explicit guidance on when to use it versus alternatives like 'delete_batch' or 'create_file_store'. Usage is implied but not clarified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gemini_code_execA
Read-only

Execute Python code using Gemini's built-in code execution sandbox.

Returns stdout, stderr, and any execution results. Stateless utility.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPython code to execute
modelNoModel to use for code executiongemini-flash-latest

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint. Description adds behavioral context: execution in a sandbox, statelessness, and return of stdout/stderr/results. No contradictions. Could elaborate on sandbox limitations but overall adds value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states core action and environment, second covers outputs and statefulness. No redundant words, front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a code execution tool, description covers inputs, sandbox environment, and outputs. An output schema exists, so return details are not required. Could be enhanced with information on timeouts or available libraries, but the current description is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with descriptions (code, model). The description does not add new information about parameters; it restates 'Execute Python code' which aligns with the code parameter. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Execute' and the resource 'Python code' using 'Gemini's built-in code execution sandbox'. Distinguishes from sibling tools like consult_gemini or gemini_search, which are for querying, not code execution.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes what the tool does and what it returns (stdout, stderr, results). Mentions it is 'Stateless utility', implying isolated executions. However, no explicit comparison or guidance on when to use this versus alternative tools for similar tasks (e.g., consult_gemini).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageA

Generates an image using Imagen or Nano Banana (Gemini image) models.

Args: prompt: Text description of the image to generate. output_path: File path to save the generated image. model: Model alias or ID. "imagen" (default, ultra), "imagen-fast", "nano-pro", or "nano-flash". aspect_ratio: Aspect ratio (e.g. "1:1", "16:9", "9:16", "4:3", "3:4"). image_size: Output size for Nano Banana only (e.g. "1024x1024"). Not supported by Imagen.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesText description of the image to generate
output_pathYesFile path to save the generated image
modelNo"imagen" (default, ultra), "imagen-fast", "nano-pro", or "nano-flash"imagen
aspect_ratioNoAspect ratio (e.g. "1:1", "16:9", "9:16", "4:3", "3:4")
image_sizeNoOutput size for Nano Banana only (e.g. "1024x1024"). Not supported by Imagen

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only include openWorldHint=true. The description explains the model options and constraints (e.g., image_size not supported by Imagen) but lacks details on error handling, rate limits, or other side effects. Minimal behavioral disclosure beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with bullet-like clarity and front-loaded purpose. A few words could be trimmed, but it remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema so return format is covered. Explains all parameters and model-specific behavior. Lacks guidance on when to choose each model variant, but sufficient for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds some clarification (e.g., defaults, model restrictions) but does not significantly exceed the schema's own descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates an image using named models (Imagen, Nano Banana). It lists key parameters and distinguishes from unrelated siblings like generate_speech, which is for audio.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives, or when not to use it. It provides parameter details but does not add usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_speechB

Synthesizes speech from text.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesText to synthesize into speech
output_pathYesFile path to save the generated audio (.wav)
voice_nameNoVoice name (e.g. Puck, Charon, Kore, Fenrir, Aoede)Puck
modelNo"speech" (default, Pro quality) or "speech-fast"speech

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite openWorldHint annotation indicating side effects, the description does not mention that the tool saves audio to an output file. This omission reduces transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with no redundant information. Single sentence that clearly states the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists, the description lacks details on output format, file type, or usage constraints. Adequate but could be more informative for a tool with multiple parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. The tool description adds no new information beyond the schema, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Synthesizes speech from text.' uses a specific verb and resource, clearly indicating the tool's function. It distinguishes itself from sibling tools like generate_image and consult_gemini.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives or prerequisites. Missing context on appropriate use cases or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_batchA
Read-only

Get the status of a batch job.

Args: name: Batch job name (e.g. "batches/abc") from create_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true (safe read) and openWorldHint=true (unexpected response fields). The description adds 'status' but does not elaborate on what the status includes or any side effects. With annotations covering safety, the description provides minimal additional behavioral context, just a restatement of the tool's reading nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences. The first sentence states purpose upfront, and the second explains the single parameter. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-status tool with one required parameter and an output schema, the description covers the essential purpose and parameter. However, it does not explicitly state that the parameter is required (though the schema does), nor does it mention error handling or batch status semantics. Still, it is nearly complete given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates fully by specifying that 'name' is a batch job name (e.g., 'batches/abc') from create_batch. This adds meaning, format, and origin beyond the schema's bare type definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the status of a batch job,' which is a specific verb and resource. It distinguishes itself from sibling tools like cancel_batch, create_batch, delete_batch, list_batches, and get_batch_results by focusing on status retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by noting the name comes from create_batch, but it does not explicitly state when to use this tool versus alternatives like list_batches (to enumerate all batches) or get_batch_results (to get actual outputs). No exclusion or when-not guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_batch_resultsA
Read-only

Get results from a completed batch job.

Only available when state is JOB_STATE_SUCCEEDED or JOB_STATE_PARTIALLY_SUCCEEDED. Results include text extracted from each response, keyed by custom_id.

Args: name: Batch job name from create_batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint: true. The description adds that results are only available on specific job states and that they include text extracted from each response keyed by custom_id, which is valuable behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: three sentences plus an args line. Every sentence is necessary and front-loaded with the purpose, with no extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema, the description does not need to detail return values. It covers the single parameter, the valid states, and the nature of results. This is fully complete for a read-only result retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameter description (0% coverage). The description explains that 'name' is the batch job name from create_batch, which adds critical context for the agent to correctly identify the parameter's purpose and source.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get results from a completed batch job', specifying the verb and resource. It distinguishes itself from siblings like get_batch (which likely retrieves job metadata) by focusing on results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states availability conditions (state must be JOB_STATE_SUCCEEDED or JOB_STATE_PARTIALLY_SUCCEEDED) and indicates the name parameter comes from create_batch. Does not mention alternatives or when not to use, but the precondition is strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_batchesA
Read-only

List recent batch jobs.

Args: limit: Maximum number of batches to return (default: 20, max: 100).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and openWorldHint. Description adds that it returns 'recent' jobs and explains limit behavior, providing some context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise with two sentences, front-loaded purpose. Uses an informal 'Args:' style but remains efficient with no unnecessary text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple list tool with one optional parameter and an output schema. Could mention ordering or pagination, but not critical given output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for limit. Description explains default value (20) and maximum (100), adding meaning beyond the schema's type and default fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List recent batch jobs' with a specific verb and resource. Distinguishes from siblings like get_batch and create_batch.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like get_batch or get_batch_results. Only describes the limit parameter, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_file_storesA
Read-only

List all FileSearch stores with document counts and sizes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint. Description adds specific output details (document counts, sizes) beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and an output schema, the description sufficiently covers what the tool does and returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. Description need not add parameter info; baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'List', the resource 'FileSearch stores', and the included details 'document counts and sizes'. Distinguishes from siblings like 'list_batches' or 'list_models'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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, but for a simple list operation the context is clear among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsA
Read-onlyIdempotent

List available Gemini models grouped by capability.

Queries the Gemini API for all accessible models and groups them by supported actions (generateContent, generateImages, embedContent, etc.).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and openWorldHint, so the description adds value by explaining the grouping behavior. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose, and every sentence adds meaningful detail without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the zero parameters, presence of output schema, and rich annotations, the description provides enough context about behavior (grouping by capability) to fully understand the tool's output and purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and schema coverage is effectively 100%. Baseline is 3 as per guidelines, and the description does not need to add parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'available Gemini models', and adds the specific grouping by capability, which distinguishes it from sibling tools that focus on batches, files, or other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about querying all accessible models and grouping by actions. While it does not explicitly exclude alternatives, the uniqueness of the tool among siblings makes the usage straightforward.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_fileC
Idempotent

Upload a large file to Gemini's File API.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the local file to upload
display_nameNoDisplay name in the Files API (defaults to filename)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds minimal behavioral context beyond what annotations already provide. Annotations indicate idempotency and open-world hints, but the description does not elaborate on traits like file size handling, error behavior, or storage semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary information, effectively communicating the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a file upload tool, the description lacks critical context such as supported file types, maximum file size, authentication requirements, or how the output schema defines the response. Given the existence of an output schema, more behavioral notes would be valuable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond what the schema already provides for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (upload), resource (large file), and target (Gemini's File API), providing a specific verb and resource. However, it does not differentiate from the sibling tool 'upload_to_file_store', which might serve a similar purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'upload_to_file_store' or other upload-related tools. There is no mention of prerequisites, file size limits, or use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_to_file_storeA

Upload a file to a FileSearch store for semantic search.

Supported: text, code, PDF, and other document formats. Files are chunked and embedded by Google for retrieval.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_nameYesStore resource name (from create_file_store)
file_pathYesPath to the local file to upload
display_nameNoDisplay name for the file in the store

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that files are 'chunked and embedded by Google for retrieval', adding value beyond the openWorldHint annotation. No contradictory information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded main action, no redundancy or wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, supported formats, and processing. Output schema exists, so return values not needed. Could mention prerequisite store existence, but acceptable given context signals.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. Description adds context on supported file formats but does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'upload', resource 'FileSearch store', and purpose 'for semantic search'. Supported formats listed. Differentiates from siblings like 'upload_file' and 'create_file_store'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage context (uploading to a store for semantic search) and lists supported formats, but does not explicitly state when to use vs alternatives like 'upload_file' or exclude scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation4/5

Most tools have clearly distinct purposes, but consult_gemini and consult_gemini_oneshot overlap significantly (both query Gemini, differing only in statefulness). The descriptions help differentiate them, but the similarity could cause misselection.

Naming Consistency3/5

Naming is mostly snake_case and verb-driven (e.g., create_batch, delete_file_store), but some tools start with nouns (gemini_code_exec, gemini_search) and there's no consistent pattern like verb_noun. This inconsistency may confuse agents.

Tool Count4/5

20 tools is on the higher side but still reasonable for wrapping Gemini's extensive API. Each tool covers a distinct feature (batch, file stores, caching, search, generation), so the count feels appropriate.

Completeness4/5

The tool set covers major Gemini capabilities: batch processing, file management, caching, code execution, web search, image/speech generation, and model listing. Minor gaps exist (e.g., no tool to list uploaded files or update cache settings), but core workflows are solid.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tobert/gpal'

If you have feedback or need assistance with the MCP directory API, please join our Discord server