Google Workspace MCP Server
Complete Gmail management: read, send, organize emails, and manage labels.
Full calendar management: create, update, delete events, and manage schedules.
Space management and messaging capabilities.
Document creation, editing, and comment management.
File operations with Office format support: upload, download, and organize files.
Form creation, publish settings, and response management.
Spreadsheet operations with flexible cell management, formulas, and data manipulation.
Presentation creation, updates, and content manipulation.
Task and task list management with hierarchy support.
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., "@Google Workspace MCP Servercreate a new Google Doc titled 'Meeting Notes' and share it with alice@example.com"
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.
Google Workspace MCP Server
Full natural language control over Google Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, and Chat through all MCP clients, AI assistants and developer tools.
The most feature-complete Google Workspace MCP server, now with Remote OAuth2.1 multi-user support and 1-click Claude installation.
Support for all free Google accounts (Gmail, Docs, Drive etc) & Google Workspace plans (Starter, Standard, Plus, Enterprise, Non Profit) with expanded app options like Chat & Spaces. Interested in a private cloud instance? That can be arranged.
See it in action:
A quick plug for AI-Enhanced Docs
This README was written with AI assistance, and here's why that matters
As a solo dev building open source tools, comprehensive documentation often wouldn't happen without AI help. Using agentic dev tools like Roo & Claude Code that understand the entire codebase, AI doesn't just regurgitate generic content - it extracts real implementation details and creates accurate, specific documentation.
In this case, Sonnet 4 took a pass & a human (me) verified them 8/16/25.
Overview
A production-ready MCP server that integrates all major Google Workspace services with AI assistants. It supports both single-user operation and multi-user authentication via OAuth 2.1, making it a powerful backend for custom applications. Built with FastMCP for optimal performance, featuring advanced authentication handling, service caching, and streamlined development patterns.
Simplified Setup: Now uses Google Desktop OAuth clients - no redirect URIs or port configuration needed!
Related MCP server: Google Workspace MCP Server
Features
@ Gmail • ≡ Drive • ⧖ Calendar ≡ Docs
Complete Gmail management, end to end coverage
Full calendar management with advanced features
File operations with Office format support
Document creation, editing & comments
Deep, exhaustive support for fine grained editing
≡ Forms • @ Chat • ≡ Sheets • ≡ Slides
Form creation, publish settings & response management
Space management & messaging capabilities
Spreadsheet operations with flexible cell management
Presentation creation, updates & content manipulation
⊠ Authentication & Security
Advanced OAuth 2.0 & OAuth 2.1 support
Automatic token refresh & session management
Transport-aware callback handling
Multi-user bearer token authentication
Innovative CORS proxy architecture
✓ Tasks • ◆ Custom Search • ↻ Transport Support
Full support for all MCP Transports
Task & task list management with hierarchy
Programmable Search Engine (PSE) integration
Quick Start
Credentials
export GOOGLE_OAUTH_CLIENT_ID="..."
export GOOGLE_OAUTH_CLIENT_SECRET="..."Launch Commands
uvx workspace-mcp --tool-tier core
uv run main.py --tools gmail driveTool Tiers
core- Essential toolsextended- Core + extrascomplete- Everything Details →
1. One-Click Claude Desktop Install (Recommended)
Download: Grab the latest
google_workspace_mcp.dxtfrom the “Releases” pageInstall: Double-click the file – Claude Desktop opens and prompts you to Install
Configure: In Claude Desktop → Settings → Extensions → Google Workspace MCP, paste your Google OAuth credentials
Use it: Start a new Claude chat and call any Google Workspace tool
Why DXT?
Desktop Extensions (
.dxt) bundle the server, dependencies, and manifest so users go from download → working MCP in one click – no terminal, no JSON editing, no version conflicts.
Required Configuration
Required
Variable | Purpose |
| OAuth client ID from Google Cloud |
| OAuth client secret |
| Development only (allows |
Optional
Variable | Purpose |
| Default email for single-user auth |
| API key for Custom Search |
| Search Engine ID for Custom Search |
| Set to |
| Set to |
| Set to |
Claude Desktop stores these securely in the OS keychain; set them once in the extension pane.
Prerequisites
Python 3.10+
Google Cloud Project with OAuth 2.0 credentials
Configuration
1. Create Project
console.cloud.google.com
→ Create new project
→ Note project name2. OAuth Credentials
APIs & Services → Credentials
→ Create Credentials
→ OAuth Client ID
→ Desktop ApplicationDownload & save credentials
3. Enable APIs
APIs & Services → Library
Search & enable:
Calendar, Drive, Gmail,
Docs, Sheets, Slides,
Forms, Tasks, Chat, SearchSee quick links below
Complete Setup Process:
Create OAuth 2.0 Credentials - Visit Google Cloud Console
Create a new project (or use existing)
Navigate to APIs & Services → Credentials
Click Create Credentials → OAuth Client ID
Choose Desktop Application as the application type (no redirect URIs needed!)
Download credentials and note the Client ID and Client Secret
Enable Required APIs - In APIs & Services → Library
Search for and enable each required API
Or use the quick links below for one-click enabling
Configure Environment - Set your credentials:
export GOOGLE_OAUTH_CLIENT_ID="your-client-id" export GOOGLE_OAUTH_CLIENT_SECRET="your-secret"
1.1. Credentials: See Credential Configuration for detailed setup options
Environment Configuration:
◆ Development Mode
export OAUTHLIB_INSECURE_TRANSPORT=1Allows HTTP redirect URIs
@ Default User
export USER_GOOGLE_EMAIL=\
your.email@gmail.comSingle-user authentication
◆ Custom Search
export GOOGLE_PSE_API_KEY=xxx
export GOOGLE_PSE_ENGINE_ID=yyyOptional: Search API setup
Server Configuration:
◆ Base Configuration
export WORKSPACE_MCP_BASE_URI=
http://localhost
export WORKSPACE_MCP_PORT=8000Server URL & port settings
↻ Proxy Support
export MCP_ENABLE_OAUTH21=
trueLeverage multi-user OAuth2.1 clients
@ Default Email
export USER_GOOGLE_EMAIL=\
your.email@gmail.comSkip email in auth flows in single user mode
Variable | Description | Default |
| Base server URI (no port) |
|
| Server listening port |
|
| External URL for reverse proxy setups | None |
| Override OAuth callback URL | Auto-constructed |
| Default auth email | None |
Google Custom Search Setup
1. Create Search Engine
programmablesearchengine.google.com
/controlpanel/create
→ Configure sites or entire web
→ Note your Engine ID (cx)2. Get API Key
developers.google.com
/custom-search/v1/overview
→ Create/select project
→ Enable Custom Search API
→ Create credentials (API Key)3. Set Variables
export GOOGLE_PSE_API_KEY=\
"your-api-key"
export GOOGLE_PSE_ENGINE_ID=\
"your-engine-id"Configure in environment
Complete Setup Process:
Create Search Engine - Visit the Control Panel
Choose "Search the entire web" or specify sites
Copy the Search Engine ID (looks like:
017643444788157684527:6ivsjbpxpqw)
Enable API & Get Key - Visit Google Developers Console
Enable "Custom Search API" in your project
Create credentials → API Key
Restrict key to Custom Search API (recommended)
Configure Environment - Add to your shell or
.env:export GOOGLE_PSE_API_KEY="AIzaSy..." export GOOGLE_PSE_ENGINE_ID="01764344478..."
Start the Server
▶ Quick Start
uv run main.pyDefault stdio mode
◆ HTTP Mode
uv run main.py \
--transport streamable-httpWeb interfaces & debugging
@ Single User
uv run main.py \
--single-userSimplified authentication
▶ Selective Tool Loading
# Load specific services only
uv run main.py --tools gmail drive calendar
uv run main.py --tools sheets docs
# Combine with other flags
uv run main.py --single-user --tools gmail★ Tool Tiers
uv run main.py --tool-tier core # ● Essential tools only
uv run main.py --tool-tier extended # ◐ Core + additional
uv run main.py --tool-tier complete # ○ All available tools◆ Docker Deployment
docker build -t workspace-mcp .
docker run -p 8000:8000 -v $(pwd):/app \
workspace-mcp --transport streamable-http
# With tool selection via environment variables
docker run -e TOOL_TIER=core workspace-mcp
docker run -e TOOLS="gmail drive calendar" workspace-mcpAvailable Services: gmail • drive • calendar • docs • sheets • forms • tasks • chat • search
Tool Tiers
The server organizes tools into three progressive tiers for simplified deployment. Choose a tier that matches your usage needs and API quota requirements.
Available Tiers
● Core (--tool-tier core)
Essential tools for everyday tasks. Perfect for light usage with minimal API quotas. Includes search, read, create, and basic modify operations across all services.
● Extended (--tool-tier extended)
Core functionality plus management tools. Adds labels, folders, batch operations, and advanced search. Ideal for regular usage with moderate API needs.
● Complete (--tool-tier complete)
Full API access including comments, headers/footers, publishing settings, and administrative functions. For power users needing maximum functionality.
Important Notes
▶ Start with core and upgrade as needed
▶ Tiers are cumulative – each includes all previous
▶ Mix and match with --tools for specific services
▶ Configuration in core/tool_tiers.yaml
▶ Authentication included in all tiers
Usage Examples
# Basic tier selection
uv run main.py --tool-tier core # Start with essential tools only
uv run main.py --tool-tier extended # Expand to include management features
uv run main.py --tool-tier complete # Enable all available functionality
# Selective service loading with tiers
uv run main.py --tools gmail drive --tool-tier core # Core tools for specific services
uv run main.py --tools gmail --tool-tier extended # Extended Gmail functionality only
uv run main.py --tools docs sheets --tool-tier complete # Full access to Docs and Sheets📋 Credential Configuration
🚀 Environment Variables
export GOOGLE_OAUTH_CLIENT_ID=\
"your-client-id"
export GOOGLE_OAUTH_CLIENT_SECRET=\
"your-secret"Best for production
📁 File-based
# Download & place in project root
client_secret.json
# Or specify custom path
export GOOGLE_CLIENT_SECRET_PATH=\
/path/to/secret.jsonTraditional method
⚡ .env File
cp .env.oauth21 .env
# Edit .env with credentialsBest for development
Loading Priority
Environment variables (
export VAR=value).envfile in project root (warning - if you run viauvxrather thanuv runfrom the repo directory, you are spawning a standalone process not associated with your clone of the repo and it will not find your .env file without specifying it directly)client_secret.jsonviaGOOGLE_CLIENT_SECRET_PATHDefault
client_secret.jsonin project root
Why Environment Variables?
✅ Docker/K8s ready - Native container support
✅ Cloud platforms - Heroku, Railway, Vercel
✅ CI/CD pipelines - GitHub Actions, Jenkins
✅ No secrets in git - Keep credentials secure
✅ Easy rotation - Update without code changes
🧰 Available Tools
Note: All tools support automatic authentication via
@require_google_service()decorators with 30-minute service caching.
📅 Google Calendar calendar_tools.py
Tool | Tier | Description |
| Core | List accessible calendars |
| Core | Retrieve events with time range filtering |
| Core | Create events with attachments & reminders |
| Core | Update existing events |
| Extended | Remove events |
📁 Google Drive drive_tools.py
Tool | Tier | Description |
| Core | Search files with query syntax |
| Core | Read file content (Office formats) |
| Core | Get download URL for Drive files |
| Core | Create files or fetch from URLs |
| Core | Share file with users/groups/domains/anyone |
| Core | Get shareable links for a file |
| Extended | List folder contents |
| Extended | Update file metadata, move between folders |
| Extended | Share file with multiple recipients |
| Extended | Modify permission role |
| Extended | Revoke file access |
| Extended | Transfer file ownership to another user |
| Complete | Get detailed file permissions |
| Complete | Check public sharing status |
📧 Gmail gmail_tools.py
Tool | Tier | Description |
| Core | Search with Gmail operators |
| Core | Retrieve message content |
| Core | Batch retrieve message content |
| Core | Send emails |
| Extended | Get full thread content |
| Extended | Modify message labels |
| Extended | List available labels |
| Extended | Create/update/delete labels |
| Extended | Create drafts |
| Complete | Batch retrieve thread content |
| Complete | Batch modify labels |
| Complete | Initialize authentication |
📝 Google Docs docs_tools.py
Tool | Tier | Description |
| Core | Extract document text |
| Core | Create new documents |
| Core | Modify document text |
| Extended | Find documents by name |
| Extended | Find and replace text |
| Extended | List docs in folder |
| Extended | Add tables, lists, page breaks |
| Complete | Insert images from Drive/URLs |
| Complete | Modify headers and footers |
| Complete | Execute multiple operations |
| Complete | Analyze document structure |
| Extended | Export document to PDF |
| Complete | Create data tables |
| Complete | Debug table issues |
| Complete | Read, Reply, Create, Resolve |
📊 Google Sheets sheets_tools.py
Tool | Tier | Description |
| Core | Read cell ranges |
| Core | Write/update/clear cells |
| Core | Create new spreadsheets |
| Extended | List accessible spreadsheets |
| Extended | Get spreadsheet metadata |
| Complete | Add sheets to existing files |
| Complete | Read/create/reply/resolve comments |
🖼️ Google Slides slides_tools.py
Tool | Tier | Description |
| Core | Create new presentations |
| Core | Retrieve presentation details |
| Extended | Apply multiple updates |
| Extended | Get specific slide information |
| Extended | Generate slide thumbnails |
| Complete | Read/create/reply/resolve comments |
📝 Google Forms forms_tools.py
Tool | Tier | Description |
| Core | Create new forms |
| Core | Retrieve form details & URLs |
| Complete | Configure form settings |
| Complete | Get individual responses |
| Extended | List all responses with pagination |
✓ Google Tasks tasks_tools.py
Tool | Tier | Description |
| Core | List tasks with filtering |
| Core | Retrieve task details |
| Core | Create tasks with hierarchy |
| Core | Modify task properties |
| Extended | Remove tasks |
| Complete | Reposition tasks |
| Complete | Hide completed tasks |
| Complete | List/get/create/update/delete task lists |
💬 Google Chat chat_tools.py
Tool | Tier | Description |
| Extended | List chat spaces/rooms |
| Core | Retrieve space messages |
| Core | Send messages to spaces |
| Core | Search across chat history |
🔍 Google Custom Search search_tools.py
Tool | Tier | Description |
| Core | Perform web searches |
| Complete | Retrieve search engine metadata |
| Extended | Search within specific domains |
Tool Tier Legend:
• Core: Essential tools for basic functionality • Minimal API usage • Getting started
• Extended: Core tools + additional features • Regular usage • Expanded capabilities
• Complete: All available tools including advanced features • Power users • Full API access
Connect to Claude Desktop
The server supports two transport modes:
Stdio Mode (Default - Recommended for Claude Desktop)
In general, you should use the one-click DXT installer package for Claude Desktop.
If you are unable to for some reason, you can configure it manually via claude_desktop_config.json
Manual Claude Configuration (Alternative)
Open Claude Desktop Settings → Developer → Edit Config
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the server configuration:
{
"mcpServers": {
"google_workspace": {
"command": "uvx",
"args": ["workspace-mcp"],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-secret",
"OAUTHLIB_INSECURE_TRANSPORT": "1"
}
}
}
}Connect to LM Studio
Add a new MCP server in LM Studio (Settings → MCP Servers) using the same JSON format:
{
"mcpServers": {
"google_workspace": {
"command": "uvx",
"args": ["workspace-mcp"],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-secret",
"OAUTHLIB_INSECURE_TRANSPORT": "1",
}
}
}
}2. Advanced / Cross-Platform Installation
If you’re developing, deploying to servers, or using another MCP-capable client, keep reading.
Instant CLI (uvx)
# Requires Python 3.10+ and uvx
# First, set credentials (see Credential Configuration above)
uvx workspace-mcp --tool-tier core # or --tools gmail drive calendarNote: Configure OAuth credentials before running. Supports environment variables,
.envfile, orclient_secret.json.
Local Development Setup
# Install everything needed for linting, tests, and release tooling
uv sync --group dev
# Run the same linter that git hooks invoke automatically
uv run ruff check .
# Execute the full test suite (async fixtures require pytest-asyncio)
uv run pytestuv sync --group testinstalls only the testing stack if you need a slimmer environment.uv run main.py --transport streamable-httplaunches the server with your checked-out code for manual verification.Ruff is part of the
devgroup because pre-push hooks callruff checkautomatically—run it locally before committing to avoid hook failures.
OAuth 2.1 Support (Multi-User Bearer Token Authentication)
The server includes OAuth 2.1 support for bearer token authentication, enabling multi-user session management. OAuth 2.1 automatically reuses your existing GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET credentials - no additional configuration needed!
When to use OAuth 2.1:
Multiple users accessing the same MCP server instance
Need for bearer token authentication instead of passing user emails
Building web applications or APIs on top of the MCP server
Production environments requiring secure session management
Browser-based clients requiring CORS support
Enabling OAuth 2.1:
To enable OAuth 2.1, set the MCP_ENABLE_OAUTH21 environment variable to true.
# OAuth 2.1 requires HTTP transport mode
export MCP_ENABLE_OAUTH21=true
uv run main.py --transport streamable-httpIf MCP_ENABLE_OAUTH21 is not set to true, the server will use legacy authentication, which is suitable for clients that do not support OAuth 2.1.
FastMCP ships a native GoogleProvider that we now rely on directly. It solves the two tricky parts of using Google OAuth with MCP clients:
Dynamic Client Registration: Google still doesn't support OAuth 2.1 DCR, but the FastMCP provider exposes the full DCR surface and forwards registrations to Google using your fixed credentials. MCP clients register as usual and the provider hands them your Google client ID/secret under the hood.
CORS & Browser Compatibility: The provider includes an OAuth proxy that serves all discovery, authorization, and token endpoints with proper CORS headers. We no longer maintain custom
/oauth2/*routes—the provider handles the upstream exchanges securely and advertises the correct metadata to clients.
The result is a leaner server that still enables any OAuth 2.1 compliant client (including browser-based ones) to authenticate through Google without bespoke code.
Stateless Mode (Container-Friendly)
The server supports a stateless mode designed for containerized environments where file system writes should be avoided:
Enabling Stateless Mode:
# Stateless mode requires OAuth 2.1 to be enabled
export MCP_ENABLE_OAUTH21=true
export WORKSPACE_MCP_STATELESS_MODE=true
uv run main.py --transport streamable-httpKey Features:
No file system writes: Credentials are never written to disk
No debug logs: File-based logging is completely disabled
Memory-only sessions: All tokens stored in memory via OAuth 2.1 session store
Container-ready: Perfect for Docker, Kubernetes, and serverless deployments
Token per request: Each request must include a valid Bearer token
Requirements:
Must be used with
MCP_ENABLE_OAUTH21=trueIncompatible with single-user mode
Clients must handle OAuth flow and send valid tokens with each request
This mode is ideal for:
Cloud deployments where persistent storage is unavailable
Multi-tenant environments requiring strict isolation
Containerized applications with read-only filesystems
Serverless functions and ephemeral compute environments
MCP Inspector: No additional configuration needed with desktop OAuth client.
Claude Code: No additional configuration needed with desktop OAuth client.
OAuth Proxy Storage Backends
The server supports pluggable storage backends for OAuth proxy state management via FastMCP 2.13.0+. Choose a backend based on your deployment needs.
Available Backends:
Backend | Best For | Persistence | Multi-Server |
Memory | Development, testing | ❌ | ❌ |
Disk | Single-server production | ✅ | ❌ |
Valkey/Redis | Distributed production | ✅ | ✅ |
Configuration:
# Memory storage (fast, no persistence)
export WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND=memory
# Disk storage (persists across restarts)
export WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND=disk
export WORKSPACE_MCP_OAUTH_PROXY_DISK_DIRECTORY=~/.fastmcp/oauth-proxy
# Valkey/Redis storage (distributed, multi-server)
export WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND=valkey
export WORKSPACE_MCP_OAUTH_PROXY_VALKEY_HOST=redis.example.com
export WORKSPACE_MCP_OAUTH_PROXY_VALKEY_PORT=6379Valkey support is optional. Install
workspace-mcp[valkey](orpy-key-value-aio[valkey]) only if you enable the Valkey backend. Windows: buildingvalkey-glidefrom source requires MSVC C++ build tools with C11 support. If you seeaws-lc-sysC11 errors, setCFLAGS=/std:c11.
Variable | Default | Description |
| localhost | Valkey/Redis host |
| 6379 | Port (6380 auto-enables TLS) |
| 0 | Database number |
| auto | Enable TLS (auto if port 6380) |
| - | Authentication username |
| - | Authentication password |
| 5000 | Request timeout for remote hosts |
| 10000 | Connection timeout for remote hosts |
Encryption: Disk and Valkey storage are encrypted with Fernet. The encryption key is derived from FASTMCP_SERVER_AUTH_GOOGLE_JWT_SIGNING_KEY if set, otherwise from GOOGLE_OAUTH_CLIENT_SECRET.
External OAuth 2.1 Provider Mode
The server supports an external OAuth 2.1 provider mode for scenarios where authentication is handled by an external system. In this mode, the MCP server does not manage the OAuth flow itself but expects valid bearer tokens in the Authorization header of tool calls.
Enabling External OAuth 2.1 Provider Mode:
# External OAuth provider mode requires OAuth 2.1 to be enabled
export MCP_ENABLE_OAUTH21=true
export EXTERNAL_OAUTH21_PROVIDER=true
uv run main.py --transport streamable-httpHow It Works:
Protocol-level auth disabled: MCP handshake (
initialize) andtools/listdo not require authenticationTool-level auth required: All tool calls must include
Authorization: Bearer <token>headerExternal OAuth flow: Your external system handles the OAuth flow and obtains Google access tokens
Token validation: Server validates bearer tokens via Google's tokeninfo API
Multi-user support: Each request is authenticated independently based on its bearer token
Key Features:
No local OAuth flow: Server does not provide OAuth callback endpoints or manage OAuth state
Bearer token only: All authentication via Authorization headers
Stateless by design: Works seamlessly with
WORKSPACE_MCP_STATELESS_MODE=trueExternal identity providers: Integrate with your existing authentication infrastructure
Tool discovery: Clients can list available tools without authentication
Requirements:
Must be used with
MCP_ENABLE_OAUTH21=trueOAuth credentials still required for token validation (
GOOGLE_OAUTH_CLIENT_ID,GOOGLE_OAUTH_CLIENT_SECRET)External system must obtain valid Google OAuth access tokens (ya29.*)
Each tool call request must include valid bearer token
Use Cases:
Integrating with existing authentication systems
Custom OAuth flows managed by your application
API gateways that handle authentication upstream
Multi-tenant SaaS applications with centralized auth
Mobile or web apps with their own OAuth implementation
VS Code MCP Client Support
{
"servers": {
"google-workspace": {
"url": "http://localhost:8000/mcp/",
"type": "http"
}
}
}Claude Code MCP Client Support
claude mcp add --transport http workspace-mcp http://localhost:8000/mcpReverse Proxy Setup
If you're running the MCP server behind a reverse proxy (nginx, Apache, Cloudflare, etc.), you have two configuration options:
Problem: When behind a reverse proxy, the server constructs OAuth URLs using internal ports (e.g., http://localhost:8000) but external clients need the public URL (e.g., https://your-domain.com).
Solution 1: Set WORKSPACE_EXTERNAL_URL for all OAuth endpoints:
# This configures all OAuth endpoints to use your external URL
export WORKSPACE_EXTERNAL_URL="https://your-domain.com"Solution 2: Set GOOGLE_OAUTH_REDIRECT_URI for just the callback:
# This only overrides the OAuth callback URL
export GOOGLE_OAUTH_REDIRECT_URI="https://your-domain.com/oauth2callback"You also have options for:
| OAUTH_CUSTOM_REDIRECT_URIS (optional) | Comma-separated list of additional redirect URIs |
| OAUTH_ALLOWED_ORIGINS (optional) | Comma-separated list of additional CORS origins |
Important:
Use
WORKSPACE_EXTERNAL_URLwhen all OAuth endpoints should use the external URL (recommended for reverse proxy setups)Use
GOOGLE_OAUTH_REDIRECT_URIwhen you only need to override the callback URLThe redirect URI must exactly match what's configured in your Google Cloud Console
Your reverse proxy must forward OAuth-related requests (
/oauth2callback,/oauth2/*,/.well-known/*) to the MCP server
# Configure credentials first (see Credential Configuration section)
# Start with specific tools only
uvx workspace-mcp --tools gmail drive calendar tasks
# Start with tool tiers (recommended for most users)
uvx workspace-mcp --tool-tier core # Essential tools
uvx workspace-mcp --tool-tier extended # Core + additional features
uvx workspace-mcp --tool-tier complete # All tools
# Start in HTTP mode for debugging
uvx workspace-mcp --transport streamable-httpRequires Python 3.10+ and uvx. The package is available on PyPI.
Development Installation
For development or customization:
git clone https://github.com/taylorwilsdon/google_workspace_mcp.git
cd google_workspace_mcp
uv run main.pyDevelopment Installation (For Contributors):
{
"mcpServers": {
"google_workspace": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/repo/google_workspace_mcp",
"main.py"
],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-secret",
"OAUTHLIB_INSECURE_TRANSPORT": "1"
}
}
}
}HTTP Mode (For debugging or web interfaces)
If you need to use HTTP mode with Claude Desktop:
{
"mcpServers": {
"google_workspace": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8000/mcp"]
}
}
}Note: Make sure to start the server with --transport streamable-http when using HTTP mode.
First-Time Authentication
The server uses Google Desktop OAuth for simplified authentication:
No redirect URIs needed: Desktop OAuth clients handle authentication without complex callback URLs
Automatic flow: The server manages the entire OAuth process transparently
Transport-agnostic: Works seamlessly in both stdio and HTTP modes
When calling a tool:
Server returns authorization URL
Open URL in browser and authorize
Google provides an authorization code
Paste the code when prompted (or it's handled automatically)
Server completes authentication and retries your request
◆ Development
Project Structure
google_workspace_mcp/
├── auth/ # Authentication system with decorators
├── core/ # MCP server and utilities
├── g{service}/ # Service-specific tools
├── main.py # Server entry point
├── client_secret.json # OAuth credentials (not committed)
└── pyproject.toml # DependenciesAdding New Tools
from auth.service_decorator import require_google_service
@require_google_service("drive", "drive_read") # Service + scope group
async def your_new_tool(service, param1: str, param2: int = 10):
"""Tool description"""
# service is automatically injected and cached
result = service.files().list().execute()
return result # Return native Python objectsArchitecture Highlights
Service Caching: 30-minute TTL reduces authentication overhead
Scope Management: Centralized in
SCOPE_GROUPSfor easy maintenanceError Handling: Native exceptions instead of manual error construction
Multi-Service Support:
@require_multiple_services()for complex tools
Credential Store System
The server includes an abstract credential store API and a default backend for managing Google OAuth credentials with support for multiple storage backends:
Features:
Abstract Interface:
CredentialStorebase class defines standard operations (get, store, delete, list users)Local File Storage:
LocalDirectoryCredentialStoreimplementation stores credentials as JSON filesConfigurable Storage: Environment variable
GOOGLE_MCP_CREDENTIALS_DIRsets storage locationMulti-User Support: Store and manage credentials for multiple Google accounts
Automatic Directory Creation: Storage directory is created automatically if it doesn't exist
Configuration:
# Optional: Set custom credentials directory
export GOOGLE_MCP_CREDENTIALS_DIR="/path/to/credentials"
# Default locations (if GOOGLE_MCP_CREDENTIALS_DIR not set):
# - ~/.google_workspace_mcp/credentials (if home directory accessible)
# - ./.credentials (fallback)Usage Example:
from auth.credential_store import get_credential_store
# Get the global credential store instance
store = get_credential_store()
# Store credentials for a user
store.store_credential("user@example.com", credentials)
# Retrieve credentials
creds = store.get_credential("user@example.com")
# List all users with stored credentials
users = store.list_users()The credential store automatically handles credential serialization, expiry parsing, and provides error handling for storage operations.
⊠ Security
Credentials: Never commit
.env,client_secret.jsonor the.credentials/directory to source control!OAuth Callback: Uses
http://localhost:8000/oauth2callbackfor development (requiresOAUTHLIB_INSECURE_TRANSPORT=1)Transport-Aware Callbacks: Stdio mode starts a minimal HTTP server only for OAuth, ensuring callbacks work in all modes
Production: Use HTTPS & OAuth 2.1 and configure accordingly
Scope Minimization: Tools request only necessary permissions
≡ License
MIT License - see LICENSE file for details.
Validations:
Available Tools
105 toolsadd_conditional_formattingA
Adds a conditional formatting rule to a range.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. range_name (str): A1-style range (optionally with sheet name). Required. condition_type (str): Sheets condition type (e.g., NUMBER_GREATER, TEXT_CONTAINS, DATE_BEFORE, CUSTOM_FORMULA). condition_values (Optional[Union[str, List[Union[str, int, float]]]]): Values for the condition; accepts a list or a JSON string representing a list. Depends on condition_type. background_color (Optional[str]): Hex background color to apply when condition matches. text_color (Optional[str]): Hex text color to apply when condition matches. rule_index (Optional[int]): Optional position to insert the rule (0-based) within the sheet's rules. gradient_points (Optional[Union[str, List[dict]]]): List (or JSON list) of gradient points for a color scale. If provided, a gradient rule is created and boolean parameters are ignored.
Returns: str: Confirmation of the added rule.
| Name | Required | Description | Default |
|---|---|---|---|
| range_name | Yes | ||
| rule_index | No | ||
| text_color | No | ||
| condition_type | Yes | ||
| spreadsheet_id | Yes | ||
| gradient_points | No | ||
| background_color | No | ||
| condition_values | No | ||
| user_google_email | 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 discloses the effect (adds a rule), key behavioral details (e.g., gradient points create a gradient rule and ignore boolean parameters), and return type. It lacks permission or auth context, but the required user_google_email parameter hints at authentication.
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 well-structured with a concise one-sentence purpose followed by an Args section and a Returns section. It is longer due to the parameter explanations, but every sentence serves a purpose given the lack of schema descriptions.
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?
Given the tool's complexity (9 parameters, no annotations, no schema descriptions), the description is nearly complete. It covers all parameters, behavior, and return value. It does not address error conditions or prerequisites beyond user_google_email, but this is a minor gap.
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 description provides detailed explanations for all 9 parameters, including types, required status, and dependencies (e.g., 'Values for the condition... Depends on condition_type'). Since schema coverage is 0%, this fully compensates and adds significant meaning beyond the schema.
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 clearly states 'Adds a conditional formatting rule to a range' with a specific verb and resource. It distinguishes from sibling tools like update_conditional_formatting and delete_conditional_formatting by focusing on the 'add' action.
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 guidance on when to use this tool versus alternatives. Sibling tools (update_conditional_formatting, delete_conditional_formatting) exist, but the description does not mention them or provide context on choosing this tool. Usage is only implied by the word 'Adds'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_modify_gmail_message_labelsA
Adds or removes labels from multiple Gmail messages in a single batch request.
Args: user_google_email (str): The user's Google email address. Required. message_ids (List[str]): A list of message IDs to modify. add_label_ids (Optional[List[str]]): List of label IDs to add to the messages. remove_label_ids (Optional[List[str]]): List of label IDs to remove from the messages.
Returns: str: Confirmation message of the label changes applied to the messages.
| Name | Required | Description | Default |
|---|---|---|---|
| message_ids | Yes | ||
| add_label_ids | No | Label IDs to add to messages. | |
| remove_label_ids | No | Label IDs to remove from messages. | |
| user_google_email | 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 must carry the behavioral disclosure burden. It states the core action and return type but does not discuss permissions, error handling, partial failures, or the destructive nature of removing labels. It also does not mention authentication requirements, which are likely necessary.
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 well-structured as a docstring with Args and Returns sections. It is concise, with each line serving a purpose, and no extraneous text.
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?
Given the tool's moderate complexity and the absence of annotations, the description provides adequate but not exhaustive context. It covers all parameters and the return value, but lacks prerequisites, error handling, or batch-specific behaviors. The output schema is noted as present, so return description is redundant, but the overall context is slightly thin.
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 input schema covers 50% of parameters, leaving user_google_email and message_ids undocumented in the schema. The description compensates by clearly explaining these two parameters, noting 'Required' and providing a concise purpose. It also confirms the optional nature of add/remove lists.
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 clearly states the tool's function: 'Adds or removes labels from multiple Gmail messages in a single batch request.' It uses a specific verb and resource, and the scope 'multiple' and 'batch' differentiates it from the sibling modify_gmail_message_labels.
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 implies batch usage but does not explicitly state when to use this tool over the singular modify_gmail_message_labels or other alternatives. It mentions 'single batch request' but no explicit exclusions or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_docA
Executes multiple document operations in a single atomic batch update.
Args: user_google_email: User's Google email address document_id: ID of the document to update operations: List of operation dictionaries. Each operation should contain: - type: Operation type ('insert_text', 'delete_text', 'replace_text', 'format_text', 'insert_table', 'insert_page_break') - Additional parameters specific to each operation type
Example operations: [ {"type": "insert_text", "index": 1, "text": "Hello World"}, {"type": "format_text", "start_index": 1, "end_index": 12, "bold": true}, {"type": "insert_table", "index": 20, "rows": 2, "columns": 3} ]
Returns: str: Confirmation message with batch operation results
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | ||
| document_id | Yes | ||
| user_google_email | 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 transparency burden. It discloses key behavioral traits: operations are executed in a single atomic batch, and it also lists supported operation types and the return format. It does not cover error handling or permission requirements, but the provided details are substantial.
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 well-organized with clear sections (Args, Example operations, Returns), front-loads the core purpose, and contains no superfluous information. Every sentence adds value, making it appropriately sized for the tool's complexity.
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 batch update tool, the description provides the essential elements: purpose, parameter examples, and return type. It does not cover edge cases like validation failures or whether all operation types are equally supported, but given no annotations or output schema details, it is reasonably complete for an agent to select and invoke the tool.
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 fully explain parameters. It does this well: each parameter is described concisely, and the complex 'operations' parameter is given structure with allowed types and a concrete example. This goes beyond the basic baseline 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 clearly states the tool's function: 'Executes multiple document operations in a single atomic batch update.' This specifies a verb (executes), a resource (document operations), and the batch/atomic nature, which distinguishes it from single-operation siblings like modify_doc_text or insert_doc_elements.
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 implies the tool is for performing multiple document operations atomically, which gives clear contextual usage. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_presentationC
Apply batch updates to a Google Slides presentation.
Args: user_google_email (str): The user's Google email address. Required. presentation_id (str): The ID of the presentation to update. requests (List[Dict[str, Any]]): List of update requests to apply.
Returns: str: Details about the batch update operation results.
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | ||
| presentation_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It does not mention that updates modify the presentation destructively, whether requests are atomic, or any authentication requirements. The return type is described, but side effects and rate limits are omitted.
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 concise and well-structured with an Args/Returns format, making key information easy to parse. The parameter descriptions are somewhat redundant with the schema but do not add excessive verbosity.
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 tool with three required parameters, including a complex list of request objects, and no annotations or detailed schema coverage, the description is insufficient. It omits how to construct requests, error handling behavior, and the exact return content, leaving critical operational details 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?
The description adds basic parameter explanations (e.g., user_google_email is required) but does not explain the structure of `requests` objects, which are arbitrary dictionaries. Given 0% schema description coverage, this is a significant gap that leaves users guessing about valid request formats.
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 clearly states the operation as 'Apply batch updates to a Google Slides presentation', which is a specific verb+resource combination that distinguishes it from read-only presentation tools like get_presentation. However, it lacks detail on what 'batch updates' entails, preventing a perfect score.
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 provides no explicit guidance on when to use this tool versus alternatives like batch_update_doc or individual update tools. It implies use for multiple updates but does not state exclusions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_drive_file_public_accessA
Searches for a file by name and checks if it has public link sharing enabled.
Args: user_google_email (str): The user's Google email address. Required. file_name (str): The name of the file to check.
Returns: str: Information about the file's sharing status and whether it can be used in Google Docs.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| user_google_email | 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 search-and-check behavior and describes the return value as a string with sharing status and Google Docs usability. However, it omits edge-case behaviors such as multiple files with the same name, exact-match requirements, or what happens if no file is found. It also doesn't mention whether it is a pure read operation or if any side effects occur, though it appears safe.
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 well-structured with a clear opening sentence, an Args section, and a Returns section. Every sentence earns its place: the purpose is stated first, then parameters are defined, and the return type is clarified. There is no redundant or filler content, and the format is easy to parse.
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 two-parameter tool that returns a string, the description is largely sufficient. The presence of an output schema (not shown) means return values don't need to be explained, yet the description still provides return info. The main gaps are lack of guidance on file lookup uniqueness and potential error cases, but given the tool's simplicity, the description covers the essentials.
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 schema only provides parameter names and types with no descriptions (0% coverage). The description compensates by explaining both parameters: 'user_google_email (str): The user's Google email address. Required.' and 'file_name (str): The name of the file to check.' This adds meaningful semantic value beyond the schema, though it could further specify constraints like case sensitivity or exact match requirement.
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 clearly states a specific action: 'Searches for a file by name and checks if it has public link sharing enabled.' This combines a specific verb ('searches', 'checks') with a resource (file) and a specific scope (public link sharing), distinguishing it from sibling tools like search_drive_files or get_drive_file_permissions.
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 implies usage context: use when you need to find a file by name and determine if it has public link sharing. While it doesn't explicitly name alternatives or exclusions, the purpose is clear enough that an agent can infer when to select this tool over others like get_drive_shareable_link or get_drive_file_permissions. No misleading guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_completed_tasksA
Clear all completed tasks from a task list. The tasks will be marked as hidden.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to clear completed tasks from.
Returns: str: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| task_list_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It importantly reveals that tasks are 'marked as hidden' rather than permanently deleted, which is a non-obvious and critical behavior. It also specifies that user_google_email is required, implying an authentication need. However, it does not mention reversibility or permissions beyond the required email.
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 concise and well-structured. The core purpose is stated in the first sentence, followed by a critical behavioral note. The Args and Returns sections are clearly formatted and contain no unnecessary 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?
The tool has only 2 parameters, both explained in the description. The return type is specified ('str: Confirmation message'). The action and side effect are clear. The description is fully sufficient for an agent to invoke the tool correctly, even without additional schemas or annotations.
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 input schema provides only names and types with no descriptions. The description compensates fully by explaining each parameter: 'The user's Google email address' and 'The ID of the task list to clear completed tasks from.' This completely clarifies the meaning of both required parameters.
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 clearly states the tool's function: 'Clear all completed tasks from a task list.' It uses a specific verb and resource, and the additional note that tasks are 'marked as hidden' distinguishes it from a simple delete. Sibling tools like delete_task and move_task are clearly different in scope.
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 provides clear context for when to use the tool—when you need to clear completed tasks from a list. It does not explicitly mention alternatives or when-not-to-use scenarios, but the context is unambiguous. The required email and list ID give necessary context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_docA
Creates a new Google Doc and optionally inserts initial content.
Returns: str: Confirmation message with document ID and link.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | No | ||
| user_google_email | 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 burden. It discloses that the tool creates a doc, optionally inserts content, and returns a confirmation message with document ID and link. However, it does not mention authorization requirements, behavior on invalid input, or potential side effects beyond creation, leaving some behavioral 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?
The description is highly concise, with a clear action sentence followed by a structured return type statement. Every word adds value, and the information is front-loaded.
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 create tool with no nested objects and a clear return schema, the description covers the main function and return value. However, the unexplained required parameter 'user_google_email' and lack of any usage prerequisites or content format details leave gaps that reduce completeness.
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 has 0% description coverage, and the description adds minimal parameter meaning. It notes that 'content' is optional initial content, and the title is implied as the doc title, but the required 'user_google_email' parameter is unexplained. Without schema descriptions, the description should compensate more for parameter 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?
The description clearly states the tool's primary action: 'Creates a new Google Doc and optionally inserts initial content.' This is specific and uses a distinct resource (Google Doc), differentiating it from sibling tools like create_drive_file or create_spreadsheet.
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 implies usage for creating a new Google Doc with optional initial content, but it does not explicitly state when to prefer this over alternatives or mention any exclusions. Since the tool name is clear, usage is somewhat implied, but explicit guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_document_commentC
Create a new comment on a Google Document.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| comment_content | Yes | ||
| user_google_email | 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 only states the basic action without disclosing behavioral details such as authentication requirements, whether the comment is anchored to a specific location, or the response format. This is a mutation tool, so more context is expected.
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 one concise sentence, front-loaded and easy to parse. It avoids verbosity, but under-specification limits its value. Still, the brevity is appropriate for the simple action.
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 tool with three required parameters, no annotation coverage, and no description-level parameter context, the one-sentence description is incomplete. It doesn't mention prerequisites (e.g., Google auth), what inputs are needed, or any post-conditions. Although an output schema exists, the description still leaves significant gaps in user guidance.
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?
With schema description coverage at 0%, the description must compensate by explaining parameters. It does not mention user_google_email, document_id, or comment_content at all. The parameter names are somewhat self-explanatory, but without clarification of user_google_email's role (e.g., the authenticated user vs. an attributor) the semantics remain ambiguous.
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 'Create a new comment on a Google Document' clearly specifies the verb (create), the resource (comment), and the target (Google Document). It distinguishes from sibling comment tools like read_document_comments, reply_to_document_comment, and resolve_document_comment.
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 provides no guidance on when to use this tool versus alternatives such as reply_to_document_comment or read_document_comments. It does not mention any prerequisities, exclusions, or alternative scenarios, leaving the user to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_drive_fileA
Creates a new file in Google Drive, supporting creation within shared drives. Accepts either direct content or a fileUrl to fetch the content from.
Args: user_google_email (str): The user's Google email address. Required. file_name (str): The name for the new file. content (Optional[str]): If provided, the content to write to the file. folder_id (str): The ID of the parent folder. Defaults to 'root'. For shared drives, this must be a folder ID within the shared drive. mime_type (str): The MIME type of the file. Defaults to 'text/plain'. fileUrl (Optional[str]): If provided, fetches the file content from this URL. Supports file://, http://, and https:// protocols.
Returns: str: Confirmation message of the successful file creation with file link.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | ||
| fileUrl | No | ||
| file_name | Yes | ||
| folder_id | No | root | |
| mime_type | No | text/plain | |
| user_google_email | 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 burden of behavioral disclosure. It explains two content sources (direct content or fileUrl), the fileUrl protocols supported, folder_id behavior for shared drives, and return value. However, it does not specify what happens if both content and fileUrl are provided, leaving a slight ambiguity.
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 moderately sized but well-structured, with a clear one-sentence summary followed by an enumerated Args list and Returns line. Each param has a concise explanation, and there is no redundant filler. It earns its length.
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 description covers the key operational aspects: creation, shared drive support, content sources, defaults, and return value. However, it lacks explicit handling for edge cases like conflicting content/fileUrl inputs or auth prerequisites, which would make it fully complete given the absence of annotations.
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 fully compensate. It does so by documenting every parameter: user_google_email is required, content is optional, folder_id defaults to 'root' and must be within shared drives, mime_type defaults to text/plain, and fileUrl supports specific protocols. This adds significant meaning beyond the raw schema.
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 clearly states the tool's function with a specific verb and resource: 'Creates a new file in Google Drive.' It also distinguishes itself from siblings like update_drive_file and get_drive_file_content by focusing on creation and mentions shared drive support, which is a notable differentiator.
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 implies the tool should be used when creating a new Drive file, but it does not explicitly state when not to use it or mention alternatives. Sibling tools like update_drive_file are clearly for existing files, but no direct contrast is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_eventA
Creates a new event.
Args: user_google_email (str): The user's Google email address. Required. summary (str): Event title. start_time (str): Start time (RFC3339, e.g., "2023-10-27T10:00:00-07:00" or "2023-10-27" for all-day). end_time (str): End time (RFC3339, e.g., "2023-10-27T11:00:00-07:00" or "2023-10-28" for all-day). calendar_id (str): Calendar ID (default: 'primary'). description (Optional[str]): Event description. location (Optional[str]): Event location. attendees (Optional[List[str]]): Attendee email addresses. timezone (Optional[str]): Timezone (e.g., "America/New_York"). attachments (Optional[List[str]]): List of Google Drive file URLs or IDs to attach to the event. add_google_meet (bool): Whether to add a Google Meet video conference to the event. Defaults to False. reminders (Optional[Union[str, List[Dict[str, Any]]]]): JSON string or list of reminder objects. Each should have 'method' ("popup" or "email") and 'minutes' (0-40320). Max 5 reminders. Example: '[{"method": "popup", "minutes": 15}]' or [{"method": "popup", "minutes": 15}] use_default_reminders (bool): Whether to use calendar's default reminders. If False, uses custom reminders. Defaults to True. transparency (Optional[str]): Event transparency for busy/free status. "opaque" shows as Busy (default), "transparent" shows as Available/Free. Defaults to None (uses Google Calendar default). visibility (Optional[str]): Event visibility. "default" uses calendar default, "public" is visible to all, "private" is visible only to attendees, "confidential" is same as private (legacy). Defaults to None (uses Google Calendar default).
Returns: str: Confirmation message of the successful event creation with event link.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | ||
| end_time | Yes | ||
| location | No | ||
| timezone | No | ||
| attendees | No | ||
| reminders | No | ||
| start_time | Yes | ||
| visibility | No | ||
| attachments | No | ||
| calendar_id | No | primary | |
| description | No | ||
| transparency | No | ||
| add_google_meet | No | ||
| user_google_email | Yes | ||
| use_default_reminders | 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 return behavior (confirmation with event link) and some parameter interactions (use_default_reminders vs reminders). However, it omits broader operational details such as authentication requirements, potential side effects (e.g., sending invitations to attendees), or any rate limits/destructive actions.
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 long but well-structured as a docstring with an Args section and Returns section. Every sentence adds necessary value given the schema lacks descriptions. The front-loaded 'Creates a new event' and clear formatting make it easy to scan despite the length.
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 description thoroughly covers all parameters and the return value. However, it omits critical operational context such as authentication prerequisites (e.g., requiring start_google_auth) and how the tool interacts with Google Calendar permissions. For a create operation with complex options, this is a minor but notable gap.
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?
With 0% schema coverage, the description fully compensates by documenting all 15 parameters with types, defaults, examples, and constraints (e.g., reminders max 5, RFC3339 format). This goes far beyond what the raw schema provides, adding meaningful semantics for each parameter.
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 opens with 'Creates a new event,' which is a specific verb and resource. It clearly identifies the action but does not explicitly differentiate from sibling tools like modify_event or delete_event, so it lacks overt sibling differentiation.
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 usage is implied: this tool creates a new event. However, there is no explicit guidance on when to use it versus alternatives, no exclusions, and no mention of prerequisites such as prior authentication. The description does not state 'use modify_event for changes' or similar guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_formB
Create a new form using the title given in the provided form message in the request.
Args: user_google_email (str): The user's Google email address. Required. title (str): The title of the form. description (Optional[str]): The description of the form. document_title (Optional[str]): The document title (shown in browser tab).
Returns: str: Confirmation message with form ID and edit URL.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| description | No | ||
| document_title | No | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the return behavior (confirmation message with form ID and edit URL) and includes an Args section with types and required markers. However, it does not mention potential side effects beyond creation, required authentication/permissions, or error conditions. The reference to a 'provided form message' is unexplained, which is a significant transparency gap, especially with no annotations to cover the burden.
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 well-structured with a purpose statement followed by Args and Returns sections. It is concise and front-loaded. The opening sentence is somewhat awkward due to the 'provided form message' phrase, but overall it earns its place without fluff.
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 description is incomplete for a create operation. It fails to explain what a 'form message' is, which appears to be a prerequisite for invoking the tool correctly. While the return value is stated, there is no mention of required permissions, the environment (Google Workspace), or any post-creation implications. This ambiguity significantly reduces completeness.
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?
With 0% schema description coverage, the description compensates by explaining each parameter's purpose: user_google_email, title, description, and document_title. It also flags required parameters. However, it does not clarify the relationship between the 'title given in the provided form message' and the 'title' parameter, leaving a semantic 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 clearly states the tool creates a new form, establishing a specific verb and resource. It is distinct from sibling tools like get_form or set_publish_settings. However, the phrase 'using the title given in the provided form message in the request' introduces ambiguity about whether the title comes from a message or the 'title' parameter, slightly clouding the purpose.
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 guidance is given on when to use this tool versus alternatives such as get_form or other creation tools. There is no mention of prerequisites, exclusions, or intended scenarios. The description only states what the tool does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_gmail_filterB
Creates a Gmail filter using the users.settings.filters API.
Args: user_google_email (str): The user's Google email address. Required. criteria (Dict[str, Any]): Criteria for matching messages. action (Dict[str, Any]): Actions to apply to matched messages.
Returns: str: Confirmation message with the created filter ID.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Filter action object as defined in the Gmail API. | |
| criteria | Yes | Filter criteria object as defined in the Gmail API. | |
| user_google_email | 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 provided, the description carries the full burden of disclosing behavioral traits. It states the return value (confirmation message with filter ID) but does not mention permissions, reversibility, idempotency, error behavior, or side effects. This is inadequate for a mutation 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 description is well-structured with Args and Returns sections, and every sentence is purposeful. It is concise and front-loaded with the core purpose. Minor redundancy with schema types but overall efficient.
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 has nested objects (criteria and action) with complex structures, but the description provides no details or examples on how to construct them. It does not explain valid fields or formats, leaving the agent under-informed. The return value is specified, but the input construction is insufficiently described.
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 description adds meaning beyond the schema: for user_google_email, which has no schema description, it clarifies it is the user's Google email and required. For criteria and action, it provides plain-language explanations ('Criteria for matching messages', 'Actions to apply to matched messages') that complement the vague schema descriptions. Schema coverage is 67%, and the description helps compensate.
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 clearly states the tool's action: 'Creates a Gmail filter using the users.settings.filters API.' It specifies the exact resource and API, distinguishing it from siblings like list_gmail_filters and delete_gmail_filter. The verb 'creates' is specific and unambiguous.
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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or scenarios where another tool might be more appropriate. Usage is only implied by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_meeting_with_zoomA
Create a Google Calendar event WITH a Zoom meeting link automatically added.
This is the preferred way to create meetings - it creates a Zoom meeting and a Google Calendar event in one step, with the Zoom link included.
Args: summary: The meeting title (used for both Calendar event and Zoom meeting) start_time: Start time in RFC3339 format (e.g., "2026-01-15T10:00:00-05:00") end_time: End time in RFC3339 format (e.g., "2026-01-15T11:00:00-05:00") attendees: Optional list of attendee email addresses description: Optional meeting description/agenda location: Optional location (Zoom link will be appended) timezone: Timezone for the Zoom meeting (default: "America/New_York")
Returns: dict containing: - calendar_event: The created Google Calendar event details - zoom_meeting: The created Zoom meeting details including join_url - message: Success message with links
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | ||
| end_time | Yes | ||
| location | No | ||
| timezone | No | America/New_York | |
| attendees | No | ||
| start_time | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 two resources are created (calendar event and Zoom meeting), that the Zoom link is appended to the location, and that the return contains both details. It does not mention failure modes, permissions, or whether attendees receive invitations, but the disclosed behaviors are significant and well-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?
The description is well-structured with an intro sentence, an Args section, and a Returns section. Every sentence provides useful information, and it is not overly verbose despite covering 7 parameters. The most important purpose is front-loaded.
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 inherently complex (coordinates two services) and has 7 parameters, but the description covers the parameters, the return structure, and the core behavioral contract. It does not explain partial-failure behavior (e.g., if Zoom creation fails, does the calendar event still get created) or authentication prerequisites, leaving some gaps.
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 schema has no descriptions (0% coverage), but the description's Args section fully compensates by explaining each of the 7 parameters, including formats, defaults, and optional status. It adds critical semantics like RFC3339 format for times, default timezone, and that location gets the Zoom link appended.
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 clearly states the tool creates a Google Calendar event with an automatically added Zoom meeting link. It distinguishes itself from sibling tools like create_event and create_zoom_meeting by explicitly saying it combines both in one step, and describes it as 'the preferred way to create meetings'.
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 says 'This is the preferred way to create meetings' and explains the one-step combined creation, giving clear context for when to use it. However, it does not explicitly mention alternatives or when-not-to-use scenarios (e.g., when a plain calendar event without Zoom is needed), which would earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presentationA
Create a new Google Slides presentation.
Args: user_google_email (str): The user's Google email address. Required. title (str): The title for the new presentation. Defaults to "Untitled Presentation".
Returns: str: Details about the created presentation including ID and URL.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Untitled Presentation | |
| user_google_email | 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 states the basic create action and return value, but does not disclose authorization requirements, potential side effects, or error behavior. For a write operation with no annotation safety flags, this lacks critical transparency.
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 concise and well-structured with Args and Returns sections. Every sentence provides useful information and there is no filler.
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 create tool with two parameters and an output schema, the description is largely complete: it covers all parameters and return semantics. However, it omits usage context like authentication needs or relationship to sibling tools, which would make it fully robust.
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 fully explains both parameters: user_google_email is the required Google email, and title defaults to 'Untitled Presentation'. This adds clear meaning beyond the raw schema.
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 uses the specific verb 'Create' with the resource 'Google Slides presentation', making the action explicit. It is clearly distinct from sibling tools like create_presentation_comment or get_presentation.
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 implies usage (when you need to create a new presentation) but does not provide explicit guidance on when to choose this over alternatives or any exclusions. It does not mention prerequisites like authentication or when another creation tool might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presentation_commentC
Create a new comment on a Google Presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_content | Yes | ||
| presentation_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It implies a write operation ('Create') but does not mention authentication requirements, potential side effects, or what happens on failure. This is insufficient for a mutation 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 description is a single concise sentence with no wasted words. It is appropriately sized for the simple action it describes, earning a high score for efficiency.
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?
Despite the tool's simplicity and the presence of an output schema, the description is too sparse. It lacks usage context, parameter explanations, and behavioral details (like whether authentication is needed). The tool has 3 required parameters at 0% schema coverage, so more context is needed 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%, so the description must compensate. It implies that 'comment_content' is the text of the comment and 'presentation_id' identifies the presentation, but it does not explain 'user_google_email' or any parameter syntax/format. It adds minimal value beyond the parameter names.
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 clearly states the action ('Create a new comment') and the target resource ('Google Presentation'). It distinguishes from sibling tools like 'reply_to_presentation_comment' by specifying 'new' and from doc/spreadsheet comment tools by naming the resource.
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 guidance is provided about when to use this tool versus alternatives, no prerequisites are mentioned, and there are no exclusions. The description merely states the tool's function without any contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sheetA
Creates a new sheet within an existing spreadsheet.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. sheet_name (str): The name of the new sheet. Required.
Returns: str: Confirmation message of the successful sheet creation.
| Name | Required | Description | Default |
|---|---|---|---|
| sheet_name | Yes | ||
| spreadsheet_id | Yes | ||
| user_google_email | 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 full burden for behavioral disclosure. It only states the operation and return value, but does not mention side effects, required permissions, reversibility, or error conditions. This is a significant gap for a mutation 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 description is concise and well-structured, with a clear first line, a list of arguments, and a return value. Every sentence contributes necessary information without redundancy.
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 creation tool, the description covers the essential information: what it does, required parameters, and return value. It could mention prerequisites (e.g., spreadsheet must exist) or error behavior, but the simplicity of the tool makes this description reasonably complete.
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 schema has 0% description coverage, so the description must compensate. It provides one-line explanations for each parameter (e.g., 'The ID of the spreadsheet'), adding basic meaning beyond the schema. However, it lacks format details, examples, or constraints, so it only minimally compensates.
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 clearly states 'Creates a new sheet within an existing spreadsheet,' which is a specific verb+resource. It distinguishes itself from siblings like create_spreadsheet (new spreadsheet) and modify_sheet_values (modifies values).
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 phrase 'within an existing spreadsheet' clearly implies the tool requires an existing spreadsheet, providing context for when to use it. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_spreadsheetA
Creates a new Google Spreadsheet.
Args: user_google_email (str): The user's Google email address. Required. title (str): The title of the new spreadsheet. Required. sheet_names (Optional[List[str]]): List of sheet names to create. If not provided, creates one sheet with default name.
Returns: str: Information about the newly created spreadsheet including ID, URL, and locale.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| sheet_names | No | ||
| user_google_email | 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 for behavioral disclosure. It explains what is created, how optional sheet_names behave (default single sheet), and what the return value contains. It does not mention authentication prerequisites or that the operation is a permanent write, but it is reasonably transparent for a creation 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 description is structured as a docstring with a one-line summary followed by concise, relevant parameter and return explanations. Every sentence adds value and there is no padding or redundancy.
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 description covers the tool's purpose, all parameters, default behavior, and return type. It does not address how it relates to sibling tools like create_sheet or mention authentication steps, but it is otherwise complete for invoking the tool successfully.
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%, but the description compensates fully. It explains each parameter, marks required fields, specifies the type and role of sheet_names, and clarifies the default behavior. This goes well beyond what the bare schema provides.
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 starts with 'Creates a new Google Spreadsheet', a specific verb+resource that clearly distinguishes it from siblings like create_sheet (which adds a sheet to an existing spreadsheet) and create_drive_file. The name itself is also descriptive.
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 implies its use case by detailing parameters and return behavior, but it does not explicitly say when to prefer this over create_sheet or other alternatives. There is no exclusion guidance or mention of prerequisites, leaving some ambiguity for an agent deciding between similar tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_spreadsheet_commentC
Create a new comment on a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | ||
| comment_content | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It only states the action without disclosing side effects, permission requirements, or how the comment is associated with the user_google_email parameter. It lacks the detail expected for a mutation 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 description is a single, non-verbose sentence that is easy to read, but it is under-specified. While it earns its place, the lack of additional context makes it minimally adequate rather than 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?
The presence of an output schema covers return values, but the description fails to provide essential context such as auth requirements, comment placement, or parameter semantics. For a tool with 0% parameter coverage and no annotations, this is insufficient.
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 does not explain any of the three required parameters (user_google_email, spreadsheet_id, comment_content). It provides no additional meaning beyond the parameter names themselves.
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 uses a specific verb ('Create') and resource ('a new comment on a Google Spreadsheet'), clearly distinguishing it from comment-related actions on documents or presentations. It directly indicates the tool's function and target platform.
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 guidance is given about when to use this tool versus siblings like reply_to_spreadsheet_comment or read_spreadsheet_comments. It does not mention prerequisites such as Google authentication or whether this creates top-level comments only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_table_with_dataA
Creates a table and populates it with data in one reliable operation.
CRITICAL: YOU MUST CALL inspect_doc_structure FIRST TO GET THE INDEX!
MANDATORY WORKFLOW - DO THESE STEPS IN ORDER:
Step 1: ALWAYS call inspect_doc_structure first Step 2: Use the 'total_length' value from inspect_doc_structure as your index Step 3: Format data as 2D list: [["col1", "col2"], ["row1col1", "row1col2"]] Step 4: Call this function with the correct index and data
EXAMPLE DATA FORMAT: table_data = [ ["Header1", "Header2", "Header3"], # Row 0 - headers ["Data1", "Data2", "Data3"], # Row 1 - first data row ["Data4", "Data5", "Data6"] # Row 2 - second data row ]
CRITICAL INDEX REQUIREMENTS:
NEVER use index values like 1, 2, 10 without calling inspect_doc_structure first
ALWAYS get index from inspect_doc_structure 'total_length' field
Index must be a valid insertion point in the document
DATA FORMAT REQUIREMENTS:
Must be 2D list of strings only
Each inner list = one table row
All rows MUST have same number of columns
Use empty strings "" for empty cells, never None
Use debug_table_structure after creation to verify results
Args: user_google_email: User's Google email address document_id: ID of the document to update table_data: 2D list of strings - EXACT format: [["col1", "col2"], ["row1col1", "row1col2"]] index: Document position (MANDATORY: get from inspect_doc_structure 'total_length') bold_headers: Whether to make first row bold (default: true)
Returns: str: Confirmation with table details and link
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| table_data | Yes | ||
| document_id | Yes | ||
| bold_headers | No | ||
| user_google_email | 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 and succeeds. It discloses the critical dependency on inspect_doc_structure, the exact source and validity requirements for the index, data format constraints, and post-creation verification via debug_table_structure. It also states the return value and default for bold_headers.
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 well-structured and front-loaded with critical information. However, the same index-related warning is repeated multiple times in slightly different forms, adding unnecessary length. Still, the level of detail is justified by the tool's cross-tool dependency.
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 description covers all five parameters, the required sibling-tool call, validation rules, a data format example, the return type, and a verification step. With the output schema also present, an agent has everything needed to use this tool correctly. No major gaps are evident.
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%, but the description compensates fully. Every parameter is explained in the Args section, including the exact 2D-list format for table_data, the mandatory source for index, and the default for bold_headers. A worked example further clarifies usage.
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 clearly states the tool's function: 'Creates a table and populates it with data in one reliable operation.' This is a specific verb+resource combination and distinguishes it from generic document-insertion tools like insert_doc_elements.
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 provides an explicit mandatory workflow: must call inspect_doc_structure first, use total_length as the index, and verify with debug_table_structure. It does not explicitly name alternative tools or state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_taskA
Create a new task in a task list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to create the task in. title (str): The title of the task. notes (Optional[str]): Notes/description for the task. due (Optional[str]): Due date in RFC 3339 format (e.g., "2024-12-31T23:59:59Z"). parent (Optional[str]): Parent task ID (for subtasks). previous (Optional[str]): Previous sibling task ID (for positioning).
Returns: str: Confirmation message with the new task ID and details.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | ||
| notes | No | ||
| title | Yes | ||
| parent | No | ||
| previous | No | ||
| task_list_id | Yes | ||
| user_google_email | 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 of behavioral disclosure. It states the mutation ('Create') and the return confirmation, but does not disclose auth requirements, potential errors (e.g., invalid task list), idempotency, or side effects. For a write operation, this is a notable gap.
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 well-structured docstring with a one-line purpose, Args list, and Returns. Every sentence adds value, and the format is easily parseable. No redundant or filler content.
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 7-parameter create tool with no schema descriptions and no annotations, the description covers all parameters and the return type. However, it lacks operational context such as authentication prerequisites or error behavior, which would be necessary for a fully self-contained tool definition. Given the output schema exists, return values are covered, but dynamic context is missing.
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%, but the description compensates with a detailed Args section. It explains each parameter's purpose, marks required vs optional, and provides format details (e.g., due as RFC 3339). This goes well beyond the raw schema, though some context like how to obtain task_list_id is missing.
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 'Create a new task in a task list' is a specific verb+resource statement. It clearly distinguishes this from sibling tools like create_task_list, list_tasks, and update_task, leaving no ambiguity about what action is performed.
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 purpose implies when to use it (creating tasks), but there is no explicit guidance on when not to use it or alternatives. It doesn't mention prerequisites like needing an existing task_list_id or authentication, which would help an agent decide between this and other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_task_listA
Create a new task list.
Args: user_google_email (str): The user's Google email address. Required. title (str): The title of the new task list.
Returns: str: Confirmation message with the new task list ID and details.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| user_google_email | 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 must disclose behavior. It states that a new task list is created and that the return is a confirmation message with the list ID and details. This covers the primary side effect and return. However, it does not mention authentication requirements, potential errors, or whether the operation is irreversible. For a simple create tool, the disclosure is adequate but not rich.
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 concise and well-structured. It starts with a one-sentence purpose, followed by an Args section and a Returns section. No unnecessary words or repetition. Each sentence 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?
Given the tool's simplicity (two parameters, no annotations), the description covers the essential aspects: purpose, required arguments, and return value. It is complete enough for an agent to invoke correctly. Minor gaps include lack of usage alternatives and error handling, but these are not critical for a straightforward create operation.
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 input schema provides only parameter names and types (two strings) with no descriptions. The description compensates by explaining each: 'user_google_email' is 'The user's Google email address. Required.' and 'title' is 'The title of the new task list.' This adds clear meaning beyond the schema, fully covering both parameters.
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 clearly states the action: 'Create a new task list.' The verb 'create' and resource 'task list' are specific, and it is distinct from siblings like create_task, which creates a task within a list, and list_task_lists, which reads. The purpose is unambiguous.
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 implies usage by clearly naming the operation, but it does not explicitly explain when to use this tool versus alternatives such as create_task or list_task_lists. There is no mention of exclusions or prerequisites. The usage context is inferred from the name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_zoom_meetingA
Create a new Zoom meeting.
Args: topic: The meeting topic/title start_time: Meeting start time in ISO 8601 format (e.g., "2026-01-15T10:00:00") duration: Meeting duration in minutes (default: 60) timezone: Timezone for the meeting (default: "America/New_York") agenda: Optional meeting agenda/description
Returns: dict containing: - id: Meeting ID - join_url: URL for participants to join - start_url: URL for host to start the meeting - password: Meeting password - topic: Meeting topic - start_time: Scheduled start time - duration: Duration in minutes
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | ||
| agenda | No | ||
| duration | No | ||
| timezone | No | America/New_York | |
| start_time | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It provides a detailed return value structure (id, join_url, start_url, etc.), which adds transparency about the output. However, it does not disclose potential side effects, authentication requirements, or behavioral nuances beyond the immediate creation action.
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 well-structured with distinct 'Args' and 'Returns' sections, front-loads the purpose, and contains no filler. Every line provides useful information, and the length is appropriate for the complexity of the tool.
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 5-parameter creation tool with no annotations, the description covers all required and optional parameters, their defaults, and the return structure. It is largely sufficient for an agent to invoke the tool correctly. It could be slightly more complete with error conditions or authentication notes, but the presence of an output schema reduces the need to describe return values extensively.
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 input schema has zero description coverage, and the description fully compensates by explaining each parameter in plain language. It provides an example format for start_time, states defaults for duration and timezone, and clarifies that agenda is optional. This goes well beyond the bare schema.
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 begins with a clear, specific verb and resource: 'Create a new Zoom meeting.' It is unambiguous about the tool's core function. However, it does not differentiate this tool from the sibling tool 'create_meeting_with_zoom', which appears to serve the same purpose.
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 implied by the description: this tool is for creating a Zoom meeting. There is no explicit guidance on when to prefer it over alternatives like 'create_meeting_with_zoom' or 'create_event', and no exclusion criteria or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_table_structureA
ESSENTIAL DEBUGGING TOOL - Use this whenever tables don't work as expected.
USE THIS IMMEDIATELY WHEN:
Table population put data in wrong cells
You get "table not found" errors
Data appears concatenated in first cell
Need to understand existing table structure
Planning to use populate_existing_table
WHAT THIS SHOWS YOU:
Exact table dimensions (rows × columns)
Each cell's position coordinates (row,col)
Current content in each cell
Insertion indices for each cell
Table boundaries and ranges
HOW TO READ THE OUTPUT:
"dimensions": "2x3" = 2 rows, 3 columns
"position": "(0,0)" = first row, first column
"current_content": What's actually in each cell right now
"insertion_index": Where new text would be inserted in that cell
WORKFLOW INTEGRATION:
After creating table → Use this to verify structure
Before populating → Use this to plan your data format
After population fails → Use this to see what went wrong
When debugging → Compare your data array to actual table structure
Args: user_google_email: User's Google email address document_id: ID of the document to inspect table_index: Which table to debug (0 = first table, 1 = second table, etc.)
Returns: str: Detailed JSON structure showing table layout, cell positions, and current content
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| table_index | No | ||
| user_google_email | 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 provided, the description carries the full burden. It thoroughly explains the output format (JSON with dimensions, positions, content, insertion indices) and how to interpret it. However, it does not explicitly state non-destructive behavior or error handling, which is a minor gap for an inspection 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 description is lengthy but well-structured with sections and bullet points. It is front-loaded with a clear 'ESSENTIAL' headline, and each section adds practical value. Some repetition occurs but overall it is organized and readable.
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 description covers purpose, usage triggers, output decoding, and workflow integration, making it highly complete for a debugging tool. Even with an output schema present, it clearly explains the return format and interpretation, leaving little ambiguity.
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%, but the description includes an Args section that explains all three parameters in user-meaningful terms (e.g., 'table_index: Which table to debug'). This fully compensates for the schema's minimal type-only information.
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 clearly states the tool's purpose: to debug table structure by showing dimensions, cell positions, content, and insertion indices. It uses specific verbs like 'debug' and 'shows', and clearly distinguishes itself from sibling tools by focusing on table-specific inspection.
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 provides explicit when-to-use scenarios (e.g., wrong cell placement, 'table not found' errors, planning to use populate_existing_table) and workflow integration steps. This gives clear guidance on when to choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_conditional_formattingA
Deletes an existing conditional formatting rule by index on a sheet.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. rule_index (int): Index of the rule to delete (0-based). sheet_name (Optional[str]): Name of the sheet that contains the rule. Defaults to the first sheet if not provided.
Returns: str: Confirmation of the deletion and the current rule state.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_index | Yes | ||
| sheet_name | No | ||
| spreadsheet_id | Yes | ||
| user_google_email | 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 relies on its own wording to convey destructive behavior, which it does by stating 'Deletes' and noting it returns confirmation and current rule state. It doesn't disclose side effects like index shifting or irreversibility, but the primary destructive action is clear and the return behavior adds useful context.
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 well-structured with a one-sentence summary followed by a tidy Args list and Returns note. Every line adds value, and the length is appropriate for four parameters. It is front-loaded with the main purpose.
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?
All four parameters are described, including the optional sheet_name and its default behavior. The return type is also specified, and the output schema exists to cover return structure. The description provides sufficient information for an agent to invoke the tool correctly.
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%, but the description fully compensates with a detailed Args section: it provides types, required status, defaults (sheet_name defaults to null), and the important 0-based index note for rule_index. This is more informative than the bare schema.
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 opens with 'Deletes an existing conditional formatting rule by index on a sheet', which is a specific verb ('deletes') and resource ('conditional formatting rule') with the deletion mechanism ('by index'). This clearly differentiates it from sibling tools like add_conditional_formatting and update_conditional_formatting.
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 clearly states the operation and its parameters, making it evident this is the deletion tool among conditional formatting siblings. However, it does not explicitly mention when to use this instead of add/update, nor does it note that indices may shift after deletion, which would be helpful context for sequencing operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_eventA
Deletes an existing event.
Args: user_google_email (str): The user's Google email address. Required. event_id (str): The ID of the event to delete. calendar_id (str): Calendar ID (default: 'primary').
Returns: str: Confirmation message of the successful event deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | ||
| calendar_id | No | primary | |
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does not disclose that deletion is permanent/irreversible or mention required permissions (auth). It only states the action and return message, which is insufficient for a destructive 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 short and structured into Args and Returns sections, with no redundant text. It clearly conveys the needed information in a straightforward, scannable format.
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 deletion tool, the description covers the basics (action, parameters, return), but it lacks behavioral warnings like irreversibility or prerequisites. It also doesn't mention error handling, making it functional but not comprehensive for a destructive action.
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 description lists all parameters with brief explanations: user_google_email as the user's email, event_id as the event ID, and calendar_id with a default. Since the schema provides no parameter descriptions, this adds necessary meaning, even though the explanations are minimal.
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 opens with 'Deletes an existing event,' which clearly states the action and resource. This distinguishes it from sibling tools like create_event and modify_event by explicitly targeting deletion.
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 does not explicitly compare with alternatives or specify when to use it; usage is implied from the verb 'Deletes' and the context of sibling tools. It lacks guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_gmail_filterB
Deletes a Gmail filter by ID.
Args: user_google_email (str): The user's Google email address. Required. filter_id (str): The ID of the filter to delete.
Returns: str: Confirmation message for the deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_id | Yes | ID of the filter to delete. | |
| user_google_email | 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 of behavioral disclosure. It indicates deletion (destructive) but does not mention permanent deletion, idempotency, error behavior if the filter is not found, or any required authentication steps. The return value is noted, but no other behavioral traits are disclosed.
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 concise and structured: a purpose sentence followed by clearly formatted Args and Returns sections. It is front-loaded with the key action and avoids unnecessary wording. Slight redundancy with the schema for filter_id, but overall efficient.
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 2-parameter delete tool, the description is minimally adequate. It includes the return type and parameter lists, but lacks context about the need to first list filters to obtain the ID, potential side effects, or when this tool is preferred over other filter management tools. The presence of an output schema reduces the need to describe return details, but more contextual guidance would improve completeness.
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 50% because user_google_email lacks a description in the schema. The description adds meaning for user_google_email ('The user's Google email address. Required.') and repeats the filter_id description from the schema. This compensates partially for the gap but does not fully enrich the parameter 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?
The description clearly states 'Deletes a Gmail filter by ID,' using a specific verb ('Deletes') and resource ('Gmail filter'), which distinguishes it from sibling tools like list_gmail_filters and create_gmail_filter.
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 guidance is provided on when to use this tool versus alternatives, such as needing to obtain the filter ID from list_gmail_filters, or situations where create_gmail_filter would be more appropriate. The description simply states the action without context or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_taskA
Delete a task from a task list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list containing the task. task_id (str): The ID of the task to delete.
Returns: str: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| task_list_id | Yes | ||
| user_google_email | 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 mentions the action and return message but does not disclose whether deletion is permanent, any permission requirements, or error behavior. This lack of transparency is a significant gap for a mutation 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 description is concise and well-structured: a one-sentence summary followed by explicit Args and Returns sections. Every element is useful and nothing is 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?
For a simple delete operation, the description adequately covers purpose, all parameters, and the return value. It lacks details on edge cases or permissions, but these are not critical given the tool's low complexity and the presence of an output schema.
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 description comprehensively explains all three parameters, including types and meaning (e.g., 'The user's Google email address. Required.'). This fully compensates for the 0% schema description coverage.
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 clear action and target: 'Delete a task from a task list.' This distinguishes it from sibling tools like delete_task_list and other task-related operations.
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 guidance is provided on when to use this tool versus alternatives such as clear_completed_tasks or delete_task_list. There are no prerequisites or exclusions, leaving the usage context entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_task_listA
Delete a task list. Note: This will also delete all tasks in the list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to delete.
Returns: str: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| task_list_id | Yes | ||
| user_google_email | 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 explicitly discloses the critical side effect that all tasks in the list will be deleted, which is essential for a destructive operation. It also states the return type (confirmation message), but does not mention reversibility or authentication requirements.
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 highly concise and well-structured, with a front-loaded warning about cascade deletion followed by a clear Args/Returns format. Every sentence provides value with no redundancy.
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 delete tool with two parameters and an output schema, the description covers the essential aspects: the operation, the critical side effect, parameter meanings, and the return type. It is complete for the tool's complexity.
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. It provides meaningful explanations for both parameters: user_google_email is described as the user's Google email address (and marked Required), and task_list_id as the ID of the task list. This fully addresses the semantic 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 clearly states the action ('Delete a task list') and identifies the specific resource. The note about also deleting all tasks in the list further clarifies its scope, distinguishing it from sibling tools like delete_task.
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 provides clear context for when to use it (deleting a task list). However, it does not explicitly mention alternatives or when not to use it (e.g., when you only want to delete a single task), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_zoom_meetingA
Delete a Zoom meeting.
Args: meeting_id: The Zoom meeting ID to delete
Returns: dict with confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| meeting_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 merely states 'Delete a Zoom meeting' without disclosing whether the action is permanent, requires specific permissions, or has side effects (e.g., deleting recordings or associated data). The return type is mentioned, but the destructive nature and potential irreversible impact are not explicitly 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 description is extremely concise and well-structured: a clear one-line purpose followed by Args and Returns sections. Every sentence adds value, and it is front-loaded with the core action.
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?
This is a simple, single-parameter delete operation. The description states the return type ('dict with confirmation message'), and an output schema exists. Given the simplicity and available structured information, the description is complete enough for an agent to use the tool correctly.
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?
There is only one parameter, meeting_id. The description explains it as 'The Zoom meeting ID to delete,' which adds minimal meaning beyond the schema (it doesn't say what format the ID takes or how to obtain it). Since schema description coverage is 0%, the description provides some reinforcement but does not fully compensate with additional semantic detail.
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 uses a specific verb ('Delete') and resource ('Zoom meeting'), clearly stating the tool's function. It distinguishes from sibling tools like create_zoom_meeting, get_zoom_meeting, and list_zoom_meetings by being the only deletion operation for Zoom meetings.
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 clearly implies the use case: when a Zoom meeting needs to be deleted. It does not explicitly mention alternatives or exclusions, but the context is clear enough given the sibling tools. However, it lacks explicit 'when not to use' guidance or prerequisites, so it doesn't fully earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_gmail_messageA
Creates a draft email in the user's Gmail account. Supports both new drafts and reply drafts.
Args: user_google_email (str): The user's Google email address. Required. subject (str): Email subject. body (str): Email body (plain text). body_format (Literal['plain', 'html']): Email body format. Defaults to 'plain'. to (Optional[str]): Optional recipient email address. Can be left empty for drafts. cc (Optional[str]): Optional CC email address. bcc (Optional[str]): Optional BCC email address. thread_id (Optional[str]): Optional Gmail thread ID to reply within. When provided, creates a reply draft. in_reply_to (Optional[str]): Optional Message-ID of the message being replied to. Used for proper threading. references (Optional[str]): Optional chain of Message-IDs for proper threading. Should include all previous Message-IDs.
Returns: str: Confirmation message with the created draft's ID.
Examples: # Create a new draft draft_gmail_message(subject="Hello", body="Hi there!", to="user@example.com")
# Create a plaintext draft with CC and BCC
draft_gmail_message(
subject="Project Update",
body="Here's the latest update...",
to="user@example.com",
cc="manager@example.com",
bcc="archive@example.com"
)
# Create a HTML draft with CC and BCC
draft_gmail_message(
subject="Project Update",
body="<strong>Hi there!</strong>",
body_format="html",
to="user@example.com",
cc="manager@example.com",
bcc="archive@example.com"
)
# Create a reply draft in plaintext
draft_gmail_message(
subject="Re: Meeting tomorrow",
body="Thanks for the update!",
to="user@example.com",
thread_id="thread_123",
in_reply_to="<message123@gmail.com>",
references="<original@gmail.com> <message123@gmail.com>"
)
# Create a reply draft in HTML
draft_gmail_message(
subject="Re: Meeting tomorrow",
body="<strong>Thanks for the update!</strong>",
body_format="html,
to="user@example.com",
thread_id="thread_123",
in_reply_to="<message123@gmail.com>",
references="<original@gmail.com> <message123@gmail.com>"
)| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Optional CC email address. | |
| to | No | Optional recipient email address. | |
| bcc | No | Optional BCC email address. | |
| body | Yes | Email body (plain text). | |
| subject | Yes | Email subject. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| in_reply_to | No | Optional Message-ID of the message being replied to. | |
| user_google_email | 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 burden. It discloses key behaviors: creates rather than sends, supports reply drafts via thread_id/in_reply_to/references, and returns the draft ID. It also explains the effect of optional parameters like 'to' being left empty. However, it does not mention authentication requirements or potential side effects, which would be useful.
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 front-loaded with the purpose and includes useful examples, but the Args section largely repeats the schema descriptions (90% coverage) and adds length. There is also a typo in the last example (missing quote). Overall it is well-organized but not maximally 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?
Given the tool has 10 parameters and no annotations, the description covers all parameters and provides examples for new drafts, reply drafts, HTML/plain text, and optional CC/BCC. It also states the return value. This is quite complete, though it omits error cases and authentication 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 coverage is 90%, so baseline is 3. The description adds meaningful nuance beyond the schema: thread_id 'creates a reply draft', references 'should include all previous Message-IDs', and body_format default. The Args section partly duplicates schema descriptions but the extra context justifies a 4.
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 clearly states 'Creates a draft email in the user's Gmail account' with a specific verb and resource. It also distinguishes from send_gmail_message by explicitly supporting both new and reply drafts, making the purpose unambiguous.
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 provides clear context on when to use the tool (creating drafts, including reply drafts with threading parameters). It does not explicitly name alternatives or exclusions, but the sibling tool send_gmail_message is implicitly contrasted by the draft nature. This is clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_doc_to_pdfA
Exports a Google Doc to PDF format and saves it to Google Drive.
Args: user_google_email: User's Google email address document_id: ID of the Google Doc to export pdf_filename: Name for the PDF file (optional - if not provided, uses original name + "_PDF") folder_id: Drive folder ID to save PDF in (optional - if not provided, saves in root)
Returns: str: Confirmation message with PDF file details and links
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | ||
| document_id | Yes | ||
| pdf_filename | No | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It discloses the key side effect (saving to Google Drive) and explains default behavior for optional parameters (filename and folder). However, it does not mention potential overwrite behavior, required permissions, or error conditions. While the description is honest, it lacks depth in behavioral disclosure.
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 well-structured with an opening sentence, an Args section, and a Returns section. It is concise and every line adds value. The docstring style is conventional and easy to parse. No wasted words.
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?
Given the tool's purpose (export and save) and the presence of an output schema, the description covers the essential aspects: what the tool does, how to call it (parameters and defaults), and what it returns. It slightly lacks information about edge cases or permissions, but for a moderately simple operation, it is complete enough for an AI agent to use effectively.
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. Each parameter is explained: user_google_email and document_id are required; pdf_filename and folder_id are optional with clear defaults. This adds meaning beyond the bare schema, although it could be more detailed (e.g., format of IDs, folder ID lookup).
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 clearly states the action: 'Exports a Google Doc to PDF format and saves it to Google Drive.' It uses a specific verb (exports), resource (Google Doc), result (PDF saved to Drive), and distinguishes this tool from siblings like get_doc_content or create_doc. This is a precise and unambiguous purpose statement.
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 clearly implies when to use this tool (when a Google Doc needs to be converted to PDF) and provides detailed context about optional parameters and their defaults. It does not explicitly name alternatives or exclusions, but for this straightforward conversion task, the context is sufficient to guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_and_replace_docA
Finds and replaces text throughout a Google Doc.
Args: user_google_email: User's Google email address document_id: ID of the document to update find_text: Text to search for replace_text: Text to replace with match_case: Whether to match case exactly
Returns: str: Confirmation message with replacement count
| Name | Required | Description | Default |
|---|---|---|---|
| find_text | Yes | ||
| match_case | No | ||
| document_id | Yes | ||
| replace_text | Yes | ||
| user_google_email | 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 of behavioral disclosure. It mentions the operation and return value but fails to disclose that this is a mutating operation with likely irreversible changes, or any authorization requirements beyond an email address. The phrase 'throughout' implies all occurrences, but no warnings or side effects are noted.
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 well-structured with a one-line summary followed by a clean Args list and Returns line. Every word serves a purpose, and it is directly readable without extraneous 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?
Given the tool's moderate complexity (5 parameters), no annotations, and presence of an output schema, the description covers core functionality and parameter semantics but lacks contextual completeness. It omits usage guidance, behavioral warnings, and any discussion of document access or editability prerequisites, making it minimally adequate.
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 description provides concise explanations for all five parameters, compensating for the 0% schema description coverage. Each parameter (user_google_email, document_id, find_text, replace_text, match_case) is meaningfully described, though descriptions are brief and could include more detail on formats or constraints.
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 clearly states 'Finds and replaces text throughout a Google Doc' with a specific verb (finds and replaces), resource (Google Doc), and scope (throughout). This distinguishes it from sibling tools like modify_doc_text by emphasizing a global find-and-replace 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?
No guidance is provided on when to use this tool versus alternatives such as modify_doc_text or batch_update_doc. The description only states the action, leaving the agent to infer appropriate usage without explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_sheet_rangeA
Applies formatting to a range: background/text color and number/date formats.
Colors accept hex strings (#RRGGBB). Number formats follow Sheets types (e.g., NUMBER, NUMBER_WITH_GROUPING, CURRENCY, DATE, TIME, DATE_TIME, PERCENT, TEXT, SCIENTIFIC). If no sheet name is provided, the first sheet is used.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. range_name (str): A1-style range (optionally with sheet name). Required. background_color (Optional[str]): Hex background color (e.g., "#FFEECC"). text_color (Optional[str]): Hex text color (e.g., "#000000"). number_format_type (Optional[str]): Sheets number format type (e.g., "DATE"). number_format_pattern (Optional[str]): Optional custom pattern for the number format.
Returns: str: Confirmation of the applied formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| range_name | Yes | ||
| text_color | No | ||
| spreadsheet_id | Yes | ||
| background_color | No | ||
| user_google_email | Yes | ||
| number_format_type | No | ||
| number_format_pattern | 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 transparency burden. It usefully discloses value constraints (hex colors, Sheets format types) and default sheet behavior, but does not explicitly state that this is a mutating operation that may overwrite existing formatting, nor does it mention permissions or error 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?
The description is well-structured with a concise summary followed by an Args/Returns breakdown. Every sentence adds useful information, and there is no filler or unnecessary repetition.
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 description covers all parameters, return value, accepted value examples, and default sheet behavior. It is missing a few details such as whether unspecified format properties are preserved or cleared and possible error conditions, but it is largely complete for a formatting tool.
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%, but the Args section fully documents all seven parameters, including required status, types, examples, and defaults. This fully compensates for the schema gap and adds significant semantic meaning.
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 clearly states the tool's function with a specific verb ('Applies formatting') and resource ('a range'), and lists the exact formatting dimensions (background/text color and number/date formats). This differentiates it from sibling tools like modify_sheet_values and conditional formatting tools.
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 context such as default first-sheet behavior and accepted number format values, but it does not explicitly say when to use this tool over alternatives like add_conditional_formatting or modify_sheet_values. Usage is implied rather than explicitly contrasted with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_contentA
Retrieves content of a Google Doc or a Drive file (like .docx) identified by document_id.
Native Google Docs: Fetches content via Docs API.
Office files (.docx, etc.) stored in Drive: Downloads via Drive API and extracts text.
Returns: str: The document content with metadata header.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| user_google_email | 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 discloses that native Google Docs are fetched via Docs API and Office files are downloaded and text-extracted, and mentions the metadata header in the return. However, it omits details on authentication, error handling, and limitations, so transparency is incomplete.
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 concise and well-structured: a clear opening statement, bullet points for distinct behaviors, and a return type line. Every sentence adds value with no redundancy, making it easy to parse quickly.
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 has moderate complexity with two modes and two required parameters. The description covers core functionality and return type, but lacks details on user_google_email, prerequisites like authentication, and edge cases. It is adequate but not comprehensive for an agent to confidently invoke.
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. It explains document_id as the identifier for the doc/file, but user_google_email is not explained at all. No formats, usage, or additional context are provided, leaving a significant gap for one of the two required parameters.
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 clearly states the tool retrieves content of a Google Doc or Drive file (like .docx) using document_id, with specific verbs and resource scope. It explicitly distinguishes between handling native Google Docs via Docs API and Office files via Drive API, differentiating it from sibling tools like get_drive_file_content.
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 implies usage for retrieving content from Google Docs or Office files in Drive, but it does not explicitly state when to use this tool over alternatives or provide exclusions. It offers context about the two file types but leaves the agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_file_contentA
Retrieves the content of a specific Google Drive file by ID, supporting files in shared drives.
• Native Google Docs, Sheets, Slides → exported as text / CSV. • Office files (.docx, .xlsx, .pptx) → unzipped & parsed with std-lib to extract readable text. • Any other file → downloaded; tries UTF-8 decode, else notes binary.
Args: user_google_email: The user’s Google email address. file_id: Drive file ID.
Returns: str: The file content as plain text with metadata header.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| user_google_email | 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 provided, the description fully discloses the tool's behavior: exporting native Google Docs/Sheets/Slides as text/CSV, unzipping and parsing Office files, and attempting UTF-8 decode for other files with binary notification. It also mentions a metadata header in the return value, which is valuable context beyond the schema.
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 well-structured and efficient: a clear purpose statement, a bulleted breakdown of file-type handling, and a concise Args/Returns section. Every sentence adds value, and the formatting enhances readability and quick comprehension.
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?
Given the tool's moderate complexity and the presence of an output schema, the description covers all essential aspects: the action, the supported file types, the processing approach, and the return type. The metadata header mention hints at the output format without needing to duplicate schema details. No significant gaps are apparent.
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 input schema has no descriptions (0% coverage), so the description must compensate. It provides brief definitions for user_google_email and file_id, which are helpful but not deeply detailed—e.g., it doesn't clarify the relationship between the email and the file access or the expected format of file_id. This is adequate but leaves room for more semantic richness.
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 clearly states the tool retrieves content of a specific Google Drive file by ID, with a specific verb and resource. It also distinguishes itself from siblings by mentioning support for shared drives and outlining the behavior for different file types, which sets it apart from tools like get_drive_file_download_url or list_drive_items.
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 provides clear context on when to use the tool (retrieve file content, including from shared drives) and what outcomes to expect for various file formats. It does not explicitly name alternative tools or exclusion criteria, but the behavior overview effectively guides selection for content retrieval needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_file_download_urlA
Gets a download URL for a Google Drive file. The file is prepared and made available via HTTP URL.
For Google native files (Docs, Sheets, Slides), exports to a useful format: • Google Docs → PDF (default) or DOCX if export_format='docx' • Google Sheets → XLSX (default) or CSV if export_format='csv' • Google Slides → PDF (default) or PPTX if export_format='pptx'
For other files, downloads the original file format.
Args: user_google_email: The user's Google email address. Required. file_id: The Google Drive file ID to get a download URL for. export_format: Optional export format for Google native files. Options: 'pdf', 'docx', 'xlsx', 'csv', 'pptx'. If not specified, uses sensible defaults (PDF for Docs/Slides, XLSX for Sheets).
Returns: str: Download URL and file metadata. The file is available at the URL for 1 hour.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| export_format | No | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behaviors: files are prepared and available for 1 hour, and native files are exported to specific formats. It doesn't mention auth requirements or rate limits, but with no annotations, it carries some burden. The 1-hour expiry is a useful behavioral trait, but missing details like whether the tool triggers a copy or affects permissions.
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 well-structured with bullet points for export formats and clear Args/Returns sections. Every sentence adds information; no redundancy or filler.
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?
Given the tool's moderate complexity (3 params, output schema present), the description fully explains purpose, parameters, return value, and the 1-hour validity. It doesn't explicitly state the return format but that's covered by the output schema. Minor gap: no note on error cases or permission requirements.
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 parameters have no enums, so the description must compensate. It explains each parameter: user_google_email (required, user's email), file_id (Drive file ID), and export_format (optional with explicit options and defaults). It adds meaning beyond the bare schema types.
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 clearly states 'Gets a download URL for a Google Drive file' and explains the behavior for Google native files vs. other files, distinguishing it from sibling tools like get_drive_file_content or get_drive_shareable_link. It also details export format mappings, making the purpose unambiguous.
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 implies when to use this tool (when a URL is needed, including export conversions) but does not explicitly say when not to use it or mention alternatives. However, the detailed export format behavior provides clear context for when to choose this over sibling tools like get_drive_file_content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_file_permissionsB
Gets detailed metadata about a Google Drive file including sharing permissions.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file to check permissions for.
Returns: str: Detailed file metadata including sharing status and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| user_google_email | 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 of behavioral disclosure. It states the output ('Returns: str: Detailed file metadata including sharing status and URLs') but does not mention authentication requirements, side effects, error conditions, or whether it is read-only. The term 'Gets' implies a read, but no explicit guarantees or limitations are provided.
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 concise and well-structured: a one-sentence purpose, followed by Args and Returns sections. Every sentence earns its place, with no extraneous detail. The front-loaded summary makes the tool's purpose immediately clear.
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 getter with an output schema, the description is minimally viable: it explains the resource, parameters, and return type. However, given the large number of sibling permission-related tools (share_drive_file, update_drive_permission, check_drive_file_public_access), it does not provide enough context to choose this tool over alternatives, and it omits authentication/error details. This makes it incomplete for safe autonomous use.
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. It does describe both parameters: 'user_google_email (str): The user's Google email address. Required.' and 'file_id (str): The ID of the file to check permissions for.' However, the meaning of user_google_email is ambiguous (whose email? the account owner or the user to impersonate?), and file_id could benefit from format hints. This adds value but leaves gaps.
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 clearly states the tool's function: 'Gets detailed metadata about a Google Drive file including sharing permissions.' This distinguishes it from sibling tools like get_drive_file_content (content) and get_drive_shareable_link (link). The verb 'Gets' plus the specific resource (Drive file metadata/permissions) makes the purpose unambiguous.
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 provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions or comparisons to closely related siblings such as check_drive_file_public_access, share_drive_file, or update_drive_permission. Usage is only implied by the stated purpose, not explicitly directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventsA
Retrieves events from a specified Google Calendar. Can retrieve a single event by ID or multiple events within a time range. You can also search for events by keyword by supplying the optional "query" param.
Args:
user_google_email (str): The user's Google email address. Required.
calendar_id (str): The ID of the calendar to query. Use 'primary' for the user's primary calendar. Defaults to 'primary'. Calendar IDs can be obtained using list_calendars.
event_id (Optional[str]): The ID of a specific event to retrieve. If provided, retrieves only this event and ignores time filtering parameters.
time_min (Optional[str]): The start of the time range (inclusive) in RFC3339 format (e.g., '2024-05-12T10:00:00Z' or '2024-05-12'). If omitted, defaults to the current time. Ignored if event_id is provided.
time_max (Optional[str]): The end of the time range (exclusive) in RFC3339 format. If omitted, events starting from time_min onwards are considered (up to max_results). Ignored if event_id is provided.
max_results (int): The maximum number of events to return. Defaults to 25. Ignored if event_id is provided.
query (Optional[str]): A keyword to search for within event fields (summary, description, location). Ignored if event_id is provided.
detailed (bool): Whether to return detailed event information including description, location, attendees, and attendee details (response status, organizer, optional flags). Defaults to False.
include_attachments (bool): Whether to include attachment information in detailed event output. When True, shows attachment details (fileId, fileUrl, mimeType, title) for events that have attachments. Only applies when detailed=True. Set this to True when you need to view or access files that have been attached to calendar events, such as meeting documents, presentations, or other shared files. Defaults to False.
Returns: str: A formatted list of events (summary, start and end times, link) within the specified range, or detailed information for a single event if event_id is provided.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| detailed | No | ||
| event_id | No | ||
| time_max | No | ||
| time_min | No | ||
| calendar_id | No | primary | |
| max_results | No | ||
| user_google_email | Yes | ||
| include_attachments | 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 burden. It discloses defaults, ignore rules, and return format, but the Returns section states 'detailed information for a single event if event_id is provided,' which is ambiguous with the detailed flag's default of False. It also does not mention authentication requirements.
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 long but appropriately structured with a clear overview and an Args list. Every parameter explanation earns its place without excessive words.
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?
Given the complexity (9 params, no annotations), the description covers all parameters, defaults, relationships, and return types. However, the Returns ambiguity and lack of error/edge-case handling prevent it from being fully complete.
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%, but the description fully documents all 9 parameters with types, defaults, formats, and interactions. Examples of RFC3339 formats and conditions like 'Ignored if event_id is provided' add significant value beyond the schema.
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 clearly states the tool retrieves events from a specified Google Calendar, with modes for single event by ID, time range, and keyword search. This distinguishes it from sibling tools like create_event, modify_event, delete_event, and list_calendars.
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?
Provides explicit guidance: calendar IDs can be obtained via list_calendars, and the include_attachments parameter includes a clear use case ('Set this to True when you need to view or access files...'). It also clarifies when event_id overrides time/query parameters, giving conditional usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_formA
Get a form.
Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form to retrieve.
Returns: str: Form details including title, description, questions, and URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden. It indicates a read operation ('Get a form') but does not explicitly state it has no side effects. The user_google_email parameter suggests an auth requirement, but its necessity is not explained, and there is no mention of potential errors or rate limits.
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 concise, starting with a clear one-line purpose, followed by structured Args and Returns sections. Every sentence contributes value, with no unnecessary repetition.
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 description is fairly complete for a simple retrieval tool, covering the purpose, parameters, and return value. However, it does not explain why user_google_email is required or address potential errors, which would be useful for an agent to invoke it correctly.
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 schema has no descriptions for its parameters, but the description thoroughly explains both user_google_email and form_id with types and meanings, adding critical semantic value. This fully compensates for the schema's lack of detail.
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 explicitly states 'Get a form' and elaborates on the return value as 'Form details including title, description, questions, and URLs.' This clearly distinguishes it from siblings like get_form_response or list_form_responses, which deal with responses, making the tool's purpose unambiguous.
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 implies usage for retrieving form metadata through its return value, but it does not explicitly state when to use this tool versus alternatives like get_form_response or list_form_responses. No when-not-to-use or alternative guidance is provided, leaving the context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_responseA
Get one response from the form.
Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form. response_id (str): The ID of the response to retrieve.
Returns: str: Response details including answers and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| response_id | Yes | ||
| user_google_email | 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 that the operation retrieves a response and returns details, implying a read-only operation, but does not explicitly state there are no side effects, error behavior, or auth requirements. The 'Returns' line adds some context but is limited.
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 concise and well-structured with a clear one-line summary followed by Args and Returns sections. Every sentence is purposeful, and it avoids redundancy with the 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?
Given the tool's simplicity (3 required parameters) and the presence of an output schema, the description is reasonably complete. It conveys the core operation and return type, though it omits potential error cases or format specifics, which are likely covered by the output schema.
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%, but the description lists all three parameters with meaningful explanations: user_google_email, form_id, and response_id. It clarifies the role of each parameter and marks user_google_email as Required, adding value beyond the bare schema.
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 'Get one response from the form' with a specific verb and resource, clearly distinguishing it from sibling tools like list_form_responses and get_form. The phrase 'one response' clarifies it retrieves a single response by ID.
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 implies usage by requiring response_id, but does not explicitly mention when to use this over list_form_responses or other alternatives. No exclusionary guidance is provided, leaving the agent to infer the distinction from the word 'one'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_attachment_contentA
Downloads the content of a specific email attachment.
Args: message_id (str): The ID of the Gmail message containing the attachment. attachment_id (str): The ID of the attachment to download. user_google_email (str): The user's Google email address. Required.
Returns: str: Attachment metadata and base64-encoded content that can be decoded and saved.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| attachment_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It discloses that the return value is base64-encoded content that can be decoded and saved, but it does not mention any side effects, access requirements beyond user_google_email, or error conditions. It provides basic behavior but lacks deeper context.
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 concise and well-structured, with a short purpose statement followed by clearly formatted Args and Returns sections. Every sentence provides necessary information without redundant filler.
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 3-parameter read operation, the description covers the essential aspects: what it does, all parameters, and the return format. While it lacks usage guidelines, those are addressed in dimension 2, and the existing output schema reduces the need to detail return values further. Overall, it is nearly complete for its complexity.
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?
Since schema description coverage is 0%, the description is the only source of parameter meaning. It provides brief explanations for all three parameters, such as message_id being 'The ID of the Gmail message containing the attachment'. However, these explanations are largely restatements of the parameter names and do not explain how to obtain the IDs or the expected format, offering only minimal added value over the schema.
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 clearly states the tool 'Downloads the content of a specific email attachment', which is a specific verb+resource combination. It distinguishes from sibling tools like get_gmail_message_content by explicitly focusing on attachment content rather than message content.
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 guidance is provided on when to use this tool versus alternatives such as get_gmail_messages_content_batch or get_gmail_thread_content. The description implies you need both a message_id and attachment_id, but it does not explain why this tool should be chosen over others for a given scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_message_contentA
Retrieves the full content (subject, sender, recipients, plain text body) of a specific Gmail message.
Args: message_id (str): The unique ID of the Gmail message to retrieve. user_google_email (str): The user's Google email address. Required.
Returns: str: The message details including subject, sender, date, Message-ID, recipients (To, Cc), and body content.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| user_google_email | 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 clearly states this is a read operation and describes what is returned, but it does not mention authentication/permission prerequisites, error cases, or potential limitations. This is acceptable for a simple getter but not thorough.
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 compact and well-organized into purpose, args, and returns sections. The only minor redundancy is listing 'Required' for user_google_email, which duplicates the schema's required field.
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 two-parameter single-message getter with an output schema, the description covers the action, both parameters, and the return fields. It could be improved by mentioning auth prerequisites and alternative tools, but it is sufficient for an agent to invoke it correctly.
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 input schema provides bare string fields with zero descriptions, so the Args section is essential. It explains message_id as the unique Gmail message ID and user_google_email as the user's Google email address, adding meaningful semantics. It could clarify where message_id comes from, but the basics are covered.
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 uses a specific verb ('Retrieves') and names a clear resource: the full content of a specific Gmail message, including subject, sender, recipients, and body. The phrase 'specific message' implicitly distinguishes it from batch and thread siblings, though no alternative is explicitly 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?
There is no explicit when-to-use or when-not-to-use guidance and no reference to sibling tools like search_gmail_messages or get_gmail_messages_content_batch. However, the phrase 'specific Gmail message' implies the intended use case, providing some contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_messages_content_batchA
Retrieves the content of multiple Gmail messages in a single batch request. Supports up to 25 messages per batch to prevent SSL connection exhaustion.
Args: message_ids (List[str]): List of Gmail message IDs to retrieve (max 25 per batch). user_google_email (str): The user's Google email address. Required. format (Literal["full", "metadata"]): Message format. "full" includes body, "metadata" only headers.
Returns: str: A formatted list of message contents including subject, sender, date, Message-ID, recipients (To, Cc), and body (if full format).
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | full | |
| message_ids | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the transparency burden. It discloses the batch behavior, the message limit, and the effect of the 'format' parameter on output. However, it does not explicitly state that the operation is read-only or describe authentication requirements, which would be useful but are not critical given the tool's obvious read nature.
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 well-structured with a clear summary, Args section, and Returns section. Every sentence is informative and there is no redundant text. It is appropriately sized for the tool's functionality.
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 description is complete for the tool's complexity: it covers parameters, limits, and the return format. It explains what the returned string contains, which is especially important given that no output schema is shown. Sibling tools are not necessary for this description to be self-sufficient.
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 description thoroughly explains each parameter beyond the schema: message_ids is a list of Gmail message IDs with a maximum of 25, user_google_email is required and specifies whose email, and format describes the difference between 'full' and 'metadata'. This adds significant semantic value, compensating for the 0% schema coverage.
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 clearly states the tool's purpose: 'Retrieves the content of multiple Gmail messages in a single batch request.' It specifies the resource (Gmail messages) and distinguishes from sibling tools like get_gmail_message_content by explicitly indicating 'multiple' and 'batch'.
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 implies when to use this tool: for retrieving multiple messages in a batch, with a cap of 25 to prevent SSL connection exhaustion. It does not explicitly name alternatives or exclude use cases, but the context is clear enough for an agent to choose this instead of the singular variant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_thread_contentA
Retrieves the complete content of a Gmail conversation thread, including all messages.
Args: thread_id (str): The unique ID of the Gmail thread to retrieve. user_google_email (str): The user's Google email address. Required.
Returns: str: The complete thread content with all messages formatted for reading.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It does state that the return is a string 'with all messages formatted for reading,' giving some insight into output format. However, it does not explicitly mention that this is a read-only operation, potential rate limits, authentication requirements (beyond the required email parameter), or any error conditions. It is minimally transparent but lacks richer behavioral context.
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 concise and well-structured with a one-sentence purpose, Args section, and Returns section. Every line adds value, and the main verb is front-loaded. There is no redundant or filler content.
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 (two string parameters, no nested objects), and the description covers the core functionality and return type. However, it does not position the tool relative to its many siblings, such as get_gmail_threads_content_batch, nor does it mention any limitations (e.g., thread size, pagination). For a straightforward retrieval tool, it's mostly complete but could benefit from a 'use this for single-thread retrieval' note.
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 input schema has no parameter descriptions (0% coverage), so the description must compensate. It does so by explaining thread_id as 'The unique ID of the Gmail thread to retrieve' and user_google_email as 'The user's Google email address. Required.' This adds meaningful context beyond the bare parameter names and required flags, though it could provide more detail about where to find the thread ID or the format of the email.
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 clearly states the tool 'Retrieves the complete content of a Gmail conversation thread, including all messages.' This uses a specific verb ('retrieves') and resource ('Gmail conversation thread'), and the mention of 'complete content' and 'all messages' distinguishes it from sibling tools like get_gmail_message_content (single message) and get_gmail_threads_content_batch (batch retrieval).
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 provides no guidance on when to use this tool versus alternatives. It does not mention that this is for a single thread as opposed to get_gmail_threads_content_batch, nor does it suggest any context or prerequisites. Without explicit usage guidance, an agent must infer the appropriate situation from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_threads_content_batchA
Retrieves the content of multiple Gmail threads in a single batch request. Supports up to 25 threads per batch to prevent SSL connection exhaustion.
Args: thread_ids (List[str]): A list of Gmail thread IDs to retrieve. The function will automatically batch requests in chunks of 25. user_google_email (str): The user's Google email address. Required.
Returns: str: A formatted list of thread contents with separators.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_ids | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since annotations are not provided, the description carries the full burden. It discloses key behaviors: automatic batching in chunks of 25, the 25-thread limit rationale, and the return format as a formatted string with separators. It does not mention authentication, error handling, or side effects, but for a read-only batch retrieval, this is reasonable coverage.
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 concise and well-structured: opening one-sentence purpose, then a short behavioral note, then Args and Returns sections. Every sentence contributes new information without redundancy or fluff.
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 description covers the essential aspects: purpose, batch limit, parameter semantics, and return type. It also includes behavioral nuance about SSL exhaustion. It does not cover error scenarios or require prerequisites, but given the output schema exists and the tool is part of a larger Gmail suite, this is adequately complete.
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 provides clear explanations for both parameters: thread_ids is a list of Gmail thread IDs with automatic batching, and user_google_email is the required user email. This adds meaning beyond the raw schema, though it could give more detail on ID formats or potential validation, but it is sufficient.
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 clearly states it 'Retrieves the content of multiple Gmail threads in a single batch request', with a specific verb (retrieves), resource (Gmail threads content), and scope (multiple, batch). This distinguishes it from the singular sibling tool get_gmail_thread_content by emphasizing batch processing.
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 implies use for fetching multiple threads and mentions the 25-thread batch limit to prevent SSL connection exhaustion, giving context for when it's appropriate. However, it does not explicitly state when to prefer alternative tools like get_gmail_thread_content for single threads, though the batch emphasis makes this clear by contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesC
Retrieves messages from a Google Chat space.
Returns: str: Formatted messages from the specified space.
| Name | Required | Description | Default |
|---|---|---|---|
| order_by | No | createTime desc | |
| space_id | Yes | ||
| page_size | No | ||
| user_google_email | 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 but only says 'retrieves messages' and 'returns formatted messages'. It does not disclose ordering, pagination, authentication needs, or access constraints, leaving important behavioral aspects unspecified.
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 short, front-loaded, and free of fluff. Each sentence adds some information, though the overall content is thin.
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?
Given 4 parameters, no annotations, and sibling tools, the description is too minimal for reliable invocation. It lacks parameter explanations and behavioral context, making it incomplete even though an output schema exists.
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 schema has 4 parameters with 0% schema description coverage, and the description does not explain any parameter semantics. It only mentions 'specified space' indirectly, omitting the meaning of user_google_email, order_by, and page_size.
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 clearly states the tool retrieves messages from a Google Chat space, using a specific verb and resource. However, it doesn't explicitly differentiate from sibling tools like search_messages, 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?
No guidance is provided about when to use this tool versus search_messages or other alternatives. There is no mention of exclusions or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageA
Get details about a specific page (slide) in a presentation.
Args: user_google_email (str): The user's Google email address. Required. presentation_id (str): The ID of the presentation. page_object_id (str): The object ID of the page/slide to retrieve.
Returns: str: Details about the specific page including elements and layout.
| Name | Required | Description | Default |
|---|---|---|---|
| page_object_id | Yes | ||
| presentation_id | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that it returns a string with page elements and layout, and lists all required parameters, including user_google_email for authentication. However, it does not explicitly state that this is a read-only operation, nor does it describe error conditions or rate limits. With no annotations, the description carries the full burden but only partially covers behavioral context.
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 well-structured with a purpose sentence, Args list, and Returns section, and it is front-loaded with the primary purpose. It is slightly verbose with repetitive 'page/slide' phrasing and contains a typo ('thepresentation'), but it remains efficient and readable.
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 read operation with three required parameters and a string return value, the description adequately covers purpose, parameter meaning, and return type. However, it lacks guidance on how it relates to sibling tools such as get_page_thumbnail and does not mention edge cases, though these are not critical for this straightforward get tool.
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 description includes a full 'Args' section explaining user_google_email, presentation_id, and page_object_id. This adds meaning beyond the input schema, which has no parameter descriptions (schema coverage 0%). Each parameter is clearly defined, compensating fully for the schema's lack of descriptions.
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 clearly states 'Get details about a specific page (slide) in a presentation,' providing a specific verb and resource. It also mentions 'elements and layout,' which differentiates it from sibling tools like get_presentation (whole deck) and get_page_thumbnail (thumbnail image).
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 explicit guidance on when to use this tool versus alternatives like get_presentation or get_page_thumbnail. The description only states what it does, without any 'use this when...' or 'use alternative when...' instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_thumbnailA
Generate a thumbnail URL for a specific page (slide) in a presentation.
Args: user_google_email (str): The user's Google email address. Required. presentation_id (str): The ID of the presentation. page_object_id (str): The object ID of the page/slide. thumbnail_size (str): Size of thumbnail ("LARGE", "MEDIUM", "SMALL"). Defaults to "MEDIUM".
Returns: str: URL to the generated thumbnail image.
| Name | Required | Description | Default |
|---|---|---|---|
| page_object_id | Yes | ||
| thumbnail_size | No | MEDIUM | |
| presentation_id | Yes | ||
| user_google_email | 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 burden. It discloses the return type (URL) and parameter defaults, but does not state side effects, auth requirements, or that it is read-only. Given the 'get_' prefix, it's likely safe, but this is not explicitly confirmed.
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 well-structured: a one-line purpose, a clear args list, and a returns section. It is concise without missing critical 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?
With only four simple string parameters and an output schema expected, the description is complete. It includes all necessary details such as the allowed thumbnail_size values and the return type, making the tool self-contained.
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%, but the description fully documents all four parameters, including types, required status, and the default for thumbnail_size. This fully compensates for the lack of schema descriptions.
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 clearly states the tool's function: 'Generate a thumbnail URL for a specific page (slide) in a presentation.' This distinguishes it from siblings like get_page or get_presentation by focusing on the thumbnail URL output.
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 implies use when a thumbnail URL is needed but does not explicitly mention alternatives or when not to use it. There is no comparison to get_page or other related tools, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentationA
Get details about a Google Slides presentation.
Args: user_google_email (str): The user's Google email address. Required. presentation_id (str): The ID of the presentation to retrieve.
Returns: str: Details about the presentation including title, slides count, and metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| presentation_id | Yes | ||
| user_google_email | 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 provided, the description carries the burden of revealing behavioral traits. It discloses that the tool returns a string with title, slides count, and metadata, but does not mention auth requirements, error handling, or side effects. This is adequate for a simple getter but lacks depth.
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 front-loaded with the core purpose, followed by a clean Args/Returns structure. Every sentence is informative, and the format is easy to parse. No filler or redundancy.
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 description covers the basic operation but lacks contextual depth. It does not mention prerequisites like authentication, how errors surface, or the full scope of metadata returned. The presence of an output schema offsets some return-detail needs, but usage guidance and behavioral context are thin.
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. It does by explaining both parameters: 'user_google_email' as the user's Google email address and 'presentation_id' as the ID of the presentation. This adds meaning beyond bare parameter names, though it does not specify formats or sources.
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 clearly states 'Get details about a Google Slides presentation' with a specific verb and resource. It differentiates from sibling tools like get_page and read_presentation_comments by focusing on overall presentation details, not pages or comments.
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 implies a read-only use case but provides no explicit guidance on when to prefer this over alternatives. No exclusions or alternative tools are mentioned, leaving the agent to infer usage from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_engine_infoB
Retrieves metadata about a Programmable Search Engine.
Args: user_google_email (str): The user's Google email address. Required.
Returns: str: Information about the search engine including its configuration and available refinements.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | 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 transparency burden. It does not disclose whether this operation is read-only, requires specific authentication, or has any side effects. The Returns section describes output but not 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?
The description is short and structured with Args and Returns sections. Every sentence serves a purpose, and the main action is front-loaded.
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 one-parameter read-only tool with an output schema, the description covers the essentials. It explains the return value's content (configuration and refinements) and the required parameter, making it reasonably complete for its simplicity.
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 schema has no descriptions, and the description provides a basic explanation for the only parameter ('The user's Google email address. Required.'). This adds some meaning beyond the raw schema, though the parameter name is already self-explanatory.
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 clearly states 'Retrieves metadata about a Programmable Search Engine,' a specific verb and resource. It distinguishes itself from search-execution siblings by focusing on metadata, not search results.
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 guidance on when to use this tool versus alternatives. It does not mention that it is for configuration inspection before searching, nor does it contrast with search_custom or search_custom_siterestrict.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spreadsheet_infoA
Gets information about a specific spreadsheet including its sheets.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet to get info for. Required.
Returns: str: Formatted spreadsheet information including title, locale, and sheets list.
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | ||
| user_google_email | 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 discloses that the tool returns a formatted string with title, locale, and sheets list, which is useful. However, it does not explicitly state that this is a read-only operation, mention potential errors (e.g., inaccessible spreadsheet), or describe any side effects, leaving some ambiguity.
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 extremely concise and well-structured with separate Args and Returns sections. Every sentence adds value—no fluff or redundancy. It is appropriately sized for a two-parameter tool.
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 read-oriented tool with two parameters, the description is largely complete. It specifies the parameters, return format, and content. The lack of explicit error handling or alternative tool references is a minor gap, but the presence of an output schema and the straightforward nature of the operation make it sufficient.
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 clearly explains both parameters: user_google_email is the user's Google email and spreadsheet_id is the ID of the spreadsheet, marking both as required. This adds meaningful context beyond the bare schema and satisfies the need for parameter clarity.
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 clearly states it 'Gets information about a specific spreadsheet including its sheets,' which specifies a concrete action and resource. It implicitly distinguishes from sibling tools like list_spreadsheets by focusing on a single spreadsheet, but does not explicitly name alternatives, preventing 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?
No guidance is provided on when to use this tool versus alternatives like list_spreadsheets or read_sheet_values. The description only states what the tool does, without any contextual hints or exclusions. This makes it hard for an agent to decide between this and similar spreadsheet tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskA
Get details of a specific task.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list containing the task. task_id (str): The ID of the task to retrieve.
Returns: str: Task details including title, notes, status, due date, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | ||
| task_list_id | Yes | ||
| user_google_email | 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 must carry transparency. It discloses the return value format ('Task details including title, notes, status, due date, etc.') but does not mention error behavior, auth requirements, or side effects. Since this is a read operation with minimal risks, the description covers the essential behavior but lacks depth.
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 concise and well-structured with sections for Args and Returns. Each sentence serves a purpose, no redundancy. It is minimally sized while still providing parameter details and return 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?
The tool is simple (fetch by three required IDs) and an output schema exists (string). The description explains what the return string contains. It does not cover error cases or prerequisites beyond the required parameters, but given the low complexity and presence of output schema, it is reasonably complete.
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%, but the description's Args section provides clear explanations for every parameter (e.g., 'The ID of the task list containing the task'). This fully compensates for missing schema descriptions, adding meaning that the JSON schema alone does not provide.
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 uses a specific verb 'Get' and clearly identifies the resource: 'details of a specific task'. It distinguishes itself from siblings like 'list_tasks' (plural, listing) and 'get_task_list' (list-level). The phrase 'specific task' signals singular retrieval by ID.
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 implies usage from the required IDs (user_google_email, task_list_id, task_id) but does not explicitly state when to use this tool versus alternatives such as 'list_tasks' or 'search_tasks'. No exclusions or alternative tool names are mentioned, so context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_listA
Get details of a specific task list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to retrieve.
Returns: str: Task list details including title, ID, and last updated time.
| Name | Required | Description | Default |
|---|---|---|---|
| task_list_id | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses that the tool returns a string containing title, ID, and last updated time, which is useful context. However, it does not mention error behavior, authentication requirements, or whether tasks in the list are included. It adds some transparency but not exhaustive.
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 uses a clear docstring format with a one-line summary followed by Args and Returns sections. It is concise and front-loaded. The only minor redundancy is marking 'Required' when the schema already lists the params as required, but this is not intrusive.
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 a simple 2-parameter read operation. The input schema fully specifies required params, the output schema likely defines return structure, and the description confirms return contents. It does not mention how to obtain task_list_id or that this returns only list metadata, but for its simplicity it is sufficiently complete.
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 explain parameters. It does so: 'user_google_email: The user's Google email address' clarifies whose email is needed, and 'task_list_id: The ID of the task list to retrieve' defines the identifier. However, these are fairly close to the parameter names and do not specify formats or how to obtain the values.
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 'Get details of a specific task list' clearly identifies the action (get) and resource (task list), and the specificity of 'a specific task list' distinguishes it from list_task_lists (which retrieves multiple) and create/update/delete. It also clarifies it is not about individual tasks (get_task).
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 does not provide any guidance on when to use this tool versus sibling tools like list_task_lists or get_task. It neither states prerequisites (e.g., need task_list_id from list_task_lists) nor mentions alternatives. The required parameters are implied but not framed as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zoom_meetingA
Get details of an existing Zoom meeting.
Args: meeting_id: The Zoom meeting ID
Returns: dict containing meeting details including join_url, topic, start_time, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| meeting_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only says 'Get details' which implies a safe read operation, but does not disclose potential error behavior (e.g., meeting not found), authentication requirements, or rate limits. This is a significant gap for a tool with no annotation coverage.
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 highly concise and well-structured with an Args/Returns format. The summary sentence is front-loaded, and every line provides relevant information without redundancy.
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 with one parameter and an output schema present, so the description need not detail return values extensively. However, it lacks usage guidance and behavioral transparency, leaving some context to be inferred. It is functional but not rich enough for a 4.
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 description adds minimal meaning beyond the schema by defining meeting_id as 'The Zoom meeting ID'. With 0% schema coverage, the description does compensate, but the explanation is barely more than the parameter name itself, lacking format details (e.g., numeric ID, where to find it).
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 clearly states 'Get details of an existing Zoom meeting' with a specific verb and resource. It distinguishes itself from sibling tools like list_zoom_meetings (which lists meetings) and delete_zoom_meeting (which deletes), making the purpose unambiguous.
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 implied: the tool takes a meeting_id to fetch details for a specific meeting, which is distinct from list_zoom_meetings for browsing. However, there is no explicit guidance on when to use this tool versus alternatives, such as when you already have the meeting ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_elementsA
Inserts structural elements like tables, lists, or page breaks into a Google Doc.
Args: user_google_email: User's Google email address document_id: ID of the document to update element_type: Type of element to insert ("table", "list", "page_break") index: Position to insert element (0-based) rows: Number of rows for table (required for table) columns: Number of columns for table (required for table) list_type: Type of list ("UNORDERED", "ORDERED") (required for list) text: Initial text content for list items
Returns: str: Confirmation message with insertion details
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| text | No | ||
| index | Yes | ||
| columns | No | ||
| list_type | No | ||
| document_id | Yes | ||
| element_type | Yes | ||
| user_google_email | 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 full burden. It discloses conditional parameter requirements (rows/columns for tables, list_type/text for lists) and the return type (confirmation string). However, it does not mention side effects like content shifting, required permissions, or failure modes, leaving some behavioral ambiguity.
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 well-structured: purpose statement followed by a clear Args list and Returns section. Every sentence is informative, with no redundancy or fluff. The front-loaded purpose immediately conveys the tool's function.
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?
Given the complexity (8 parameters, conditional logic), the description thoroughly covers purpose, parameters, and return value. It lacks error-handling details or edge-case behavior, but the provided information is sufficient for basic invocation. The presence of an output schema reduces the need to describe return format in depth.
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%, but the description rigorously documents all 8 parameters, including enums ('UNORDERED', 'ORDERED'), conditional requirements, and the meaning of 'text' for list items. This fully compensates for missing schema descriptions and adds significant semantic value.
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 clearly states 'Inserts structural elements like tables, lists, or page breaks into a Google Doc.' This is a specific verb (inserts), a clear resource (Google Doc), and explicit element types. It distinguishes itself from sibling tools like insert_doc_image (images) and modify_doc_text (text).
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 implies its use for inserting structural elements, but it does not explicitly state when to use this tool versus alternatives such as create_table_with_data or modify_doc_text. No exclusions or alternative tool names are provided, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_imageA
Inserts an image into a Google Doc from Drive or a URL.
Args: user_google_email: User's Google email address document_id: ID of the document to update image_source: Drive file ID or public image URL index: Position to insert image (0-based) width: Image width in points (optional) height: Image height in points (optional)
Returns: str: Confirmation message with insertion details
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| width | No | ||
| height | No | ||
| document_id | Yes | ||
| image_source | Yes | ||
| user_google_email | 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 must carry the full burden of behavioral transparency. While it states the action, it does not disclose that this is a write operation requiring edit permissions, nor does it mention any side effects, error conditions, or reversibility. This is a significant gap for a mutation tool without annotation support.
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 concise and well-structured with an 'Args' section listing parameters and a 'Returns' section. Every line adds value, and there is no redundant or excessive text. The format makes it easy to scan and understand.
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?
All six parameters are clearly explained, and the return type is specified. The tool's complexity is moderate, and the description covers the essential aspects. However, it lacks details on prerequisites (e.g., user authentication, edit access) and error handling, which would be expected for a write operation without annotations.
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 schema has 0% description coverage, so the description is the sole source of parameter meaning. It explains each parameter in plain language: user email, document ID, image source (Drive file ID or public URL), zero-based index, and optional width/height in points. This fully compensates for the schema's lack of descriptions and adds meaningful context.
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 starts with a specific verb and resource: 'Inserts an image into a Google Doc from Drive or a URL.' This clearly distinguishes it from sibling tools like insert_doc_elements by focusing specifically on image insertion and the source locations. Even without mentioning siblings, the purpose is unambiguous.
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 makes the use case clear (inserting an image into a Google Doc) and explains the image source options. However, it does not explicitly differentiate this tool from the broader insert_doc_elements tool or state when not to use it. The usage context is implied, not directly contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_doc_structureA
Essential tool for finding safe insertion points and understanding document structure.
USE THIS FOR:
Finding the correct index for table insertion
Understanding document layout before making changes
Locating existing tables and their positions
Getting document statistics and complexity info
CRITICAL FOR TABLE OPERATIONS: ALWAYS call this BEFORE creating tables to get a safe insertion index.
WHAT THE OUTPUT SHOWS:
total_elements: Number of document elements
total_length: Maximum safe index for insertion
tables: Number of existing tables
table_details: Position and dimensions of each table
WORKFLOW: Step 1: Call this function Step 2: Note the "total_length" value Step 3: Use an index < total_length for table insertion Step 4: Create your table
Args: user_google_email: User's Google email address document_id: ID of the document to inspect detailed: Whether to return detailed structure information
Returns: str: JSON string containing document structure and safe insertion indices
| Name | Required | Description | Default |
|---|---|---|---|
| detailed | No | ||
| document_id | Yes | ||
| user_google_email | 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 explains what the output contains (total_elements, total_length, tables, table_details) and positions it as a safe inspection step, implying no side effects. It doesn't explicitly state read-only or potential errors, but the behavior is well disclosed for the tool's purpose.
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 well-structured with clear sections (USE THIS FOR, CRITICAL, OUTPUT, WORKFLOW, Args, Returns). It is slightly verbose with repetition between the 'CRITICAL' section and the workflow, but the organization earns its place. No unnecessary fluff.
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 description provides a complete workflow, output explanation, and parameter list, making it self-sufficient for the agent to use correctly. It doesn't cover edge cases or detailed interpretation of 'detailed', but it adequately explains the critical aspects of safe insertion indices.
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 compensates by listing all three parameters and their purposes. The 'detailed' parameter is only vaguely described as 'Whether to return detailed structure information', but the output section helps infer its impact. Overall, it adds enough meaning beyond the raw schema.
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 clearly states the tool's purpose: 'inspect_doc_structure' is for finding safe insertion points and understanding document structure. It distinguishes from siblings by explicitly linking to table operations (e.g., 'CRITICAL FOR TABLE OPERATIONS'), making it clear this is not just a generic document reader.
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 provides explicit use cases under 'USE THIS FOR' and a numbered workflow, emphasizing to call it before creating tables. It lacks explicit mention of alternatives or when not to use it, but the context is strong enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendarsA
Retrieves a list of calendars accessible to the authenticated user.
Args: user_google_email (str): The user's Google email address. Required.
Returns: str: A formatted list of the user's calendars (summary, ID, primary status).
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | 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 partially carries the transparency burden. It discloses the read-only nature and scope ('accessible to the authenticated user') and the return format, but omits details like error handling, authentication steps, or pagination. This adds some value beyond the schema but is not comprehensive.
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 well-structured with an Args/Returns format, front-loads the primary action, and contains no unnecessary words. It conveys all essential information efficiently.
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 single-parameter read tool, the description covers purpose, parameter semantics, and return value characteristics. It lacks minor details like error behavior, but given the tool's simplicity and the presence of an output schema, it is reasonably complete.
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 schema has zero description coverage, so the description must compensate. It provides semantic meaning for 'user_google_email' as 'the user's Google email address' and marks it required, which is helpful. However, it could add more context on where to obtain this email or format expectations.
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 ('retrieves') and resource ('a list of calendars'), clearly distinguishing it from sibling tools. No other sibling tool lists calendars, so it stands out.
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 guidance is provided on when to use this tool versus alternatives, nor are any exclusions or prerequisites mentioned. The description only states what it does, leaving usage context implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docs_in_folderC
Lists Google Docs within a specific Drive folder.
Returns: str: A formatted list of Google Docs in the specified folder.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_id | No | root | |
| page_size | No | ||
| user_google_email | 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 provided, the description carries the full burden of disclosing behavioral traits. It only states that a formatted list is returned, but omits any information about permissions needed, behavior with empty folders, page_size handling, or whether the tool filters exclusively to native Google Docs vs. other file types. This lack of context leaves significant room for misestimation.
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 two sentences long, front-loads the primary action, and includes a return-type note. Every word earns its place, with no filler or redundancy.
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 tool with three parameters (one required) and no comprehensive output schema visible, this description is insufficient. It lacks parameter semantics, behavioral caveats, and usage alternatives. The agent cannot confidently invoke this tool without guessing at the meaning of user_google_email and page_size, and the absence of any exclusion criteria makes it hard to distinguish from sibling listing 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?
The schema description coverage is 0%, so the description must compensate by explaining the parameters. It fails to do so: it never mentions user_google_email, folder_id, or page_size, and only obliquely references a 'specific Drive folder.' Required parameters are left undefined, making successful invocation dependent on external knowledge.
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 clearly states the verb 'Lists' and the resource 'Google Docs within a specific Drive folder,' which distinguishes it from siblings like list_drive_items (all files) and search_drive_files (search). The scope is explicit, making the tool's intent unambiguous.
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 provides no guidance on when to use this tool versus alternatives such as list_drive_items or search_drive_files. It does not mention exclusions, prerequisites, or typical use cases beyond the basic action, leaving the agent to infer usage from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drive_itemsA
Lists files and folders, supporting shared drives.
If drive_id is specified, lists items within that shared drive. folder_id is then relative to that drive (or use drive_id as folder_id for root).
If drive_id is not specified, lists items from user's "My Drive" and accessible shared drives (if include_items_from_all_drives is True).
Args:
user_google_email (str): The user's Google email address. Required.
folder_id (str): The ID of the Google Drive folder. Defaults to 'root'. For a shared drive, this can be the shared drive's ID to list its root, or a folder ID within that shared drive.
page_size (int): The maximum number of items to return. Defaults to 100.
drive_id (Optional[str]): ID of the shared drive. If provided, the listing is scoped to this drive.
include_items_from_all_drives (bool): Whether items from all accessible shared drives should be included if drive_id is not set. Defaults to True.
corpora (Optional[str]): Corpus to query ('user', 'drive', 'allDrives'). If drive_id is set and corpora is None, 'drive' is used. If None and no drive_id, API defaults apply.
Returns: str: A formatted list of files/folders in the specified folder.
| Name | Required | Description | Default |
|---|---|---|---|
| corpora | No | ||
| drive_id | No | ||
| folder_id | No | root | |
| page_size | No | ||
| user_google_email | Yes | ||
| include_items_from_all_drives | 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 scoping behavior, how folder_id is interpreted relative to drives, and the return type as a formatted list. It does not mention rate limits or explicit read-only status, but the read-only nature is implicit and the auth context (user_google_email) is included.
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 detailed but well-structured, starting with the main purpose and conditional rules, followed by an Args block. It is slightly longer than necessary, but every sentence adds useful information, and is appropriately front-loaded with the core listing behavior.
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?
Given the tool's complexity (shared drives, conditional folder scoping, multiple parameters), the description covers all essential aspects: parameters, return format, and behavioral nuances. The output schema exists and the return is described, making it complete for an agent to invoke correctly.
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 input schema has 0% description coverage, but the description's Args section fully documents each parameter, including default values, relationships (e.g., folder_id relative to drive_id), and conditional logic for corpora. It adds significant meaning beyond the bare schema property names and types.
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 starts with 'Lists files and folders, supporting shared drives', which is a specific verb-resource pair that clearly differentiates from sibling search tools like 'search_drive_files'. It also explains drive_id and folder_id semantics, fully conveying the tool's purpose.
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 provides explicit conditional behavior for when drive_id is specified vs not, and explains include_items_from_all_drives. However, it does not explicitly compare to sibling tools such as search_drive_files, so it stops short of naming alternatives. Clear context is present, but exclusions are not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_responsesA
List a form's responses.
Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form. page_size (int): Maximum number of responses to return. Defaults to 10. page_token (Optional[str]): Token for retrieving next page of results.
Returns: str: List of responses with basic details and pagination info.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| page_size | No | ||
| page_token | No | ||
| user_google_email | 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 must carry the burden. It discloses pagination behavior and that results include basic details and pagination info, but it does not explicitly state that the operation is read-only or mention any authentication requirements 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?
The description is compact and well-structured, with a clear one-sentence purpose followed by an organized Args/Returns format. Every sentence adds value and there is no unnecessary verbosity.
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 list operation with pagination and no annotations, the description is largely complete: it covers all parameters, return type, and pagination details. It does not specify what 'basic details' include, but this is a minor gap.
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 description fully documents all four parameters with types and explanations (e.g., user_google_email is required, page_size defaults to 10, page_token is optional). This adds significant meaning beyond the bare schema, which lacks property descriptions.
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 opens with 'List a form's responses', using a specific verb and resource. It clearly distinguishes from the sibling get_form_response, which retrieves a single response.
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 guidance is provided about when to use this tool versus alternatives like get_form_response. The description simply states what the tool does without any context on use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gmail_filtersA
Lists all Gmail filters configured in the user's mailbox.
Args: user_google_email (str): The user's Google email address. Required.
Returns: str: A formatted list of filters with their criteria and actions.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | 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 provided, the description carries the full burden. It transparently states that the operation lists filters (a read-only action) and describes the return format as 'a formatted list of filters with their criteria and actions.' While it doesn't explicitly mention auth requirements or side effects, the behavior is simple and adequately disclosed.
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 concise and well-structured. The main purpose is stated in the first sentence, followed by clearly formatted Args and Returns sections. There is no redundant or extraneous content; every sentence contributes meaning.
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?
Given the tool's simplicity (one parameter, no output schema, no nested objects), the description is complete. It provides a clear purpose, parameter explanation, and return format. It does not cover potential errors or authentication prerequisites, but for a straightforward list operation this is acceptable.
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 input schema has no description for user_google_email (0% coverage), but the description's Args section compensates: 'The user's Google email address. Required.' This clarifies the parameter's meaning beyond the raw schema, even though the parameter name is self-explanatory. The description adds value by tying the parameter to the mailbox being queried.
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 clearly states the tool's function: "Lists all Gmail filters configured in the user's mailbox." It uses a specific verb (Lists), defines the resource (Gmail filters), and specifies the scope (all filters in the user's mailbox), distinguishing it from sibling tools like create_gmail_filter and delete_gmail_filter.
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 usage context is clear: use this tool to list all Gmail filters. It does not explicitly compare against alternatives, but the action is unambiguous and the sibling tools for creating/deleting filters are clearly different operations. Since there are no exclusions or caveats, a 4 is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gmail_labelsA
Lists all labels in the user's Gmail account.
Args: user_google_email (str): The user's Google email address. Required.
Returns: str: A formatted list of all labels with their IDs, names, and types.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | 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 transparency burden. It discloses the return format (formatted list with IDs, names, and types) and the required argument, but it does not explicitly state auth requirements or confirm read-only behavior, though 'Lists' implies it.
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 compact and well-structured: one purpose sentence followed by Args and Returns sections. Every sentence adds value with no redundancy or filler.
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 a simple read-only listing operation, and the description gives the core purpose, required input, and return contents. It is sufficient for correct invocation, though it could briefly mention auth prerequisites or clarify that it returns all labels without filtering.
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 user_google_email is explained as 'The user's Google email address' and marked Required, adding meaning beyond the bare schema type. Since there is only one parameter, this fully covers the parameter surface, though it offers no advanced format details.
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 uses the specific verb 'Lists' and names the resource 'all labels in the user's Gmail account,' clearly distinguishing it from sibling tools like list_gmail_filters and manage_gmail_label. The purpose is immediately unambiguous.
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 or alternatives, but the verb and resource make the intended use apparent. It does not mention cases where a different Gmail label-related tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesB
Lists Google Chat spaces (rooms and direct messages) accessible to the user.
Returns: str: A formatted list of Google Chat spaces accessible to the user.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| space_type | No | all | |
| user_google_email | 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 full behavioral disclosure responsibility. It only states that the tool returns a formatted list of accessible spaces; it doesn't mention pagination behavior, filtering via space_type, auth requirements, or result size limits.
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 compact and front-loaded with the purpose. The Returns block is slightly redundant but does not detract significantly from 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?
The tool is simple and has an output schema, so the return format is covered. However, the lack of annotations and zero parameter semantics leaves meaningful ambiguity for correct invocation, especially around space_type and page_size values. It is minimally viable but not comprehensive.
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 does not explain any parameter. user_google_email is only weakly implied by 'accessible to the user', while page_size and space_type are left completely undocumented, relying solely on their names 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 uses the specific verb 'Lists' and clearly identifies the resource 'Google Chat spaces (rooms and direct messages)', with the scope 'accessible to the user'. This distinguishes it from sibling list_* tools like list_calendars or list_drive_items.
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 implies the tool is used when the agent needs to enumerate Google Chat spaces, but it provides no explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives such as search_messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spreadsheetsA
Lists spreadsheets from Google Drive that the user has access to.
Args: user_google_email (str): The user's Google email address. Required. max_results (int): Maximum number of spreadsheets to return. Defaults to 25.
Returns: str: A formatted list of spreadsheet files (name, ID, modified time).
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | ||
| user_google_email | 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 discloses that the output is a formatted list with name, ID, and modified time, and that access is scoped by the user's email. It also notes the max_results default, which adds behavioral context beyond the schema, though it omits any limitations such as pagination.
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 well-structured with a one-line purpose followed by concise Args and Returns sections. Every sentence adds value, and there is no redundant filler.
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 description adequately covers a simple listing tool with two parameters, including the return format. It is slightly incomplete because it doesn't address pagination or error conditions, but given the simplicity and presence of an output schema, it is sufficient.
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 description explains both parameters explicitly: user_google_email is required and max_results defaults to 25. Since the schema has 0% description coverage, this fully compensates and provides clear meaning beyond the type information.
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 clearly states it lists spreadsheets from Google Drive with the specific scope of what the user has access to, distinguishing it from sibling tools like list_drive_items and search_drive_files.
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 provides context that it lists only spreadsheets accessible to the user, but does not explicitly mention alternatives or when not to use this tool. No exclusions or comparisons with sibling tools are provided, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_task_listsA
List all task lists for the user.
Args: user_google_email (str): The user's Google email address. Required. max_results (int): Maximum number of task lists to return (default: 1000, max: 1000). page_token (Optional[str]): Token for pagination.
Returns: str: List of task lists with their IDs, titles, and details.
| Name | Required | Description | Default |
|---|---|---|---|
| page_token | No | ||
| max_results | No | ||
| user_google_email | 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 pagination parameters and the return format (IDs, titles, details), but does not explicitly state that this is a read-only operation or mention error/rate-limit 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?
The description is a tightly structured docstring with a one-sentence summary, concise parameter descriptions, and a return type note. No wasted words.
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 listing tool, the description covers the essential behavioral aspects: params, pagination, limits, and return format. It could briefly note the read-only nature, but the overall completeness is adequate.
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%, but the description fully documents each parameter with semantics, requiredness, default, and maximum, adding value beyond the schema.
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 specifies the action ('List') and the resource ('all task lists for the user'), clearly distinguishing it from sibling tools like list_tasks (which lists tasks) and get_task_list (which fetches a single task list).
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 states that it lists all task lists for a user, providing clear context for when to use this tool, but does not explicitly mention alternatives or exclusion cases (e.g., when needing a single list).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksA
List all tasks in a specific task list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to retrieve tasks from. max_results (int): Maximum number of tasks to return. (default: 20, max: 10000). page_token (Optional[str]): Token for pagination. show_completed (bool): Whether to include completed tasks (default: True). Note that show_hidden must also be true to show tasks completed in first party clients, such as the web UI and Google's mobile apps. show_deleted (bool): Whether to include deleted tasks (default: False). show_hidden (bool): Whether to include hidden tasks (default: False). show_assigned (bool): Whether to include assigned tasks (default: False). completed_max (Optional[str]): Upper bound for completion date (RFC 3339 timestamp). completed_min (Optional[str]): Lower bound for completion date (RFC 3339 timestamp). due_max (Optional[str]): Upper bound for due date (RFC 3339 timestamp). due_min (Optional[str]): Lower bound for due date (RFC 3339 timestamp). updated_min (Optional[str]): Lower bound for last modification time (RFC 3339 timestamp).
Returns: str: List of tasks with their details.
| Name | Required | Description | Default |
|---|---|---|---|
| due_max | No | ||
| due_min | No | ||
| page_token | No | ||
| max_results | No | ||
| show_hidden | No | ||
| updated_min | No | ||
| show_deleted | No | ||
| task_list_id | Yes | ||
| completed_max | No | ||
| completed_min | No | ||
| show_assigned | No | ||
| show_completed | No | ||
| user_google_email | 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 burden of disclosure. It explains filtering behavior, defaults, and a notable nuance: 'show_hidden must also be true to show tasks completed in first party clients.' It does not mention auth requirements or side effects, but as a list operation, read-only behavior is implied. The extra caveat adds useful context.
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 long but well-structured with an Args list and Returns section. The opening sentence is direct and informative. Every parameter earns its place given the tool's complexity, and there is no filler or redundancy.
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 complex tool with 13 parameters, no annotations, and no output schema details beyond a string return, the description is comprehensive. It covers all parameters, defaults, constraints, and a behavioral caveat. It is complete enough for an agent to call the tool correctly without additional external knowledge.
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 compensates thoroughly. Each of the 13 parameters is documented with its type, default, constraints (e.g., max_results max 10000), and special notes (e.g., the interaction between show_hidden and show_completed). This is far beyond what the schema alone provides.
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 clearly states 'List all tasks in a specific task list,' which specifies the verb (list), resource (tasks), and scope (specific task list). This distinguishes it from sibling tools like get_task, list_task_lists, and task mutation tools.
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 provides clear context for when to use this tool (to retrieve tasks from a specific task list), but it does not explicitly mention alternatives or when not to use it. For instance, it doesn't say 'use get_task for a single task.' However, the purpose is clear enough that an agent can infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zoom_meetingsA
List Zoom meetings for the authenticated user.
Args: meeting_type: Type of meetings to list. Options: - "scheduled": All scheduled meetings (default) - "live": Currently live meetings - "upcoming": Upcoming meetings page_size: Number of meetings to return (max 300, default 30)
Returns: dict containing list of meetings with their details
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| meeting_type | No | scheduled |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 that the operation targets the authenticated user's meetings, describes the return type as 'dict containing list of meetings,' and adds max/default constraints for page_size. It doesn't explicitly state it's read-only, but the verb 'List' makes that clear, and there are no side effects to disclose.
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 compact docstring with clear Args/Returns sections. The one-line purpose is front-loaded, and every sentence adds necessary information without redundancy or filler.
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 read-only list tool with two optional parameters and an existing output schema, the description covers key aspects: authentication scope, parameter semantics, and return shape. It doesn't elaborate on pagination behavior beyond page_size, but the output schema likely handles return details, making the description sufficiently complete.
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 fully compensates. It enumerates meeting_type options with parenthetical meanings and states the max/default for page_size, adding constraints not present in the schema. This provides complete parameter semantics beyond the raw JSON schema.
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 uses the specific verb 'List' with the resource 'Zoom meetings' and clarifies the scope to 'the authenticated user.' This clearly differentiates it from sibling tools like get_zoom_meeting (singular fetch) and create_zoom_meeting/delete_zoom_meeting.
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 meeting_type parameter implies usage contexts (scheduled, live, upcoming), but the description never explicitly contrasts with alternatives such as get_zoom_meeting or states when not to use this tool. There are no exclusion guidelines, so it only reaches the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gmail_labelA
Manages Gmail labels: create, update, or delete labels.
Args: user_google_email (str): The user's Google email address. Required. action (Literal["create", "update", "delete"]): Action to perform on the label. name (Optional[str]): Label name. Required for create, optional for update. label_id (Optional[str]): Label ID. Required for update and delete operations. label_list_visibility (Literal["labelShow", "labelHide"]): Whether the label is shown in the label list. message_list_visibility (Literal["show", "hide"]): Whether the label is shown in the message list.
Returns: str: Confirmation message of the label operation.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| action | Yes | ||
| label_id | No | ||
| user_google_email | Yes | ||
| label_list_visibility | No | labelShow | |
| message_list_visibility | No | show |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It explains parameter requirements per action and the return type, which is helpful. However, it does not disclose potential side effects, such as what happens to messages when a label is deleted, whether updates are reversible, or if any specific permissions are needed beyond providing the user email. This leaves room for ambiguity in edge cases.
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 well-structured and front-loaded: a one-sentence summary, followed by a clean Args block with each parameter on its own line, and a Returns line. There is no fluff or repetition; every sentence earns its place. The format is easy to scan and directly supports parameter understanding.
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?
Given the tool's complexity (6 parameters, 3 enums, three distinct actions) and the lack of annotations or schema descriptions, the description covers all essential aspects: action semantics, parameter requirements per action, and the return type. It does not include examples or error scenarios, but for a straightforward CRUD tool this is a minor gap. Overall, it provides sufficient context for an agent to use it correctly.
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 schema has 0% description coverage for parameters, so the description's Args section is essential. It provides a clear explanation for each parameter, including the role of user_google_email, the action-dependent requirements for name and label_id, and the meaning of the visibility flags. This goes well beyond the bare type/enum info in the schema, making it highly informative for correct invocation.
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 opens with 'Manages Gmail labels: create, update, or delete labels,' which clearly identifies the resource (Gmail labels) and the specific actions (create, update, delete). This distinguishes it from sibling tools like list_gmail_labels, which only lists labels, and modify_gmail_message_labels, which acts on message labels rather than the label definitions themselves.
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 provides clear context for when to use the tool (when needing to create, update, or delete labels) and clarifies which parameters are required for each action. However, it does not explicitly mention alternatives or state when not to use this tool, such as pointing out that list_gmail_labels is for read-only listing. This is a minor gap, but the context is strong enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_doc_textA
Modifies text in a Google Doc - can insert/replace text and/or apply formatting in a single operation.
Args: user_google_email: User's Google email address document_id: ID of the document to update start_index: Start position for operation (0-based) end_index: End position for text replacement/formatting (if not provided with text, text is inserted) text: New text to insert or replace with (optional - can format existing text without changing it) bold: Whether to make text bold (True/False/None to leave unchanged) italic: Whether to make text italic (True/False/None to leave unchanged) underline: Whether to underline text (True/False/None to leave unchanged) font_size: Font size in points font_family: Font family name (e.g., "Arial", "Times New Roman") text_color: Foreground text color (#RRGGBB) background_color: Background/highlight color (#RRGGBB)
Returns: str: Confirmation message with operation details
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | ||
| text | No | ||
| italic | No | ||
| end_index | No | ||
| font_size | No | ||
| underline | No | ||
| text_color | No | ||
| document_id | Yes | ||
| font_family | No | ||
| start_index | Yes | ||
| background_color | No | ||
| user_google_email | 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 transparency burden. It explains parameter-level behaviors such as 'None to leave unchanged,' 'text is optional - can format existing text without changing it,' and 'if not provided with text, text is inserted.' It also specifies the return value. It does not explicitly discuss permissions or irreversibility, but 'insert/replace' makes the mutation clear and the added parameter nuances are valuable.
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 opens with a concise summary sentence, followed by a clearly labeled Args list and Returns line. It is a bit lengthy but each parameter explanation earns its place, and the structure is easy to scan. The front-loaded summary helps an agent quickly understand the core purpose.
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?
Given the high parameter count and no annotations, the description covers all parameters, the return type, and the main operation. It even clarifies edge-case behavior like text insertion without end_index. Missing are usage comparisons with siblings and constraints like index bounds or auth prerequisites, but the core functionality is adequately documented.
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%, and the description fully compensates by explaining all 12 parameters in the Args section. It defines the meaning of each parameter, including optionality, the role of None for formatting fields, and the conditional behavior of end_index and text. This goes well beyond the raw schema.
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 clearly states it 'Modifies text in a Google Doc' and specifies the capability: 'insert/replace text and/or apply formatting in a single operation.' This distinguishes it from siblings like find_and_replace_doc and batch_update_doc by emphasizing combined text editing and formatting in one call.
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 implies usage context through 'single operation' but does not explicitly mention when to use this tool versus alternatives like batch_update_doc or insert_doc_elements. There are no when-not-to-use instructions or named sibling alternatives, so guidance is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_eventA
Modifies an existing event.
Args: user_google_email (str): The user's Google email address. Required. event_id (str): The ID of the event to modify. calendar_id (str): Calendar ID (default: 'primary'). summary (Optional[str]): New event title. start_time (Optional[str]): New start time (RFC3339, e.g., "2023-10-27T10:00:00-07:00" or "2023-10-27" for all-day). end_time (Optional[str]): New end time (RFC3339, e.g., "2023-10-27T11:00:00-07:00" or "2023-10-28" for all-day). description (Optional[str]): New event description. location (Optional[str]): New event location. attendees (Optional[Union[List[str], List[Dict[str, Any]]]]): Attendees as email strings or objects with metadata. Supports: ["email@example.com"] or [{"email": "email@example.com", "responseStatus": "accepted", "organizer": true, "optional": true}]. When using objects, existing metadata (responseStatus, organizer, optional) is preserved. New attendees default to responseStatus="needsAction". timezone (Optional[str]): New timezone (e.g., "America/New_York"). add_google_meet (Optional[bool]): Whether to add or remove Google Meet video conference. If True, adds Google Meet; if False, removes it; if None, leaves unchanged. reminders (Optional[Union[str, List[Dict[str, Any]]]]): JSON string or list of reminder objects to replace existing reminders. Each should have 'method' ("popup" or "email") and 'minutes' (0-40320). Max 5 reminders. Example: '[{"method": "popup", "minutes": 15}]' or [{"method": "popup", "minutes": 15}] use_default_reminders (Optional[bool]): Whether to use calendar's default reminders. If specified, overrides current reminder settings. transparency (Optional[str]): Event transparency for busy/free status. "opaque" shows as Busy, "transparent" shows as Available/Free. If None, preserves existing transparency setting. visibility (Optional[str]): Event visibility. "default" uses calendar default, "public" is visible to all, "private" is visible only to attendees, "confidential" is same as private (legacy). If None, preserves existing visibility setting. color_id (Optional[str]): Event color ID (1-11). If None, preserves existing color.
Returns: str: Confirmation message of the successful event modification with event link.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | No | ||
| color_id | No | ||
| end_time | No | ||
| event_id | Yes | ||
| location | No | ||
| timezone | No | ||
| attendees | No | ||
| reminders | No | ||
| start_time | No | ||
| visibility | No | ||
| calendar_id | No | primary | |
| description | No | ||
| transparency | No | ||
| add_google_meet | No | ||
| user_google_email | Yes | ||
| use_default_reminders | 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 full responsibility for behavior. It discloses important behavior: add_google_meet adds or removes a Google Meet conference, reminders 'replaces existing reminders' with a max of 5, and all optional fields preserve existing settings when None. It also explains attendee metadata preservation and default needsAction. Lacks details on auth or undo, but is solid overall.
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 structured as a docstring: one-line purpose, organized Args list, and Returns. It is long due to 16 parameters, but every sentence provides necessary information—formats, examples, defaults, and edge-case behavior—without fluff.
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 has 16 parameters and an output schema; the description covers all parameters, specifies required fields, includes examples, and states the return type. It omits error conditions and prerequisites (e.g., auth), but for a modification tool this is fairly complete.
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%, but the description fully compensates with detailed, actionable semantics: RFC3339 examples, all-day date support, attendee object structures, reminder examples, and explicit meaning of None for each field. This goes far beyond the schema's bare 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 opens with 'Modifies an existing event,' which clearly states the verb (modify) and resource (existing event). This distinguishes it from sibling tools like create_event, delete_event, and get_events by its specific action.
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 alternative guidance is provided. Usage is implied by the action: if you have an event_id and want to change fields, this is the tool. The description does not mention alternatives like create_event for new events or get_events for retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_gmail_message_labelsA
Adds or removes labels from a Gmail message. To archive an email, remove the INBOX label. To delete an email, add the TRASH label.
Args: user_google_email (str): The user's Google email address. Required. message_id (str): The ID of the message to modify. add_label_ids (Optional[List[str]]): List of label IDs to add to the message. remove_label_ids (Optional[List[str]]): List of label IDs to remove from the message.
Returns: str: Confirmation message of the label changes applied to the message.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| add_label_ids | No | Label IDs to add to the message. | |
| remove_label_ids | No | Label IDs to remove from the message. | |
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It explains special label behaviors (INBOX/TRASH) and states the return type, but it omits details about permissions, idempotence, or error conditions. It adds helpful context but is not exhaustive.
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 well-structured with a direct summary, practical examples, and an Args section. While the Args section overlaps with the schema, it is reasonably compact and the examples justify the extra length. No extraneous content.
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 moderately simple mutation tool, the description covers the core operation, special cases, and return value. It lacks discussion of permissions or contrast with the batch sibling, but given the tool's simplicity and the presence of an output schema, it is sufficiently complete for most agent use cases.
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 descriptions cover 50% of the parameters (add_label_ids and remove_label_ids), and the description's Args section adds brief context for the other two (user_google_email, message_id). However, the descriptions are minimal and don't explain where to obtain label IDs or how the parameters interact, so the added meaning is only slightly above the schema baseline.
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 opens with 'Adds or removes labels from a Gmail message,' which is a specific verb and resource, clearly distinguishing the tool from label management or batch operations. The examples further clarify the purpose.
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 provides concrete usage examples ('To archive an email, remove the INBOX label'), which imply when to use these parameter combinations. However, it does not explicitly contrast with sibling tools like batch_modify_gmail_message_labels or manage_gmail_label, so the guidance on when to choose this tool vs alternatives is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_sheet_valuesA
Modifies values in a specific range of a Google Sheet - can write, update, or clear values.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. range_name (str): The range to modify (e.g., "Sheet1!A1:D10", "A1:D10"). Required. values (Optional[Union[str, List[List[str]]]]): 2D array of values to write/update. Can be a JSON string or Python list. Required unless clear_values=True. value_input_option (str): How to interpret input values ("RAW" or "USER_ENTERED"). Defaults to "USER_ENTERED". clear_values (bool): If True, clears the range instead of writing values. Defaults to False.
Returns: str: Confirmation message of the successful modification operation.
| Name | Required | Description | Default |
|---|---|---|---|
| values | No | ||
| range_name | Yes | ||
| clear_values | No | ||
| spreadsheet_id | Yes | ||
| user_google_email | Yes | ||
| value_input_option | No | USER_ENTERED |
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 mutation operation ('can write, update, or clear values'), explains the clear_values behavior, and specifies the return type (confirmation message). However, it does not mention permissions, irreversibility, or potential errors, which are relevant for a write 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 description is well-structured with a one-sentence summary followed by Args and Returns sections. It is appropriately detailed without unnecessary fluff. The Args section is relatively long but necessary given the schema lacks descriptions. Could be slightly more concise, but it remains clear and organized.
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 description covers the main functionality, all parameter semantics, and return value. For a 6-param mutation tool with no annotations, it provides sufficient context for an agent to invoke it correctly. It lacks a few edge-case details (e.g., handling of value-size mismatches) but is otherwise complete.
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%, but the description fully compensates with a detailed Args section. It explains each parameter's type, requirement, examples (e.g., range_name format), the special behavior of values (JSON string or 2D list, required unless clear_values=True), and defaults for value_input_option and clear_values. This adds significant meaning beyond the schema.
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 opens with 'Modifies values in a specific range of a Google Sheet' which clearly identifies the verb, resource, and scope. It further specifies that the tool can 'write, update, or clear values,' distinguishing it from sibling tools like read_sheet_values or format_sheet_range.
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 provides clear context of what the tool does ('Modifies values... can write, update, or clear') but does not explicitly state when to use it versus alternatives or mention any exclusions. Usage is implied rather than explicitly contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_taskA
Move a task to a different position or parent within the same list, or to a different list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the current task list containing the task. task_id (str): The ID of the task to move. parent (Optional[str]): New parent task ID (for making it a subtask). previous (Optional[str]): Previous sibling task ID (for positioning). destination_task_list (Optional[str]): Destination task list ID (for moving between lists).
Returns: str: Confirmation message with updated task details.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | No | ||
| task_id | Yes | ||
| previous | No | ||
| task_list_id | Yes | ||
| user_google_email | Yes | ||
| destination_task_list | 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 the return value ('Confirmation message') and explains the effect of each parameter, but it lacks explicit statements about side effects, permissions, or reversibility. For a mutating operation, this is adequate but not rich.
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 opens with a clear one-sentence summary, followed by a structured Args list that adds value without fluff. Every sentence is purposeful, and the format is easy to scan.
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 description covers the core functionality, all parameters, and the return value, making it complete for a tool of this complexity. It does not discuss edge cases or failure modes, but these are not necessary for basic invocation, so it earns a 4.
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 input schema has no descriptions (coverage 0%), but the description includes an explicit Args section that explains the meaning and purpose of all six parameters, including optional ones like 'parent' and 'destination_task_list.' This fully compensates for the schema's lack of 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?
The description states a specific action ('Move a task') with the resource ('task') and clearly defines the scope: 'to a different position or parent within the same list, or to a different list.' This distinguishes it from sibling tools like 'update_task' or 'create_task' by focusing exclusively on repositioning tasks.
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 clearly indicates when to use the tool: to move a task within or between lists, including repositioning as a subtask or sibling. It does not name alternatives explicitly or state 'when not to use,' but the context is clear enough for basic selection, so it earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_document_commentsC
Read all comments from a Google Document.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It states only that it reads comments, but does not explain whether replies are included, whether resolved comments are returned, authentication requirements, or any side effects. This lacks sufficient transparency for a tool with zero annotation support.
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 concise sentence with no wasted words, making it efficiently structured and front-loaded. However, it is arguably too sparse, missing useful information, though conciseness itself is well handled.
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 minimally described with only one sentence, no annotations, and no parameter details. Although an output schema exists, important context such as prerequisites, behavior regarding comment threads/replies, and user authorization is absent. This makes the description insufficient for reliable tool selection and 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%, and the description adds no information about the parameters. While 'document_id' is fairly self-explanatory, 'user_google_email' is ambiguous—does it identify whose comments to read or the authenticated user? The description does not clarify this, failing to compensate for the missing schema descriptions.
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 uses a specific verb and resource: 'Read all comments from a Google Document.' This clearly states the tool's function and distinguishes it from sibling tools like 'read_presentation_comments' or 'create_document_comment' by specifying the document type and action.
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 guidance is provided on when to use this tool versus alternatives such as read_presentation_comments or reply_to_document_comment. The intended use is only implied by the tool name and description, but no explicit context or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_presentation_commentsC
Read all comments from a Google Presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| presentation_id | Yes | ||
| user_google_email | 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 provided, the description must disclose behaviors, but it only states the basic operation. It does not mention whether replies are included, auth requirements, pagination, or the non-destructive nature of the read action.
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 unnecessary words. It is maximally concise while still conveying the core purpose.
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?
Given two required parameters, zero schema descriptions, no annotations, and no parameter guidance, the description is inadequate for an agent to confidently invoke the tool. It only identifies the operation and resource, but omits essential contextual details.
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 the two required parameters (user_google_email, presentation_id). It does not mention or explain either parameter, forcing the agent to rely solely on parameter names.
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 clearly identifies the verb 'Read' and the resource 'comments from a Google Presentation,' which is specific and distinguishes it from sibling comment tools for documents and spreadsheets. It is unambiguous about what the tool 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?
The description provides no guidance on when to use this tool versus alternatives such as create_presentation_comment or reply_to_presentation_comment. It lacks any contextual cues about scenario fit or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sheet_valuesA
Reads values from a specific range in a Google Sheet.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. range_name (str): The range to read (e.g., "Sheet1!A1:D10", "A1:D10"). Defaults to "A1:Z1000".
Returns: str: The formatted values from the specified range.
| Name | Required | Description | Default |
|---|---|---|---|
| range_name | No | A1:Z1000 | |
| spreadsheet_id | Yes | ||
| user_google_email | 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. 'Reads values' correctly implies a non-mutating operation, and the return type is described. However, it does not disclose authorization prerequisites (e.g., prior OAuth via start_google_auth), potential errors, or rate limits. Basic but not rich.
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 concise docstring with a clear opening sentence, followed by structured Args and Returns sections. Every sentence adds value, and the front-loaded first sentence immediately conveys the core action.
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 relatively simple (3 params, no nested objects), and an output schema exists, so return values are covered. The description provides necessary parameter details and return behavior. It lacks explicit mention of authentication prerequisites, but the user_google_email parameter hints at this. Overall, sufficiently complete.
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%, but the Args section explains every parameter, including the range format with an example ('Sheet1!A1:D10') and the default value ('A1:Z1000'). This fully compensates for the lack of schema descriptions.
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 starts with 'Reads values from a specific range in a Google Sheet,' which is a specific verb+resource pairing. It clearly distinguishes this read operation from sibling tools like modify_sheet_values or format_sheet_range.
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 implies usage when reading cell values from a range, but it does not explicitly state when to use this over alternatives or mention any exclusions. No alternatives are named, so the agent must infer from the 'Reads' verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_spreadsheet_commentsB
Read all comments from a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| spreadsheet_id | Yes | ||
| user_google_email | 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 provided, the description carries full responsibility for behavioral disclosure. It states the operation is a read ('Read all comments'), but it does not mention that the user email must have access, whether comments are returned in any particular order, or any other behavioral traits beyond the action itself.
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 that states exactly what the tool does. Every word earns its place, and there is no unnecessary content.
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, the absence of annotations and a bare-bones description leave out critical context such as authentication needs, access restrictions, or how the comments are scoped to a user. For a tool with two required parameters and no safety annotations, the description is too thin to be fully self-sufficient.
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 by explaining the parameters. It does not address 'spreadsheet_id' or 'user_google_email' at all. The parameter names are somewhat self-explanatory, but the description adds no semantic detail beyond the schema fields themselves.
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 uses the specific verb 'Read' and clearly identifies the resource as 'all comments from a Google Spreadsheet.' It distinguishes itself from sibling tools like read_document_comments and read_presentation_comments by naming the spreadsheet, though it does not explicitly call out those alternatives.
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 implied usage is to fetch comments from a spreadsheet, but the description provides no explicit guidance on when to choose this over create/reply/resolve comment tools, nor does it state any exclusions or prerequisites like authentication or access requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_drive_permissionA
Removes a permission from a Google Drive file or folder, revoking access.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file or folder. Required. permission_id (str): The ID of the permission to remove (from get_drive_file_permissions). Required.
Returns: str: Confirmation of the removed permission.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| permission_id | Yes | ||
| user_google_email | 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 provided, the description carries the transparency burden. It states the core behavior—'removes a permission' and 'revoking access'—and mentions the confirmation return value. However, it does not disclose irreversibility, required permissions/scopes, or potential failure conditions such as removing an owner.
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 concise, well-structured with Args and Returns sections, and every sentence provides necessary information without redundancy. It includes parameter explanations and the return type without excessive prose.
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 straightforward permission-removal tool, the description covers purpose, all three required parameters, a prerequisite source for permission_id, and the return type. It could be more complete by noting the destructive nature and requiring auth, but overall it gives an agent sufficient context to invoke the tool correctly.
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 fully compensates by explaining each parameter: user_google_email as the user's Google email, file_id as the file/folder ID, and permission_id as the ID of the permission to remove. It also adds a valuable cross-reference indicating permission_id comes from get_drive_file_permissions.
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 starts with 'Removes a permission from a Google Drive file or folder, revoking access,' using a specific verb and resource. This clearly differentiates it from sibling tools like get_drive_file_permissions (retrieval) and update_drive_permission (modification).
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 provides clear context for when to use the tool (to remove/revoke a permission) and notes that permission_id comes from get_drive_file_permissions, implying the prerequisite workflow. It does not explicitly name alternatives or exclusions, but the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_document_commentB
Reply to a specific comment in a Google Document.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| document_id | Yes | ||
| reply_content | Yes | ||
| user_google_email | 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 of behavioral disclosure. It only states the action but omits critical traits: whether it requires write permissions, whether it has side effects (e.g., email notifications), reversibility, rate limits, or how authentication is handled. This is a bare statement with none of these operational details.
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 concise sentence, front-loaded with the verb and object, and contains no filler. Every word earns its place, making it highly efficient.
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 but still needs context: how to obtain the comment_id, whether prior authentication is required, and what the output schema contains (present but not shown). With no annotations and sparse parameter documentation, the description is not complete enough for an agent to confidently invoke the tool without additional assumptions.
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. It only mentions 'specific comment', which maps vaguely to comment_id, but it does not explain the purpose of user_google_email, document_id, or reply_content, nor their expected format (e.g., plain text). The property names give some clue, but the description adds no additional semantic value beyond what the schema already exposes.
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 clearly states the action: 'Reply to a specific comment in a Google Document.' It uses a specific verb ('reply') and resource ('comment in a Google Document'), which distinguishes it from sibling tools like create_document_comment or resolve_document_comment. The wording is unambiguous and self-contained.
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 implies usage: when the user wants to reply to an existing comment. However, it does not provide explicit guidance on prerequisites (e.g., must first retrieve comments via read_document_comments to obtain a comment_id) or mention any alternatives. There are no exclusions, but also no practical context for invocation, so it stops at implied usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_presentation_commentC
Reply to a specific comment in a Google Presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| reply_content | Yes | ||
| presentation_id | Yes | ||
| user_google_email | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description must disclose side effects and requirements. It only states 'Reply to a specific comment' without mentioning auth, irreversibility, or any effects on the presentation.
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 concise sentence, with no filler words, making it easy to parse.
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 has 4 required parameters and no annotations, yet the description provides no operational context, return value expectations, or error conditions. The existence of an output schema is not leveraged by the description.
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 information. Although parameter names are self-explanatory, the description does not clarify formats, constraints, or relationships between parameters (e.g., how comment_id relates to presentation_id).
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 clearly states the action (reply) and the target (a specific comment in a Google Presentation), distinguishing it from sibling comment tools for documents and spreadsheets.
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 guidance is provided about when to use this tool versus alternatives like reply_to_document_comment or reply_to_spreadsheet_comment, nor are any preconditions or contexts mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reply_to_spreadsheet_commentC
Reply to a specific comment in a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| reply_content | Yes | ||
| spreadsheet_id | Yes | ||
| user_google_email | 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 of behavioral transparency. It discloses nothing about side effects, authentication requirements, or how the reply affects the existing comment thread. The description is silent on all behavioral aspects.
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 concise sentence with no fluff, but it is under-specified. It earns its place by stating purpose, yet omits necessary details, balancing conciseness against completeness.
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?
Given 4 required parameters and no annotations, the description provides minimal context. It does not mention how to obtain a comment_id, any permissions needed, or what the operation does beyond replying. The output schema may cover return values, but other contextual gaps remain.
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-specific meaning. It does not explain formats or details for user_google_email, spreadsheet_id, comment_id, or reply_content, leaving the parameter names to carry all semantic weight.
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 clearly states 'Reply to a specific comment in a Google Spreadsheet', with a specific verb ('Reply to') and resource ('specific comment in Google Spreadsheet'). It distinguishes itself from sibling tools like reply_to_document_comment and reply_to_presentation_comment by explicitly naming the spreadsheet context.
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 guidance on when to use this tool versus alternatives such as create_spreadsheet_comment or resolve_spreadsheet_comment, nor does it mention prerequisites like obtaining a comment_id. It simply states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_document_commentC
Resolve a comment in a Google Document.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| document_id | Yes | ||
| user_google_email | 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 only states the action 'resolve' without disclosing side effects, reversibility, permission requirements, or behavior when the comment is already resolved. This is a significant gap.
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 sentence with no wasted words, making it concise and front-loaded. It is not verbose, but the extreme brevity limits its usefulness; still, for this dimension, it is 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?
The tool is relatively simple, but without annotations or output schema details, the description is insufficient. It does not explain the expected outcome or the meaning of resolving a comment, making it incomplete for an agent to correctly invoke the tool.
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 does not explain any of the three parameters. For instance, it does not clarify whether user_google_email is the authenticated user or the comment author, and it gives no context for comment_id or document_id.
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 uses the specific verb 'resolve' and identifies the resource as 'a comment in a Google Document,' clearly distinguishing it from sibling tools like create_document_comment or reply_to_document_comment. However, it does not define what 'resolve' means in the context of Google Docs (e.g., marking the comment as resolved), which would enhance clarity.
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 provides no guidance on when to use this tool versus alternatives such as reply_to_document_comment or read_document_comments. It also does not mention prerequisites like authentication or that the comment must be unresolved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_presentation_commentC
Resolve a comment in a Google Presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| presentation_id | Yes | ||
| user_google_email | 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 only states the action 'Resolve' with no details on what resolving entails (e.g., changes status, idempotency, permissions, or side effects). This is a significant gap for a mutation 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 description is concise and front-loaded, but under-specified. It is a single sentence that could easily have included more behavioral or param context without losing conciseness.
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 mutation tool with 3 required params and an output schema, the description is incomplete. It does not mention any behavioral context, prerequisites, or edge cases, relying entirely on the schema and output schema which are not described either.
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 does not explain any parameters. The parameter names are self-explanatory but the description does not add meaning or compensate for the missing schema details.
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 uses a specific verb 'Resolve' with a clear resource 'a comment in a Google Presentation'. It distinguishes from sibling tools like read, create, and reply for presentation comments.
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 guidance on when to use this tool versus alternatives like resolving document or spreadsheet comments, or when not to use it. The implied usage is only that it resolves a comment, but no context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_spreadsheet_commentB
Resolve a comment in a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes | ||
| spreadsheet_id | Yes | ||
| user_google_email | 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 full responsibility for behavioral disclosure. It does not explain what 'resolve' entails (e.g., marking a comment as resolved, closing a thread), whether the action is reversible, or any permission requirements. This is a significant gap for a mutation 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 description is a single, front-loaded sentence that wastes no words. It directly communicates the tool's purpose, which is ideal for conciseness, even though additional context is missing.
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 has 3 parameters and no annotations, yet the description is minimal. While an output schema exists, the description still fails to provide necessary behavioral context, such as what resolving a comment does or when to use it, making it incomplete for an agent to invoke correctly.
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-level detail. While parameter names (user_google_email, spreadsheet_id, comment_id) are somewhat self-explanatory, the description does not clarify their exact roles or any constraints, such as ownership or authentication implications for user_google_email.
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 clearly states the verb 'Resolve' and the resource 'a comment in a Google Spreadsheet', distinguishing it from sibling tools like resolve_document_comment or resolve_presentation_comment by explicitly naming the spreadsheet context.
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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when not to use, or any alternative tools, leaving the agent to infer usage solely from the name and resource.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customA
Performs a search using Google Custom Search JSON API.
Args: user_google_email (str): The user's Google email address. Required. q (str): The search query. Required. num (int): Number of results to return (1-10). Defaults to 10. start (int): The index of the first result to return (1-based). Defaults to 1. safe (Literal["active", "moderate", "off"]): Safe search level. Defaults to "off". search_type (Optional[Literal["image"]]): Search for images if set to "image". site_search (Optional[str]): Restrict search to a specific site/domain. site_search_filter (Optional[Literal["e", "i"]]): Exclude ("e") or include ("i") site_search results. date_restrict (Optional[str]): Restrict results by date (e.g., "d5" for past 5 days, "m3" for past 3 months). file_type (Optional[str]): Filter by file type (e.g., "pdf", "doc"). language (Optional[str]): Language code for results (e.g., "lang_en"). country (Optional[str]): Country code for results (e.g., "countryUS").
Returns: str: Formatted search results including title, link, and snippet for each result.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| num | No | ||
| safe | No | off | |
| start | No | ||
| country | No | ||
| language | No | ||
| file_type | No | ||
| search_type | No | ||
| site_search | No | ||
| date_restrict | No | ||
| user_google_email | Yes | ||
| site_search_filter | 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 of behavioral disclosure. It does document the return format and parameter defaults, which adds value, but it omits operational constraints such as rate limits, authentication prerequisites (beyond the user email parameter), and potential errors. This makes it partially transparent but not comprehensive.
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 well-structured docstring that front-loads the purpose and then systematically documents each parameter and the return value. It is appropriately sized for a 12-parameter tool, with no fluff, though it is somewhat mechanical and could benefit from a more agent-friendly summary.
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?
Given the tool's 12-parameter complexity and the presence of an output schema, the description covers all parameters and the return format adequately. It does not mention caveats, rate limits, or alternative tool selection, but it provides enough for an agent to invoke the tool correctly in a straightforward search scenario.
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 compensates thoroughly. It provides detailed semantics for every parameter, including ranges (num 1-10), defaults, allowed literal values, and examples for date_restrict and language. This adds substantial meaning beyond the bare 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 clearly identifies the tool as performing a search using the Google Custom Search JSON API, with a specific verb and resource. It does not explicitly differentiate from the sibling search_custom_siterestrict, but the general web search purpose is unambiguous.
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 provides no explicit guidance on when to use this tool versus alternatives like search_custom_siterestrict or search_docs. It simply documents parameters and return values without any 'use when' or 'alternatives' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_custom_siterestrictA
Performs a search restricted to specific sites using Google Custom Search.
Args: user_google_email (str): The user's Google email address. Required. q (str): The search query. Required. sites (List[str]): List of sites/domains to search within. num (int): Number of results to return (1-10). Defaults to 10. start (int): The index of the first result to return (1-based). Defaults to 1. safe (Literal["active", "moderate", "off"]): Safe search level. Defaults to "off".
Returns: str: Formatted search results from the specified sites.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| num | No | ||
| safe | No | off | |
| sites | Yes | ||
| start | No | ||
| user_google_email | 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 full burden for behavioral disclosure. It states that it returns formatted search results and describes parameters, but it doesn't disclose any potential side effects, authentication requirements (beyond passing an email), or error behaviors. This is adequate for a simple read-only search but doesn't add deeper behavioral context like rate limits or the nature of the formatted output.
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 clean docstring with a one-sentence summary, a structured Args list, and a Returns section. Every line is informative and there is no redundant or filler content. It is appropriately sized and front-loaded with the main purpose.
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 has 6 parameters with 3 required and an output schema. The description explains all parameters, defaults, and the return format. It doesn't mention edge cases or error handling, but for a straightforward search tool, the description provides sufficient context. A small gap is the lack of any mention of authorization prerequisites or limitations, so it's not 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?
The schema has no descriptions for any properties (0% coverage), so the description fully compensates. It clearly explains each parameter's meaning, type, defaults, and constraints (e.g., 'num (int): Number of results to return (1-10)', 'start (int): The index of the first result to return (1-based)'). This is exactly the kind of semantic enrichment the description should provide.
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 clearly states 'Performs a search restricted to specific sites using Google Custom Search', which specifies the verb (performs a search), the resource (specific sites via Google Custom Search), and distinguishes this from sibling tools like the general 'search_custom' by the site restriction. It is a specific and unambiguous purpose.
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 implies when to use this tool: when a search needs to be restricted to particular sites or domains. It provides clear context but does not explicitly mention alternatives or exclusion scenarios. The 'sites' parameter makes it obvious, but there's no explicit 'use this instead of search_custom' guidance, so it doesn't reach a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsC
Searches for Google Docs by name using Drive API (mimeType filter).
Returns: str: A formatted list of Google Docs matching the search query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| page_size | No | ||
| user_google_email | 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 of behavioral disclosure, but it only states the operation and return type. It does not mention pagination, sorting, authentication requirements, limitations, or side effects, leaving the agent without important behavioral context.
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 extremely concise and front-loaded, with no filler or redundancy. The 'Returns' line is useful. However, its brevity comes at the cost of necessary detail, which is a completeness issue rather than a conciseness problem.
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?
Given three parameters, no annotations, an output schema that is not described, and numerous sibling search/list tools, this description is too sparse. It omits key context about query syntax, authentication needs, and result formatting, making it difficult for an agent to select and invoke the tool correctly.
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 schema description coverage is 0%, and the description does not compensate. It only alludes to searching by name but does not explain how `query` maps to that behavior, what `user_google_email` is for, or how `page_size` is used. It adds no meaning beyond the raw schema.
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 clearly states the action ('Searches for Google Docs by name') and the resource (Google Docs), while mentioning the use of Drive API and mimeType filter to scope results. This distinguishes it from sibling tools like search_drive_files, which searches all file types, and list_docs_in_folder, which lists rather than searches.
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 guidance on when to use this tool versus alternatives such as search_drive_files or list_docs_in_folder, and does not mention prerequisites like authentication. It lacks any explicit or implicit usage context beyond the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drive_filesA
Searches for files and folders within a user's Google Drive, including shared drives.
Args:
user_google_email (str): The user's Google email address. Required.
query (str): The search query string. Supports Google Drive search operators.
page_size (int): The maximum number of files to return. Defaults to 10.
drive_id (Optional[str]): ID of the shared drive to search. If None, behavior depends on corpora and include_items_from_all_drives.
include_items_from_all_drives (bool): Whether shared drive items should be included in results. Defaults to True. This is effective when not specifying a drive_id.
corpora (Optional[str]): Bodies of items to query (e.g., 'user', 'domain', 'drive', 'allDrives').
If 'drive_id' is specified and 'corpora' is None, it defaults to 'drive'.
Otherwise, Drive API default behavior applies. Prefer 'user' or 'drive' over 'allDrives' for efficiency.
Returns: str: A formatted list of found files/folders with their details (ID, name, type, size, modified time, link).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| corpora | No | ||
| drive_id | No | ||
| page_size | No | ||
| user_google_email | Yes | ||
| include_items_from_all_drives | 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 burden. It discloses meaningful behavior: shared drive inclusion, default page_size, drive_id/corpora interactions, and an efficiency tip ('Prefer 'user' or 'drive' over 'allDrives' for efficiency'). This goes well beyond a bare 'Searches for files' statement.
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 well-structured with a clear purpose sentence, an Args block, and a Returns section. While it is somewhat lengthy, every line serves a purpose, especially given the 0% schema coverage. It does not waste words, but the parameter details could be slightly more compressed.
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?
Given the tool's complexity (6 params, no annotations, multiple drive-related options), the description covers all necessary aspects: what it does, scope, parameter semantics, defaults, and return format. It is complete enough for an agent to select and invoke the tool correctly without additional 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?
The input schema has zero descriptions, so the description fully compensates by documenting all six parameters: required user email, query string, page_size default, optional drive_id with behavior, include_items_from_all_drives default and scope, and corpora default logic. This is comprehensive and adds significant clarity.
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?
Description opens with a specific verb and resource: 'Searches for files and folders within a user's Google Drive, including shared drives.' This clearly distinguishes it from sibling tools like list_drive_items, which lists items rather than searching by query.
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 implies searching as the core use case and gives details about parameters (e.g., search operators, corpora) but does not explicitly state when to choose this over alternatives like list_drive_items. No exclusions or alternative tool mentions are provided, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gmail_messagesA
Searches messages in a user's Gmail account based on a query. Returns both Message IDs and Thread IDs for each found message, along with Gmail web interface links for manual verification. Supports pagination via page_token parameter.
Args: query (str): The search query. Supports standard Gmail search operators. user_google_email (str): The user's Google email address. Required. page_size (int): The maximum number of messages to return. Defaults to 10. page_token (Optional[str]): Token for retrieving the next page of results. Use the next_page_token from a previous response.
Returns: str: LLM-friendly structured results with Message IDs, Thread IDs, and clickable Gmail web interface URLs for each found message. Includes pagination token if more results are available.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| page_size | No | ||
| page_token | No | ||
| user_google_email | 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 provided, the description carries the full burden of behavioral disclosure. It does this well by explaining pagination via page_token, the return structure (Message IDs, Thread IDs, web links), and that 'user_google_email is Required.' It also notes support for standard Gmail search operators. Missing details like rate limits or authentication are not disclosed, but for a read-only search tool the provided information is substantial.
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 well-structured with a one-sentence summary, a return overview, then a clear Args list, and a Returns section. Each sentence serves a purpose and contains no filler. The format is easy to scan and front-loads the core functionality.
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?
Given the tool's complexity (4 parameters, output schema exists, no annotations), the description is remarkably complete. It covers the search purpose, all parameters with defaults and required status, the return format, pagination behavior, and links for manual verification. There is no significant missing context that would prevent an agent from using the tool correctly.
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?
Despite 0% schema description coverage, the description's Args section fully documents all four parameters. It explains that query supports standard Gmail search operators, user_google_email is required, page_size defaults to 10, and page_token should use next_page_token from a previous response. This adds meaningful detail beyond the bare schema, fully compensating for the lack of schema descriptions.
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 clearly states the tool 'Searches messages in a user's Gmail account based on a query,' which is a specific verb+resource combination. It distinguishes itself from sibling tools like get_gmail_message_content by focusing on search and returning Message IDs, Thread IDs, and web links, not content. This unambiguous purpose differentiates it well.
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 provides clear context for when to use the tool: to find messages by query and get IDs/links for manual verification. It implies that content retrieval is not its purpose, but it does not explicitly name alternatives or exclusions, such as suggesting get_gmail_message_content for reading full messages. The guidance is therefore clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesB
Searches for messages in Google Chat spaces by text content.
Returns: str: A formatted list of messages matching the search query.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| space_id | No | ||
| page_size | No | ||
| user_google_email | 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 provided, the description must disclose behavior, but it only states that it returns a formatted list. It does not mention pagination, scoping across spaces, authentication requirements, or read-only nature. The 'Searches' phrasing implies non-destructive behavior but is not explicit, and key behavioral details like the meaning of page_size or space_id are omitted.
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 concise and front-loaded with the primary purpose in one sentence. The 'Returns' section adds value by indicating the output is a formatted list, and overall the description is minimally sized with no fluff.
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?
Given the tool has 4 parameters, no annotations, and a non-trivial domain (Google Chat), the description is too thin. It lacks behavior details, parameter explanations, and usage context. While an output schema exists, the description does not cover edge cases (e.g., optional space_id, pagination via page_size) that an agent needs to know 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%, so the description is expected to explain parameters. It clarifies that 'query' is text content and 'space_id' relates to Google Chat spaces, but it does not explain 'page_size' or 'user_google_email'. This leaves the agent with incomplete understanding of how to invoke the tool correctly.
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 clearly states the tool 'Searches for messages in Google Chat spaces by text content', which identifies the specific action (search), resource (messages), and domain (Google Chat spaces). It distinguishes itself from sibling tools like search_gmail_messages and search_docs by explicitly naming Google Chat.
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 implies usage context (use when you need to find Chat messages by text) but provides no explicit guidance on when not to use it or alternatives. It does not compare with similar tools such as get_messages or search_gmail_messages, leaving the agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_gmail_messageA
Sends an email using the user's Gmail account. Supports both new emails and replies.
Args: to (str): Recipient email address. subject (str): Email subject. body (str): Email body content. body_format (Literal['plain', 'html']): Email body format. Defaults to 'plain'. cc (Optional[str]): Optional CC email address. bcc (Optional[str]): Optional BCC email address. user_google_email (str): The user's Google email address. Required. thread_id (Optional[str]): Optional Gmail thread ID to reply within. When provided, sends a reply. in_reply_to (Optional[str]): Optional Message-ID of the message being replied to. Used for proper threading. references (Optional[str]): Optional chain of Message-IDs for proper threading. Should include all previous Message-IDs.
Returns: str: Confirmation message with the sent email's message ID.
Examples: # Send a new email send_gmail_message(to="user@example.com", subject="Hello", body="Hi there!")
# Send an HTML email
send_gmail_message(
to="user@example.com",
subject="Hello",
body="<strong>Hi there!</strong>",
body_format="html"
)
# Send an email with CC and BCC
send_gmail_message(
to="user@example.com",
cc="manager@example.com",
bcc="archive@example.com",
subject="Project Update",
body="Here's the latest update..."
)
# Send a reply
send_gmail_message(
to="user@example.com",
subject="Re: Meeting tomorrow",
body="Thanks for the update!",
thread_id="thread_123",
in_reply_to="<message123@gmail.com>",
references="<original@gmail.com> <message123@gmail.com>"
)| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Optional CC email address. | |
| to | Yes | Recipient email address. | |
| bcc | No | Optional BCC email address. | |
| body | Yes | Email body content (plain text or HTML). | |
| subject | Yes | Email subject. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| in_reply_to | No | Optional Message-ID of the message being replied to. | |
| user_google_email | 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 full responsibility for behavioral disclosure. It explains that replies are supported and that thread_id triggers a reply, and it describes the return value. However, it does not explicitly warn that sending is an irreversible side effect or mention authentication prerequisites beyond the user_google_email parameter, which is a meaningful gap for a send action.
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 well-organized with Args, Returns, and Examples sections. It is longer than necessary because it duplicates schema field descriptions, but the examples and threading explanations are valuable. The structure helps an agent parse the information efficiently, though it could be slightly more compact.
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?
Given the tool's complexity (10 parameters, reply/threading behavior), the description covers most aspects: new emails, replies, HTML/plain body, CC/BCC, threading, and return value. It lacks explicit error handling or authentication prerequisites, but the examples and detailed parameter semantics make it sufficient for correct invocation in most cases.
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?
With 90% schema coverage, the baseline is 3, but the description adds significant value beyond the schema. It clarifies that thread_id converts the send into a reply, explains the role of in_reply_to and references for threading, and provides examples for HTML formatting and CC/BCC usage. This goes well beyond the raw schema definitions.
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 clearly states the tool's purpose: 'Sends an email using the user's Gmail account' and explicitly supports both new emails and replies. This distinguishes it from sibling tools like draft_gmail_message (which creates drafts) and send_message (which targets chat spaces), making the resource and action unambiguous.
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 clearly indicates when to use the tool ('to send an email') and when to use reply-specific parameters (thread_id, in_reply_to, references). It does not explicitly name alternatives or exclude other tools, but the context is clear enough for an agent to select it for sending Gmail messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageB
Sends a message to a Google Chat space.
Returns: str: Confirmation message with sent message details.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | ||
| thread_key | No | ||
| message_text | Yes | ||
| user_google_email | 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 must carry the full burden of behavioral disclosure. It mentions returning a confirmation message but omits critical details such as authentication requirements, side effects of sending, error handling, or the role of thread_key. For a mutating operation, this is insufficient.
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 two concise sentences: the first states the core function, and the second states the return type. Each sentence earns its place with no wasted words, and the main action is front-loaded.
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?
Given a tool with four parameters, no annotations, no schema descriptions, and no explicit output schema beyond a Returns line, the description is far too minimal. It does not address thread usage, user identification, prerequisites, or failure modes, making it insufficient for reliable 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%, and the description adds no explanations for the four parameters (space_id, thread_key, message_text, user_google_email). It relies entirely on parameter names and types, which is inadequate for correctly constructing calls, especially for thread_key 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?
The description clearly states that the tool 'Sends a message to a Google Chat space', providing a specific verb and resource. This distinguishes it from sibling tools like send_gmail_message (Gmail) and read-oriented tools like get_messages or search_messages.
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 purpose implies when to use it (to send a new message to a Google Chat space), but there is no explicit guidance on alternatives, exclusions, or prerequisites. It does not mention reading messages or other messaging tools, so usage context is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_publish_settingsA
Updates the publish settings of a form.
Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form to update publish settings for. publish_as_template (bool): Whether to publish as a template. Defaults to False. require_authentication (bool): Whether to require authentication to view/submit. Defaults to False.
Returns: str: Confirmation message of the successful publish settings update.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| user_google_email | Yes | ||
| publish_as_template | No | ||
| require_authentication | 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 of behavioral disclosure. It does not mention side effects, permissions, whether existing settings are overwritten, or any limitations. For a mutation tool, this is a significant gap.
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 well-structured with Args and Returns sections, every sentence earns its place, and there is no fluff. It is concise and easy to parse.
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 relatively simple with 4 parameters and a string return. The description covers purpose, parameters, and return, but lacks behavioral details and usage guidance. It is adequate but not comprehensive, especially given the absence of annotations.
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. It lists all four parameters with brief meanings, but most are tautological (e.g., 'The ID of the form to update publish settings for'). It adds slight value (e.g., 'to view/submit') but does not fully clarify ambiguous terms like 'publish as template'.
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 clearly states 'Updates the publish settings of a form' with a specific verb and resource. This distinguishes it from siblings like create_form and get_form, which handle form creation and retrieval.
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 provides clear context for when to use the tool (updating publish settings) but does not explicitly mention alternatives or exclusions. It lacks 'use X instead' guidance, but the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_google_authA
Manually initiate Google OAuth authentication flow.
NOTE: This tool should typically NOT be called directly. The authentication system automatically handles credential checks and prompts for authentication when needed. Only use this tool if:
You need to re-authenticate with different credentials
You want to proactively authenticate before using other tools
The automatic authentication flow failed and you need to retry
In most cases, simply try calling the Google Workspace tool you need - it will automatically handle authentication if required.
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes | ||
| user_google_email | 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 provided, the description carries the full burden. It discloses the behavior of initiating OAuth, mentions the automatic authentication flow, and explains when manual initiation is appropriate. It does not detail side effects like user prompts or credential storage, but it provides solid behavioral context beyond a minimal statement.
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 well-structured with a lead sentence and a bullet-style NOTE section. It is slightly repetitive in the final 'In most cases' sentence, which restates the earlier automatic-handling point, but overall it is efficient and scannable.
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 authentication tool, the description covers purpose, typical usage, and alternatives well. It lacks parameter-level detail and specifics about authentication state outcomes, but given the presence of an output schema and the low operational complexity, it is largely complete.
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 does not explain either 'service_name' or 'user_google_email'. The names are somewhat self-explanatory, but the description adds no meaning beyond the schema, leaving the required parameter and the optional email parameter underspecified.
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 clearly states a specific action ('Manually initiate Google OAuth authentication flow') and explicitly distinguishes this tool from normal usage by noting it should typically not be called directly. It clarifies the resource (Google OAuth) and the trigger conditions, making the purpose unambiguous.
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 provides explicit when-to-use guidance with numbered scenarios, explicitly states when NOT to use it, and names the alternative approach ('simply try calling the Google Workspace tool you need'). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transfer_drive_ownershipA
Transfers ownership of a Google Drive file or folder to another user.
This is an irreversible operation. The current owner will become an editor. Only works within the same Google Workspace domain or for personal accounts.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file or folder to transfer. Required. new_owner_email (str): Email address of the new owner. Required. move_to_new_owners_root (bool): If True, moves the file to the new owner's My Drive root. Defaults to False.
Returns: str: Confirmation of the ownership transfer.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| new_owner_email | Yes | ||
| user_google_email | Yes | ||
| move_to_new_owners_root | 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 full responsibility for behavioral disclosure. It clearly states the operation is irreversible, the current owner becomes an editor, domain restrictions, and the effect of move_to_new_owners_root on file placement. It also describes the return value, providing comprehensive context beyond the structured schema.
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 well-structured with a concise opening sentence, followed by key behavioral notes, and a clean Args/Returns formatting. Every sentence provides necessary information without redundancy, making it easy for an agent to quickly parse purpose, constraints, and parameters.
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?
Given the tool's complexity (4 parameters, no annotations, no output schema), the description covers all essential aspects: what it does, constraints, parameter meanings, behavioral outcomes, and return value. It is fully self-sufficient for an agent to invoke it correctly in typical ownership-transfer scenarios.
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 input schema provides zero description coverage (0%), so the description must fully compensate. It explicitly defines each parameter with types, required status, and meaning, including the default for move_to_new_owners_root. This adds significant semantic value beyond the bare schema.
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 opens with a specific verb and resource: 'Transfers ownership of a Google Drive file or folder to another user.' This clearly distinguishes it from sibling tools like share_drive_file or update_drive_permission, which focus on sharing or permission changes rather than ownership transfer.
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 provides clear context for when to use the tool by noting it is irreversible and only works within the same Google Workspace domain or for personal accounts. However, it does not explicitly name alternative tools or state 'use this instead of X', so it falls short of the highest benchmark in this dimension.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_conditional_formattingA
Updates an existing conditional formatting rule by index on a sheet.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. range_name (Optional[str]): A1-style range to apply the updated rule (optionally with sheet name). If omitted, existing ranges are preserved. rule_index (int): Index of the rule to update (0-based). condition_type (Optional[str]): Sheets condition type. If omitted, the existing rule's type is preserved. condition_values (Optional[Union[str, List[Union[str, int, float]]]]): Values for the condition. background_color (Optional[str]): Hex background color when condition matches. text_color (Optional[str]): Hex text color when condition matches. sheet_name (Optional[str]): Sheet name to locate the rule when range_name is omitted. Defaults to first sheet. gradient_points (Optional[Union[str, List[dict]]]): If provided, updates the rule to a gradient color scale using these points.
Returns: str: Confirmation of the updated rule and the current rule state.
| Name | Required | Description | Default |
|---|---|---|---|
| range_name | No | ||
| rule_index | Yes | ||
| sheet_name | No | ||
| text_color | No | ||
| condition_type | No | ||
| spreadsheet_id | Yes | ||
| gradient_points | No | ||
| background_color | No | ||
| condition_values | No | ||
| user_google_email | 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 of behavioral disclosure. It adds useful details: omitted range_name preserves existing ranges, omitted condition_type preserves the existing type, and gradient_points switches the rule to a gradient scale. It also states the return value includes the current rule state. It does not discuss permissions or error scenarios, but the provided behavior is rich enough for a mutation 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 description is well-structured with Args and Returns sections. Each parameter explanation is concise yet informative, and the overall length is appropriate for a 10-parameter tool. Every sentence earns its place without redundancy.
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 tool with 10 parameters and no annotations, the description covers all parameter semantics and return values. While it lacks explicit edge-case handling (e.g., invalid rule_index), the tool is sufficiently specified for an agent to invoke it correctly. The output schema exists, so return details are already structured, and the description adds the confirmation/current-state 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%, so the description must compensate. It provides detailed Args with explanations for every parameter, including optionality and default behavior. This fully compensates for the schema's lack of descriptions and adds semantic meaning beyond parameter names.
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 ('updates') and resource ('existing conditional formatting rule by index on a sheet'), clearly distinguishing it from sibling tools like add_conditional_formatting and delete_conditional_formatting. It is unambiguous about what the tool 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?
The description provides clear context: the tool is for modifying an existing rule using its index. It implies the user must already have a rule and know its index, but it does not explicitly mention alternatives or when not to use it. This is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_drive_fileA
Updates metadata and properties of a Google Drive file.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file to update. Required. name (Optional[str]): New name for the file. description (Optional[str]): New description for the file. mime_type (Optional[str]): New MIME type (note: changing type may require content upload). add_parents (Optional[str]): Comma-separated folder IDs to add as parents. remove_parents (Optional[str]): Comma-separated folder IDs to remove from parents. starred (Optional[bool]): Whether to star/unstar the file. trashed (Optional[bool]): Whether to move file to/from trash. writers_can_share (Optional[bool]): Whether editors can share the file. copy_requires_writer_permission (Optional[bool]): Whether copying requires writer permission. properties (Optional[dict]): Custom key-value properties for the file.
Returns: str: Confirmation message with details of the updates applied.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| file_id | Yes | ||
| starred | No | ||
| trashed | No | ||
| mime_type | No | ||
| properties | No | ||
| add_parents | No | ||
| description | No | ||
| remove_parents | No | ||
| user_google_email | Yes | ||
| writers_can_share | No | ||
| copy_requires_writer_permission | 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 provided, the description carries the full burden. It discloses the important caveat that changing MIME type may require content upload, and it describes the return value. It doesn't detail all side effects (e.g., moving to trash or parent changes), but it provides meaningful behavioral context.
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?
Despite its length, the description is a well-organized docstring with a clear purpose line, a structured argument list, and a return value note. Every line serves a purpose for a tool with 12 parameters; there is no fluff.
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?
Given the tool's complexity (12 parameters) and lack of annotations, this description is comprehensive. It covers all parameters with semantic explanations, includes a return value description, and a caveat about MIME type changes. It is sufficient for an agent to select and invoke the tool correctly.
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 schema has 0% description coverage, but the description thoroughly documents every parameter, including formats like 'Comma-separated folder IDs' for add_parents/remove_parents and the note that changing MIME type may require content upload. This adds substantial semantics beyond the bare schema types.
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 clearly states 'Updates metadata and properties of a Google Drive file,' using a specific verb and resource. It distinguishes itself from sibling tools like update_drive_permission, which handles permissions separately.
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?
While no explicit when-to-use or exclusions are provided, the description's focus on 'metadata and properties' implies it is for file metadata updates rather than permissions or sharing, which are covered by sibling tools. The parameter list further clarifies its scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_drive_permissionA
Updates an existing permission on a Google Drive file or folder.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file or folder. Required. permission_id (str): The ID of the permission to update (from get_drive_file_permissions). Required. role (Optional[str]): New role - 'reader', 'commenter', or 'writer'. If not provided, role unchanged. expiration_time (Optional[str]): Expiration time in RFC 3339 format (e.g., "2025-01-15T00:00:00Z"). Set or update when permission expires.
Returns: str: Confirmation with updated permission details.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| file_id | Yes | ||
| permission_id | Yes | ||
| expiration_time | No | ||
| user_google_email | 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 discloses behavioral nuances: role is optional and unchanged if omitted, and expiration_time has a specific format and purpose. It does not mention auth requirements or error conditions, but for an update operation the core behavior is well articulated.
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 well-structured docstring: a one-sentence purpose statement, then per-parameter details, and a return type. Every sentence is informative and there is no fluff or repetition of the 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?
All five parameters are described with required markers and examples, and the return type is specified. It lacks guidance on when to prefer this tool over remove_drive_permission or share_drive_file, and does not mention side effects or prerequisites, but overall it provides enough information 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 coverage is 0%, so the description must fully compensate. It provides explicit meaning for every parameter, including valid role values ('reader', 'commenter', 'writer'), a format example for expiration_time, and a cross-reference to get_drive_file_permissions for permission_id. This adds significant value beyond the bare schema.
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 clearly states the tool updates an existing permission on a Google Drive file or folder, distinguishing it from siblings like remove_drive_permission or transfer_drive_ownership. It also references get_drive_file_permissions, linking to the source of permission IDs.
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 implies usage context by stating it updates an existing permission and points to get_drive_file_permissions for the permission_id. It does not explicitly exclude alternatives or provide when-not-to-use guidance, but the context is clear enough for an agent to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_taskA
Update an existing task.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list containing the task. task_id (str): The ID of the task to update. title (Optional[str]): New title for the task. notes (Optional[str]): New notes/description for the task. status (Optional[str]): New status ("needsAction" or "completed"). due (Optional[str]): New due date in RFC 3339 format.
Returns: str: Confirmation message with updated task details.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | ||
| notes | No | ||
| title | No | ||
| status | No | ||
| task_id | Yes | ||
| task_list_id | Yes | ||
| user_google_email | 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 provided, the description must carry the disclosure burden. It adds useful context by clarifying that title, notes, status, and due are new values, listing the allowed status values, and noting the due date format. However, it does not disclose whether updates are partial/merge vs full replacement, the authorization requirements, or error behavior for invalid task IDs.
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 well-structured with Args and Returns sections, placing each parameter on its own line with a concise explanation. There is no redundant or filler text; every sentence contributes useful 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?
For a 7-parameter update tool with no annotations, the description covers all parameters, the return value, and the action clearly. It lacks explicit usage guidance and edge-case/error behavior, but it is sufficiently complete for an agent to select and invoke the tool correctly in most scenarios.
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 schema properties have zero descriptions, but the description documents every parameter with type, optionality, and format details ('New due date in RFC 3339 format', 'needsAction' or 'completed'). It fully compensates for the schema's lack of semantic information, making parameter usage unambiguous.
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 uses the specific verb 'Update' with the clear resource 'an existing task', making the tool's function immediately obvious. It distinguishes well from sibling tools like update_task_list, update_drive_file, and create_task by naming the exact entity being modified.
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 implies when to use it (for modifying an existing task) and even hints through optional parameters that not all fields need updating. However, it does not explicitly contrast with related tools such as create_task, move_task, or delete_task, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_task_listA
Update an existing task list.
Args: user_google_email (str): The user's Google email address. Required. task_list_id (str): The ID of the task list to update. title (str): The new title for the task list.
Returns: str: Confirmation message with updated task list details.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| task_list_id | Yes | ||
| user_google_email | 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 must carry the full behavioral disclosure burden. It only states that it updates a task list and returns a confirmation message, omitting side effects, irreversibility, error behavior, or whether fields other than title are preserved. This is insufficient for a mutation 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 description is concise and well-structured, with a clear opening sentence followed by Args and Returns sections. The 'Required' note is redundant but not harmful. Every line serves a purpose.
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 CRUD update with all parameters described and a basic string return, the description is reasonably complete. However, it lacks context about permissions, error cases, and whether the update is partial or full, which would be expected for a mutation tool with no annotations.
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%, but the description's Args section compensates by explaining all three parameters. It clarifies that user_google_email is required, task_list_id identifies the list, and title is the new value, adding meaning beyond the raw schema.
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 clearly states 'Update an existing task list' with a specific verb and resource, distinguishing it from sibling CRUD operations like create_task_list, get_task_list, and delete_task_list. The scope is unambiguous.
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 implies use for modifying an existing task list, but it does not explicitly contrast with create, get, or delete task list tools. No prerequisites or exclusions are mentioned, leaving the agent to infer when to use this tool.
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.
105 tool updates
v1.0.0- First observed
add_conditional_formatting - First observed
batch_modify_gmail_message_labels - First observed
batch_share_drive_file - First observed
batch_update_doc - First observed
batch_update_presentation - First observed
check_drive_file_public_access - First observed
clear_completed_tasks - First observed
create_doc - First observed
create_document_comment - First observed
create_drive_file - First observed
create_event - First observed
create_form - First observed
create_gmail_filter - First observed
create_meeting_with_zoom - First observed
create_presentation - First observed
create_presentation_comment - First observed
create_sheet - First observed
create_spreadsheet - First observed
create_spreadsheet_comment - First observed
create_table_with_data - First observed
create_task - First observed
create_task_list - First observed
create_zoom_meeting - First observed
debug_table_structure - First observed
delete_conditional_formatting - First observed
delete_event - First observed
delete_gmail_filter - First observed
delete_task - First observed
delete_task_list - First observed
delete_zoom_meeting - First observed
draft_gmail_message - First observed
export_doc_to_pdf - First observed
find_and_replace_doc - First observed
format_sheet_range - First observed
get_doc_content - First observed
get_drive_file_content - First observed
get_drive_file_download_url - First observed
get_drive_file_permissions - First observed
get_drive_shareable_link - First observed
get_events - First observed
get_form - First observed
get_form_response - First observed
get_gmail_attachment_content - First observed
get_gmail_message_content - First observed
get_gmail_messages_content_batch - First observed
get_gmail_thread_content - First observed
get_gmail_threads_content_batch - First observed
get_messages - First observed
get_page - First observed
get_page_thumbnail - First observed
get_presentation - First observed
get_search_engine_info - First observed
get_spreadsheet_info - First observed
get_task - First observed
get_task_list - First observed
get_zoom_meeting - First observed
insert_doc_elements - First observed
insert_doc_image - First observed
inspect_doc_structure - First observed
list_calendars - First observed
list_docs_in_folder - First observed
list_drive_items - First observed
list_form_responses - First observed
list_gmail_filters - First observed
list_gmail_labels - First observed
list_spaces - First observed
list_spreadsheets - First observed
list_task_lists - First observed
list_tasks - First observed
list_zoom_meetings - First observed
manage_gmail_label - First observed
modify_doc_text - First observed
modify_event - First observed
modify_gmail_message_labels - First observed
modify_sheet_values - First observed
move_task - First observed
read_document_comments - First observed
read_presentation_comments - First observed
read_sheet_values - First observed
read_spreadsheet_comments - First observed
remove_drive_permission - First observed
reply_to_document_comment - First observed
reply_to_presentation_comment - First observed
reply_to_spreadsheet_comment - First observed
resolve_document_comment - First observed
resolve_presentation_comment - First observed
resolve_spreadsheet_comment - First observed
search_custom - First observed
search_custom_siterestrict - First observed
search_docs - First observed
search_drive_files - First observed
search_gmail_messages - First observed
search_messages - First observed
send_gmail_message - First observed
send_message - First observed
set_publish_settings - First observed
share_drive_file - First observed
start_google_auth - First observed
transfer_drive_ownership - First observed
update_conditional_formatting - First observed
update_doc_headers_footers - First observed
update_drive_file - First observed
update_drive_permission - First observed
update_task - First observed
update_task_list
TDQS
Scored across 105 tools
Multiple tools have overlapping purposes, such as get_doc_content and get_drive_file_content both retrieving file content, and search_docs vs search_drive_files with redundant functionality. While descriptions are detailed, the boundaries between these pairs and others (e.g., permission-related Drive tools) are not clearly distinct, making misselection likely.
Most tools follow a verb_noun pattern, but there are notable inconsistencies: 'modify_event' instead of 'update_event', 'doc' vs 'document' prefixes (get_doc_content vs read_document_comments), and 'create_meeting_with_zoom' breaking the pattern. Overall, the naming is readable but not fully consistent.
With 105 tools, the server is heavily overloaded, far exceeding the typical 3-15 well-scoped range. The broad coverage of Google services justifies a larger set, but the sheer number still makes it difficult for an agent to choose appropriately and may include redundant tools.
The tool set covers most core workflows across Gmail, Calendar, Drive, Docs, Sheets, Slides, Tasks, and Chat, but there are notable gaps: Forms lacks update/delete operations, and Zoom lacks an update meeting tool. These gaps will require workarounds for full lifecycle management.
Maintenance
Related MCP Connectors
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables management of Google Drive files, Docs, Sheets, Slides, and Calendar events through natural language using the MCP protocol.8,493 npm219MIT
- AlicenseBqualityDmaintenanceEnables natural language control over Google Workspace services including Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Tasks, Chat, Contacts, Apps Script, and Custom Search via a remote MCP server hosted on Google Cloud Run.114MIT
- AlicenseAqualityBmaintenanceEnables natural language interaction with multiple Google accounts (Gmail, Drive, Calendar) from MCP-compatible clients like Claude.63189 npm2MIT
- FlicenseNot gradedqualityBmaintenanceEnables multi-user access to Google Workspace services (Gmail, Calendar, Docs, Sheets, Slides, Drive) via remote MCP with OAuth 2.1 authentication.-