Google Workspace MCP Server
Search, read, send, draft, label, and manage email through the Gmail API.
Execute and manage Google Apps Script projects.
Create, update, delete events; check availability; RSVP through the Google Calendar API.
Send messages, manage spaces through the Google Chat API.
Create, read, edit, and format documents through the Google Docs API.
Search, upload, download, organize files and folders through the Google Drive API.
Create forms, manage questions, read responses through the Google Forms API.
Read and write cell ranges, manage spreadsheets through the Google Sheets API.
Create and edit presentations, extract content through the Google Slides API.
Manage task lists and individual tasks through the Google Tasks API.
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 Serverlist unread emails from yesterday"
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 — Personal Cloud Run Deployment
A personal remote MCP server providing full natural language control over Google Workspace, hosted on Google Cloud Run. Based on taylorwilsdon/google_workspace_mcp (v1.14.3).
Live Service
MCP Endpoint |
|
Health Check |
|
Transport | Streamable HTTP (MCP over HTTP) |
Account |
Related MCP server: mcp-google-workspace
Connecting to Claude Code
Add to ~/.claude/mcp.json:
{
"mcpServers": {
"google-workspace": {
"type": "http",
"url": "https://google-workspace-mcp-557522843498.us-central1.run.app/mcp"
}
}
}Restart Claude Code to load the server.
Enabled Google Workspace Tools
All major Google Workspace services are available:
Service | Capabilities |
Gmail | Search, read, send, draft, label, and manage email |
Google Calendar | Create, update, delete events; check availability; RSVP |
Google Drive | Search, upload, download, organize files and folders |
Google Docs | Create, read, edit, and format documents |
Google Sheets | Read and write cell ranges, manage spreadsheets |
Google Slides | Create and edit presentations, extract content |
Google Forms | Create forms, manage questions, read responses |
Google Tasks | Manage task lists and individual tasks |
Google Chat | Send messages, manage spaces |
Contacts | Look up and manage contacts via People API |
Apps Script | Execute and manage Google Apps Script projects |
Custom Search | Programmable Search Engine integration (requires PSE key) |
Infrastructure
Resource | Details |
GCP Project | tom-personal-tools |
Cloud Run Region | us-central1 (within always-free tier) |
Runtime | Python 3.11 on Cloud Run managed |
Auth | OAuth 2.1, Desktop OAuth client |
Secrets | Google Secret Manager ( |
CI/CD | Cloud Build trigger on push to |
Container Registry | Artifact Registry ( |
Redeploying Manually
cd /home/tom-unix/projects/google-workspace-mcp
gcloud run deploy google-workspace-mcp \
--source . \
--project=tom-personal-tools \
--region=us-central1 \
--platform=managed \
--allow-unauthenticated \
--port=8000 \
--memory=512Mi \
--set-secrets="GOOGLE_OAUTH_CLIENT_ID=GOOGLE_OAUTH_CLIENT_ID:latest,GOOGLE_OAUTH_CLIENT_SECRET=GOOGLE_OAUTH_CLIENT_SECRET:latest" \
--set-env-vars="MCP_ENABLE_OAUTH21=true,USER_GOOGLE_EMAIL=tschreiter@gmail.com" \
--timeout=300Pushes to main trigger automatic redeployment via Cloud Build.
Pulling Upstream Updates
git fetch upstream
git log HEAD..upstream/main --oneline # preview changes
git merge upstream/main
git pushCloud Build will automatically deploy the updated version.
Rotating OAuth Credentials
echo -n "NEW_CLIENT_ID" | gcloud secrets versions add GOOGLE_OAUTH_CLIENT_ID \
--data-file=- --project=tom-personal-tools
echo -n "NEW_CLIENT_SECRET" | gcloud secrets versions add GOOGLE_OAUTH_CLIENT_SECRET \
--data-file=- --project=tom-personal-toolsThen redeploy to pick up the new versions.
Upstream
This deployment tracks taylorwilsdon/google_workspace_mcp.
Local changes are limited to CLAUDE.md, cloudbuild.yaml, and this README.md.
License: MIT (upstream)
Available Tools
114 toolsbatch_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 | ||
| remove_label_ids | 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 explaining behavior. It clearly states the mutating action and the confirmation return, but it does not disclose prerequisites like authentication, partial-failure behavior in batch operations, or whether both add and remove can be supplied together.
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 tightly structured: a clear one-sentence purpose, followed by a compact Args section and a Returns line. Every sentence adds 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?
The definition covers the core operation, parameters, and return value, but it omits context that would help an agent use it safely: no mention of authentication needs, batch size limits, partial failures, or how to choose between this and modify_gmail_message_labels. It is adequate but not complete 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%, so the description must compensate. It provides a meaningful explanation for all four parameters, including which are required and what each list represents. It stops short of clarifying whether at least one of add_label_ids or remove_label_ids should be provided, but it is largely 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 opens with a specific verb and resource: 'Adds or removes labels from multiple Gmail messages in a single batch request.' It clearly identifies the batch nature and distinguishes itself from the singular 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 batch and 'multiple messages' wording implies when to use this tool, but it never explicitly says to prefer it when modifying many messages or points to modify_gmail_message_labels for single-message changes. Usage context is inferable, not explicitly stated.
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 dicts. Each operation MUST have a 'type' field. All operations accept an optional 'tab_id' to target a specific tab.
Supported operation types and their parameters:
insert_text - required: index (int), text (str) delete_text - required: start_index (int), end_index (int) replace_text - required: start_index (int), end_index (int), text (str) format_text - required: start_index (int), end_index (int) optional: bold, italic, underline, font_size, font_family, text_color, background_color, link_url update_paragraph_style - required: start_index (int), end_index (int) optional: heading_level (0-6, 0=normal), alignment (START/CENTER/END/JUSTIFIED), line_spacing, indent_first_line, indent_start, indent_end, space_above, space_below insert_table - required: index (int), rows (int), columns (int) insert_page_break- required: index (int) find_replace - required: find_text (str), replace_text (str) optional: match_case (bool, default false) create_bullet_list - required: start_index (int), end_index (int) optional: list_type ('UNORDERED'|'ORDERED'|'NONE', default UNORDERED), nesting_level (0-8), paragraph_start_indices (list[int]) Use list_type='NONE' to remove existing bullet/list formatting insert_doc_tab - required: title (str), index (int) optional: parent_tab_id (str) delete_doc_tab - required: tab_id (str) update_doc_tab - required: tab_id (str), title (str)
Example operations: [ {"type": "insert_text", "index": 1, "text": "Hello World"}, {"type": "format_text", "start_index": 1, "end_index": 12, "bold": true}, {"type": "update_paragraph_style", "start_index": 1, "end_index": 12, "heading_level": 1, "alignment": "CENTER"}, {"type": "find_replace", "find_text": "foo", "replace_text": "bar"}, {"type": "insert_table", "index": 20, "rows": 2, "columns": 3}, {"type": "insert_doc_tab", "title": "Appendix", "index": 1} ]
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 burden, and it delivers substantial behavioral detail: atomicity, a full catalog of operation types with required/optional fields, defaults, and a confirmation-message return. It also explains semantic details such as list_type='NONE' removing list formatting. It omits auth requirements and failure behavior, which keeps it from a 5.
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 is a compact reference for 11 operation types; the structure with Args, supported operations, example, and Returns makes it scannable. There is no filler, and the one-sentence summary 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 high-complexity tool with no annotations and a bare schema, the description is nearly complete: every operation type, parameter, default, and return string is covered, plus an example. It does not define the units of index/start_index/end_index or confirm operation ordering, which are meaningful gaps 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?
The input schema has 0% description coverage and only bare type declarations, so the description must document everything. It specifies user_google_email, document_id, and a detailed operations contract with per-type required/optional params, defaults, and a worked example. This fully compensates for the opaque 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/resource pair: 'Executes multiple document operations in a single atomic batch update.' It then enumerates each supported operation type, making it easy to distinguish from single-operation sibling tools like insert_doc_elements or update_paragraph_style.
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 summary clearly signals the tool's niche: batching multiple document updates into one atomic call. It does not explicitly name alternative sibling tools or state when not to use the batch form, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_formA
Apply batch updates to a Google Form.
Supports adding, updating, and deleting form items, as well as updating form metadata and settings. This is the primary method for modifying form content after creation.
Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form to update. requests (List[Dict[str, Any]]): List of update requests to apply. Supported request types: - createItem: Add a new question or content item - updateItem: Modify an existing item - deleteItem: Remove an item - moveItem: Reorder an item - updateFormInfo: Update form title/description - updateSettings: Modify form settings (e.g., quiz mode)
Returns: str: Details about the batch update operation results.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| requests | 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 must carry the behavioral transparency burden. It does a reasonable job by listing supported request types and explicitly mentioning deleteItem, which signals destructive potential, and by stating that it returns a string with operation details. However, it does not disclose side effects such as whether deletions are reversible, whether requests apply atomically, or what authentication/permissions are required.
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 efficiently written: a concise summary, a clear usage positioning sentence, a labeled Args section, and a Returns line. Every section earns its place, and the most important information about what the tool does 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 tool with 3 required parameters, a complex batch request payload, and no annotations, the description is fairly complete: it covers purpose, supported operations, parameter roles, and output type. The output schema exists, so the description need not detail return structure further. The main gap is that it does not specify the exact shape of individual update request objects or note any usage restrictions, but the provided request-type list gives an agent enough context to proceed.
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 no descriptions and has 0% schema coverage, but the description compensates with a clear Args section that explains each parameter's type and role. It also documents the primary 'requests' parameter by enumerating supported request types like createItem, updateItem, deleteItem, and updateFormInfo, which the schema itself does not convey. It falls short of detailing the full structure of each request type, but it adds substantial meaning 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-resource pair ('Apply batch updates to a Google Form') and enumerates exactly what is supported: adding, updating, deleting items, and updating metadata/settings. It also distinguishes itself by calling out that it is 'the primary method for modifying form content after creation,' which separates it from create_form, get_form, and set_publish_settings siblings.
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 explicitly positions the tool as the primary method for modifying a form after creation, giving clear contextual guidance on when it applies. It does not name alternatives or state when not to use it, but the 'after creation' framing is enough to route an agent toward this tool for edits rather than other form-related siblings.
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?
No annotations are provided, so the description carries the full burden. It only says the tool 'applies' updates and returns result details, without disclosing whether changes are irreversible, whether authorization is required, or how failures are reported. This is a significant transparency gap for a mutating 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 compact and well-structured with a one-line summary followed by Args and Returns sections. It is easy to scan, though some content simply repeats the schema parameter names and types.
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 mutating tool with an opaque 'requests' array, the description omits essential operational context such as the format of valid requests and side effects. The output schema covers the return value, but the input side is under-specified and no annotations supplement the missing detail.
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 needed to compensate. It only adds shallow glosses like 'The user's Google email address' and 'The ID of the presentation to update'. The critical 'requests' parameter is left completely unexplained, with no detail on accepted request structures or examples.
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 ('Apply batch updates') and a specific resource ('a Google Slides presentation'), so the agent knows exactly what the tool does. It also naturally distinguishes this tool from sibling tools like batch_update_doc and batch_update_form by naming Slides.
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_presentation, get_presentation, or batch_update_doc. It also does not mention when not to use it or what limitations exist.
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 clearly conveys that the operation is a search plus a read-only check and describes the return value. However, it does not disclose potential edge cases (e.g., file not found, multiple files with the same name) or whether prior authentication is required, which are relevant given the start_google_auth sibling exists.
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 primary purpose, followed by a clear Args/Returns structure. Every line earns its place 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?
For a two-parameter tool, the description covers the core operation, parameter meanings, and return value. However, it lacks guidance on scope (which Drive account or folder), duplicate file names, and authentication prerequisites, and no output schema details are provided beyond a generic string return.
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 bare schema. It provides meaningful semantics for both parameters: user_google_email is identified as the user's Google email and required, and file_name is the name of the file to check. This adds value beyond the bare property names, though it could go further with format or source 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 states a specific action: 'Searches for a file by name and checks if it has public link sharing enabled.' This clearly identifies the resource (Drive file), the verb (search/check), and the specific focus (public link sharing). It is distinguishable from sibling tools like get_drive_file_permissions or get_drive_shareable_link because it combines lookup by name with a public-access check.
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 you need to verify whether a named file has public link sharing—but it does not explicitly mention alternatives or exclusion conditions. With many Drive-related siblings available, there is no guidance on when to prefer this over get_drive_file_permissions or manage_drive_access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_drive_fileA
Creates a copy of an existing Google Drive file.
This tool copies the template document to a new location with an optional new name. The copy maintains all formatting and content from the original file.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file to copy. Required. new_name (Optional[str]): New name for the copied file. If not provided, uses "Copy of [original name]". parent_folder_id (str): The ID of the folder where the copy should be created. Defaults to 'root' (My Drive).
Returns: str: Confirmation message with details of the copied file and its link.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| new_name | No | ||
| parent_folder_id | No | root | |
| 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 behavioral disclosure burden. It explains that the copy maintains formatting and content, defaults the new name to 'Copy of [original name]', and defaults the destination to root. It also describes the return value. It does not mention permission requirements for the source file, but the core behavior is transparent.
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 a summary, a brief explanatory sentence, an Args list, and a Returns section. The first two sentences are slightly redundant ('Creates a copy' vs 'copies the template document'), but overall the structure is clear and 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 description provides all information an agent needs to invoke the tool correctly: the action, parameter semantics with defaults, and return format. The topic is a simple copy operation, and no critical details are 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%, so the description must compensate, and it does. The Args section explains all four parameters, including the optional nature of new_name with its fallback behavior, and the default value of parent_folder_id. This adds significant 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 opens with a specific verb and resource: 'Creates a copy of an existing Google Drive file.' This clearly distinguishes it from siblings like create_drive_file (which creates from scratch) and update_drive_file (which modifies existing 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 implies the tool is for duplicating a file when you want to preserve formatting and content while placing it in a new location. However, it does not explicitly state when to prefer this over alternatives such as create_drive_file, nor does it mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_docB
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?
The description discloses the main behavior: creating a Google Doc and optionally inserting content, plus the return format. However, with no annotations, it does not mention authentication/authored-by implications, side effects, or error conditions, leaving the agent with partial behavioral 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 front-loaded, with no filler or redundancy. It conveys the primary action and return value in two short sentences, though it sacrifices some useful guidance for brevity.
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 relatively simple create operation, the description covers the core action and return value. However, it lacks essential context about required authentication context (user_google_email), parameter semantics, and how this tool differs from related file/doc creation tools, making it only moderately 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 compensate for parameter meaning. It adds that 'content' is optional initial content, but it does not explain the semantics of 'title' or especially 'user_google_email', which is a required and non-obvious 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 clearly states a specific verb and resource: 'Creates a new Google Doc' with optional initial content. It is unambiguous about the tool's core function, though it does not explicitly distinguish itself from similar siblings like create_drive_file or import_to_google_doc.
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 alternatives such as create_drive_file or import_to_google_doc. The create semantics imply the use case, but there is no contextual direction or exclusion of sibling tools.
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 behavioral burden. It discloses the shared-drive constraint, supported fileUrl protocols, and the confirmation-with-link return behavior. It stops short of specifying what happens if both content and fileUrl are provided, but the overall side effect is clearly described.
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 a clear summary sentence, followed by a dense but scannable Args list and a closing Returns line. Every sentence adds value, and there is no filler or repetition beyond what is necessary given the schema lacks 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?
All parameters and the return value are covered, and the shared-drive edge case is called out. The only minor gap is that 'either content or fileUrl' implies mutual exclusivity but does not explicitly state what happens if both are supplied. This is a small ambiguity in an otherwise complete definition.
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 the sole source of parameter meaning. It explains all six parameters, marks required vs optional, provides defaults, and adds key constraints such as folder_id needing to be inside a shared drive and fileUrl protocol support.
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 action and resource: 'Creates a new file in Google Drive' and explicitly notes shared-drive support. This distinguishes it from sibling tools like create_drive_folder and update_drive_file without needing to open their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: use this to create a new file, optionally inside a shared drive, with either content or a fileUrl. It does not explicitly name alternatives or when-not-to-use conditions, but the verb and resource scope make the intended usage fairly unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_drive_folderA
Creates a new folder in Google Drive, supporting creation within shared drives.
Args: user_google_email (str): The user's Google email address. Required. folder_name (str): The name for the new folder. parent_folder_id (str): The ID of the parent folder. Defaults to 'root'. For shared drives, use a folder ID within that shared drive.
Returns: str: Confirmation message with folder name, ID, and link.
| Name | Required | Description | Default |
|---|---|---|---|
| folder_name | Yes | ||
| parent_folder_id | No | root | |
| 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 disclosure burden. It discloses the core mutation (creates a folder), the shared-drive capability, and the return format (confirmation message with folder name, ID, and link). It does not disclose auth/permission requirements, behavior on duplicate folder names, or whether the parent folder must already exist, which are meaningful gaps for a write operation with zero 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 front-loaded with the one-sentence purpose, followed by clean Args and Returns sections. Every sentence earns its place, and the length is appropriate given that the schema provides no property descriptions. 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?
For a low-complexity tool (3 simple parameters, no nested objects) with no annotations and no schema descriptions, the description covers purpose, every parameter with defaults and caveats, and the return value. The remaining gaps—explicit alternative routing and auth/permission context—are moderate, so it stops just short of 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%, so the description must carry the full burden, and it does. All three parameters are documented with meaning: user_google_email is marked Required, folder_name is described, and parent_folder_id is given a default ('root') plus a shared-drive usage caveat ('use a folder ID within that shared drive'). This is exactly the compensating documentation a bare schema needs.
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 first sentence states a specific verb and resource: 'Creates a new folder in Google Drive, supporting creation within shared drives.' This clearly identifies the operation and its special scope. It does not explicitly differentiate from the sibling create_drive_file, though the word 'folder' inherently sets it apart from file-creation siblings.
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 context is implied rather than stated: the description implies it is the tool for creating folders, and the parent_folder_id note gives shared-drive guidance. However, there is no explicit when-to-use or when-not-to-use guidance, and no named alternative such as create_drive_file for file creation. An agent must infer tool selection from the name and resource type.
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?
No annotations are provided, so the description carries the behavioral burden. It discloses the core behavior—creating a new form—and usefully states the return value includes a confirmation message, form ID, and edit URL. However, it does not explain auth requirements, side effects, duplicate behavior, or scope of access, which would be valuable for a create 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 concise and well-structured with an opening purpose sentence followed by Args and Returns sections. It avoids excessive fluff, though the phrase 'in the provided form message in the request' is redundant and slightly confusing. Overall, it 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?
For a simple form-creation tool with four parameters and a described return value, the description is largely complete. It covers all parameters and the output contract. The main gap is the lack of usage context, such as whether prior authentication is needed or what the 'provided form message' refers to, but the low complexity keeps this from being a major issue.
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. It documents all four parameters with meaningful semantics: user_google_email is the user's Google email, document_title is shown in the browser tab, and description is the form's description. It clearly marks required and optional parameters, though it omits example values or format 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 states a specific verb and resource: 'Create a new form.' It clearly indicates this tool creates a form as opposed to updating, reading, or publishing one. However, it doesn't explicitly call out how it differs from sibling form-related tools like batch_update_form, and the phrase 'in the provided form message in the request' is somewhat awkward.
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 about when to use this tool versus alternatives. It never mentions prerequisites like starting Google auth, or when to prefer batch_update_form or set_publish_settings instead. The usage context is only implied by the verb 'Create'.
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 bears the full burden. It clearly indicates a new resource is created and that details including ID and URL are returned, but it does not mention prerequisites like authentication or the storage location of the new 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 concise and well-structured with a one-line summary, Args, and Returns sections. 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 simple creation tool with two parameters and an output schema, this covers the arguments and return value adequately. It could note the need for prior authentication or where the presentation is saved, but nothing critical 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%, and the description fully compensates by explaining each parameter: user_google_email is marked as required, and title is given a default. This adds meaning 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 a specific verb and resource: 'Create a new Google Slides presentation.' This clearly distinguishes it from sibling creation tools like create_doc, create_spreadsheet, and create_drive_file.
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 resource type, but there is no explicit guidance on when to use this over alternatives such as create_doc or create_spreadsheet. No exclusions or conditional routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reactionB
Adds an emoji reaction to a Google Chat message.
Args: message_id: The message resource name (e.g. spaces/X/messages/Y). emoji_unicode: The emoji character to react with (e.g. 👍).
Returns: str: Confirmation message.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| emoji_unicode | 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 states the core action and that a confirmation string is returned, but it does not mention permissions, whether adding the same reaction twice fails, whether the reaction is created on behalf of the user identified by user_google_email, or any other 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, well-structured with Args and Returns sections, and provides concrete examples without unnecessary prose. It loses a point because the Args section omits one of the three required parameters, making the structure slightly incomplete.
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 mutation-style tool with no annotations, zero schema-level parameter descriptions, and a required but undocumented user_google_email, the description is not complete enough. The output schema exists, so the return value is less of a concern, but usage context, parameter coverage, and behavioral details are all 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%, so the description must compensate. It provides useful examples for message_id and emoji_unicode, but the required user_google_email parameter is not described anywhere, leaving a significant semantic gap for an agent.
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: 'Adds an emoji reaction to a Google Chat message.' This clearly distinguishes it from the many sibling tools, none of which cover Chat reactions, and gives an agent an immediate understanding of the 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?
The intended usage is implied by the action: use this when a reaction needs to be added to a Chat message. However, there is no explicit guidance about when not to use it, no reference to obtaining a message_id via related tools like get_messages or search_messages, and no mention of prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_script_projectA
Creates a new Apps Script project.
Args: service: Injected Google API service client user_google_email: User's email address title: Project title parent_id: Optional Drive folder ID or bound container ID
Returns: str: Formatted string with new project details
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| parent_id | 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 disclosure burden. It does describe the action, list arguments, mention that parent_id may be a Drive folder or bound container ID, and specify the return type. However, it does not explain authorization requirements, side effects on Drive, failure modes, or what happens when parent_id is 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 compact and well organized into a purpose sentence, an Args block, and a Returns line. The service line is arguably unnecessary since service is not an input schema property, but overall the description is appropriately sized and 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 and input schema cover the essential parameters and return value, but the optional parent_id behavior is under-specified, particularly what happens when it is omitted and how a bound container ID differs from a Drive folder. For a create operation with no annotations, the lack of usage context and behavioral caveats leaves meaningful 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?
Schema description coverage is 0%, and the Args block compensates by defining all three actual parameters: user_google_email, title, and parent_id, including parent_id's optionality and dual meaning. The extra 'service' argument is described as injected and is not present in the schema, which introduces mild ambiguity about what an agent should pass.
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 opening sentence uses a specific verb and resource: 'Creates a new Apps Script project.' This clearly distinguishes the tool from siblings such as list_script_projects, get_script_project, update_script_content, and delete_script_project. 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 states what the tool does but provides no guidance on when to choose it over alternatives, and it offers no exclusions or prerequisites. Like a bare 'Update ...' statement, it leaves usage selection mostly to inference from the tool name and sibling list.
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 the full burden. It discloses the basic creation action and return type but does not mention authentication requirements, duplicate sheet name behavior, or whether existing spreadsheet content could be affected. These gaps leave the agent to infer 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 front-loaded with the core purpose, followed by a clean Args/Returns structure. There is no fluff or redundant material.
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 three-string create operation, the description covers the inputs and the confirmation return value. It lacks details on conflict handling or authorization, but given the low complexity and existing output schema, the description 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%, so the description's one-line explanations for each parameter add essential meaning. It clarifies that user_google_email is the user's email, spreadsheet_id identifies the spreadsheet, and sheet_name is the new sheet's name, though it offers no format or source guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Creates a new sheet within an existing spreadsheet.' This clearly distinguishes it from create_spreadsheet and other spreadsheet-related siblings. 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 phrase 'within an existing spreadsheet' provides clear context for when the tool applies, implicitly separating it from creating a new spreadsheet. However, it does not explicitly name alternatives or state when not 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_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 provided, the description carries the burden of behavioral disclosure. It states the side effect (creating a new spreadsheet), the default behavior when sheet_names is omitted, and the return contents (ID, URL, locale). However, it does not mention authentication requirements, potential errors, or behavior in edge cases like an empty sheet_names list.
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 Args and Returns sections. It is efficient and contains no filler. The slight redundancy of repeating 'Required' when the schema already encodes requiredness is minor and does not harm clarity.
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 three-parameter creation tool, the description covers the essential invocation details: required arguments, optional argument behavior, and return information. The main gaps are the lack of authentication prerequisites and edge-case behavior, but the presence of an output schema mitigates the need for detailed return explanations.
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's Args section fully documents all three parameters, including types, requiredness, and the default behavior for sheet_names. This completely compensates for the missing schema descriptions and gives an agent enough information to construct a valid call.
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: "Creates a new Google Spreadsheet." It clearly identifies the tool's action and distinguishes it from the sibling create_sheet by specifying the entire spreadsheet rather than a single sheet. The included Args section further clarifies what the tool operates on.
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 guidance on when to use this tool versus alternatives such as create_sheet or create_drive_file. It also does not mention prerequisites like prior authentication or authorization. Usage is only implied by the purpose statement, not explicitly explained.
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) tab_id: Optional tab ID to create the table in a specific tab
Returns: str: Confirmation with table details and link
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| tab_id | No | ||
| 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 discloses critical behavior: one reliable operation, a required prerequisite call, index must come from total_length, and verification via debug_table_structure. It does not discuss permissions or failure behavior, but the main behavioral hazards are covered.
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 critical workflow is front-loaded and clearly structured, and the example table_data is valuable. There is some redundancy between the MANDATORY WORKFLOW and CRITICAL INDEX REQUIREMENTS sections, so it is 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?
For a six-parameter tool with no annotations and no parameter documentation in the schema, the description is complete enough to invoke correctly: it covers prerequisites, exact data formatting, index sourcing, optional parameters, and post-creation verification. The Returns line and output schema cover the response.
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: table_data is defined with exact 2D-list syntax and row/column rules, index is tied to inspect_doc_structure's total_length, and bold_headers/tab_id are explained. Every parameter receives meaningful semantic 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?
States a specific composite operation: creates a table and populates it with data. The tool's niche relative to generic siblings like insert_doc_elements or batch_update_doc is clear from the first sentence.
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?
Gives an explicit mandatory workflow: call inspect_doc_structure first, use its total_length as the index, format data as a 2D list, then call the tool. It does not explicitly name alternative tools or state when not to use this tool, so it misses the top score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_versionA
Creates a new immutable version of a script project.
Versions capture a snapshot of the current script code. Once created, versions cannot be modified.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID description: Optional description for this version
Returns: str: Formatted string with new version details
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | ||
| description | 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 of behavioral disclosure. It usefully states that versions are immutable and cannot be modified once created, which is important for an agent to understand before invoking the tool. It could mention permission requirements or side effects, but the core behavioral trait is clearly 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, front-loaded with the key purpose, and organized with clear Args/Returns sections. The inclusion of 'service', which is not part of the input schema, adds minor noise but does not seriously harm 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?
For a relatively simple creation tool, the description covers purpose, immutability, all user-facing parameters, and the return type. It does not mention usage alternatives or prerequisites, but nothing critical is missing for an agent to invoke 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?
The input schema has 0% description coverage, so the Args section adds meaningful context for user_google_email, script_id, and description. The description of 'service' as an injected argument is potentially confusing since it does not appear in the input schema, but the remaining parameter descriptions help compensate for the schema 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 ('Creates') and the resource ('a new immutable version of a script project'), so an agent can understand the core purpose. It does not explicitly call out sibling tools like list_versions or get_version, but the creation intent is unambiguous enough to differentiate it from them.
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 the tool: when the agent needs to capture a snapshot of current script code. However, it does not provide explicit guidance about alternatives, prerequisites, or cases where this tool should not be used, leaving usage largely to inference.
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, the description carries the full burden, and it largely succeeds: it frames the tool as showing/inspecting ('WHAT THIS SHOWS YOU', 'shows', 'returns') rather than mutating, and it explains the exact return payload semantics. However, it never explicitly asserts that the tool makes no changes to the document, and it doesn't describe edge-case behavior such as what happens when table_index is out of range. That keeps it a 4 rather than a 5.
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 header-labeled sections, bullets, and the most urgent message front-loaded. All-caps emphasis makes the debug purpose unmissable. It is, however, verbose and contains minor redundancy — the 'ESSENTIAL DEBUGING TOOL' opener partially overlaps with the trigger list, and the workflow section partly restates the debugging scenarios. Dense with value, but not maximally 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 single-table inspection tool, the description is exhaustive: trigger conditions, output field semantics, parameter glossary, return type, and workflow placement are all covered. Since an output schema exists, the description needn't spell out every return field, and the ones it does explain (dimensions, position, current_content, insertion_index) are precisely the ones an agent needs to interpret results. Nothing needed for correct invocation 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 coverage is 0%, so the description must compensate — and it does fully. The Args section explains user_google_email as the user's email address, document_id as the target document, and table_index with concrete indexing semantics ('0 = first table, 1 = second table, etc.'). The workflow section further clarifies that these parameters select a table to debug, adding meaning far beyond the bare type declarations in 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 by identifying the tool as an essential debugging tool for tables that don't work as expected, then lists concrete outputs: exact dimensions, cell coordinates, current contents, insertion indices, and boundaries. This is a specific verb (debug/inspect) applied to a specific resource (Google Docs table structure). The table-only scope inherently distinguishes it from siblings like inspect_doc_structure or get_doc_content, even though no sibling is 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?
The 'USE THIS IMMEDIATELY WHEN' section enumerates five explicit trigger conditions (wrong-cell population, 'table not found' errors, concatenated data, needing structure, planning to populate a table), and the 'WORKFLOW INTEGRATION' section maps the tool into four workflow stages (verify, plan, diagnose, debug). This is unusually explicit when-to-use guidance. It does not name alternatives, but the exclusive trigger list implicitly defines when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_doc_tabA
Deletes a tab from a Google Doc by its tab ID.
Args: user_google_email: User's Google email address document_id: ID of the document to update tab_id: ID of the tab to delete (use inspect_doc_structure to find tab IDs)
Returns: str: Confirmation message with document link
| Name | Required | Description | Default |
|---|---|---|---|
| tab_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?
With no annotations, the description carries the burden of disclosing the destructive nature, and it does explicitly state 'Deletes'. It also specifies the return value. However, it does not warn that the deletion is irreversible or mention any permissions or side effects on the document's content, which would be valuable 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 compact, front-loaded with the core action, and organized into clear Args and Returns sections. Every line provides necessary information without fluff or 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?
For a simple three-string-parameter delete operation, the description gives all the information needed to invoke it correctly, including how to discover tab IDs and what to expect in the response. It could be more complete with an explicit irreversible warning, but the provided context is sufficient for correct usage.
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 explain all three parameters, and it does: user_google_email, document_id, and tab_id all get meaningful descriptions. The guidance to use inspect_doc_structure for tab IDs is especially helpful. The wording 'document to update' is slightly imprecise for a deletion tool, which is why this is not a 5.
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 ('Deletes'), a precise resource ('a tab from a Google Doc'), and the required identifier (tab ID). It clearly distinguishes this from sibling tools like insert_doc_tab and update_doc_tab, and even references inspect_doc_structure for finding tab 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 makes clear this tool is for deleting tabs, and tells the agent to use inspect_doc_structure to find the correct tab_id. It does not explicitly state when not to use this tool versus insert/update alternatives, but the deletion purpose is self-evident and the inspect guidance provides a concrete prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_script_projectA
Deletes an Apps Script project.
This permanently deletes the script project. The action cannot be undone.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID to delete
Returns: str: Confirmation message
| Name | Required | Description | Default |
|---|---|---|---|
| script_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 clearly states that deletion is permanent and irreversible, which is critical for a destructive operation. It also documents the confirmation return value. It does not discuss potential failure conditions or permissions, but the core behavioral traits are well covered.
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: purpose, irreversibility warning, args, and return value. It avoids unnecessary fluff. The only slight redundancy is the Args list overlapping with the schema, but it adds semantic value by explaining each parameter.
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 destructive operation, the description provides the essential context: what is deleted, that it cannot be undone, and what the return value is. It does not explain every possible edge case, such as dependencies or active deployments, but it covers enough for an agent to invoke the tool safely and 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%, so the description must compensate. It explains each parameter's role: user_google_email as the user's email and script_id as the project to delete. This adds meaning beyond the bare property names in the schema. The mention of an injected service client is also useful context, even though it is not an input schema 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 a specific verb and resource: "Deletes an Apps Script project." It further clarifies the permanent, irreversible nature of the operation, leaving no ambiguity about what the tool does. This clearly distinguishes it from siblings like list_script_projects, get_script_project, or create_script_project.
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 clear context for when this tool is appropriate: to permanently remove an Apps Script project. It also emphasizes that the action cannot be undone, which implicitly warns the agent to use it carefully. It does not explicitly name alternatives, but no sibling tool provides a delete operation, so this omission is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_chat_attachmentA
Downloads an attachment from a Google Chat message and saves it to local disk.
In stdio mode, returns the local file path for direct access. In HTTP mode, returns a temporary download URL (valid for 1 hour).
Args: message_id: The message resource name (e.g. spaces/X/messages/Y). attachment_index: Zero-based index of the attachment to download (default 0).
Returns: str: Attachment metadata with either a local file path or download URL.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | ||
| attachment_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?
No annotations are provided, so the description carries the behavioral disclosure burden. It does well by explaining mode-dependent behavior: stdio returns a local file path, HTTP mode returns a temporary URL valid for 1 hour. It also documents the default attachment_index. It does not mention error cases or authentication requirements, but it provides solid transparency about output 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 clear opening sentence, mode-specific behavior, an Args section, and a Returns section. Every sentence provides useful information, 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?
The tool is relatively simple, but the missing required user_google_email parameter is a notable completeness gap. The description gives return behavior and mode differences, but an agent cannot fully understand all required inputs without that parameter context. Still, the core usage and output are sufficiently described for a basic download 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 compensate. It explains message_id with a format example and attachment_index with zero-based/default semantics, but it completely omits the required user_google_email parameter. Since a required parameter is left undocumented, the description only partially compensates 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 states a specific verb and resource: 'Downloads an attachment from a Google Chat message and saves it to local disk.' This clearly distinguishes it from siblings like get_gmail_attachment_content, which handles Gmail attachments, and get_drive_file_download_url, which handles Drive files. The resource and action are 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 clear that the tool is for Google Chat attachments, which implies when it should be used, but it does not explicitly mention alternatives or exclusion conditions. With siblings handling Gmail attachments and Drive downloads, explicit routing guidance would strengthen this dimension. The usage context is implied rather than stated.
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 with optional attachments. Supports Gmail's "Send As" feature to draft from configured alias addresses.
Args: user_google_email (str): The user's Google email address. Required for authentication. 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. from_name (Optional[str]): Optional sender display name. If provided, the From header will be formatted as 'Name '. from_email (Optional[str]): Optional 'Send As' alias email address. The alias must be configured in Gmail settings (Settings > Accounts > Send mail as). If not provided, the draft will be from the authenticated user's primary 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 RFC Message-ID of the message being replied to (e.g., 'message123@gmail.com'). references (Optional[str]): Optional chain of RFC Message-IDs for proper threading (e.g., 'msg1@gmail.com msg2@gmail.com'). attachments (List[Dict[str, str]]): Optional list of attachments. Each dict can contain: Option 1 - File path (auto-encodes): - 'path' (required): File path to attach - 'filename' (optional): Override filename - 'mime_type' (optional): Override MIME type (auto-detected if not provided) Option 2 - Base64 content: - 'content' (required): Standard base64-encoded file content (not urlsafe) - 'filename' (required): Name of the file - 'mime_type' (optional): MIME type (defaults to 'application/octet-stream') include_signature (bool): Whether to append Gmail signature HTML from send-as settings. If unavailable (e.g., missing gmail.settings.basic scope), the draft is still created without signature. quote_original (bool): Whether to include the original message as a quoted reply. Requires thread_id to be provided. When enabled, fetches the original message and appends it below the signature. Defaults to False.
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 draft from a configured alias (Send As)
draft_gmail_message(
subject="Business Inquiry",
body="Hello from my business address...",
to="user@example.com",
from_email="business@mydomain.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. | |
| from_name | No | Optional sender display name (e.g., 'Peter Hartree'). If provided, the From header will be formatted as 'Name <email>'. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| from_email | No | Optional 'Send As' alias email address. Must be configured in Gmail settings (Settings > Accounts > Send mail as). If not provided, uses the authenticated user's email. | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| attachments | No | Optional list of attachments. Each can have: 'path' (file path, auto-encodes), OR 'content' (standard base64, not urlsafe) + 'filename'. Optional 'mime_type' (auto-detected from path if not provided). | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| in_reply_to | No | Optional RFC Message-ID of the message being replied to (e.g., '<message123@gmail.com>'). | |
| quote_original | No | Whether to include the original message as a quoted reply. Requires thread_id. Defaults to false. | |
| include_signature | No | Whether to append the Gmail signature from Settings > Signature when available. Defaults to true. | |
| 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, and it does well: it discloses that include_signature degrades gracefully when scopes are missing, that quote_original fetches the original message and appends it below the signature, that attachments auto-encode vs. require base64, and that the result is a confirmation string with the draft ID. It only omits minor traits like rate limits and explicit 'this does not send the email' language.
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 structure is excellent—core purpose front-loaded, then Args/Returns/Examples—but the length is excessive. The Args section largely restates schema descriptions, and the six examples repeat similar invocation patterns (e.g., two nearly identical reply examples differing only in body_format). A tighter version with 2-3 examples and less schema duplication would earn higher marks.
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 15-parameter tool with no annotations and an output schema, the description is nearly complete: it covers authentication, reply threading, alias sending, attachment encoding, signature fallback, and return format. Gaps include error conditions (invalid thread_id, unconfigured alias) and explicit contrast with the sibling send tool, but overall an agent can call this correctly from the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high at 93%, setting a baseline of 3, but the description adds genuinely useful semantics beyond the schema: the two attachment dict formats with base64-not-urlsafe and MIME auto-detection, the dependency that quote_original requires thread_id, the threading relationship among thread_id/in_reply_to/references, and the 'Send As' alias configuration requirement. This elevates it above the 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 first sentence states the exact verb and resource: 'Creates a draft email in the user's Gmail account.' It immediately clarifies this is a draft, not a send, which distinguishes it from the sibling send_gmail_message. The second sentence adds scope (new drafts, reply drafts, attachments), making the tool's boundary crisp.
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 context is implied through six varied examples (new draft, alias, CC/BCC, HTML, replies) but never stated explicitly. There is no sentence telling an agent 'use this when you want to draft rather than send, and use send_gmail_message when the message should be sent immediately.' The reply-draft mechanics are documented, but the when/when-not selection 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.
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?
The description discloses the core side effect of creating and saving a PDF to Drive, along with optional naming/folder defaults and the return type. However, it does not mention required authentication, permission requirements, or overwrite behavior, and no annotations exist to cover these 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 compact and well-structured, with the core operation front-loaded and a clean Args/Returns layout. Every line adds needed information; there is no fluff or 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?
For a four-parameter tool, the description documents every parameter and the return value, allowing an agent to construct a basic call. It is incomplete, however, because prerequisites such as prior authentication and behavior on filename conflicts are absent, and there are no annotations to supply this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the Args section fully compensates by documenting all four parameters. It explains each parameter's purpose and specifies the default behavior for the optional pdf_filename and folder_id 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 first sentence states a precise action—exports a Google Doc to PDF—and the storage destination in Google Drive. This is unambiguous and distinct among the large sibling set; no other tool claims the same convert-and-save 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 about when to use this tool versus related Drive/Docs tools, and no alternatives or exclusions are mentioned. The description implies general PDF-export usage but leaves tool selection entirely to inference.
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 tab_id: Optional ID of the tab to target
Returns: str: Confirmation message with replacement count
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| 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?
Since no annotations are provided, the description carries the full burden. It discloses the core behavior and a useful return signal ('Confirmation message with replacement count'), and 'throughout' implies global replacement. However, it does not mention auth requirements, irreversibility, formatting side effects, or whether find_text is literal or regex, which matters for a mutating 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 front-loaded with a one-line purpose statement and then organized into Args and Returns sections. Every line earns its place, and there is no filler or redundant restatement 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?
For a single-purpose find-and-replace tool, the description covers the operation, all parameters, and the return type, and an output schema is present. It is sufficient for basic invocation, but the missing usage guidance and lack of side-effect disclosure for a mutating operation keep 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%, and the Args section compensates well by naming all six parameters and giving each a purpose. It clarifies user_google_email, tab_id, and match_case beyond what bare schema types provide, though smaller details such as tab_id format and match_case default behavior are left implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair: 'Finds and replaces text throughout a Google Doc,' and the Args list makes the operation concrete. It is clear but does not explicitly contrast with sibling mutators like modify_doc_text or batch_update_doc, so it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose this tool over related doc-mutation siblings. There are no prerequisites, exclusions, or stated alternatives, leaving the agent to infer from the name and the word 'throughout' that this is the global find-and-replace option.
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: colors, number formats, text wrapping, alignment, and text styling.
Colors accept hex strings (#RRGGBB). Number formats follow Sheets types (e.g., NUMBER, CURRENCY, DATE, PERCENT). 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]): Custom pattern for the number format. wrap_strategy (Optional[str]): Text wrap strategy - WRAP (wrap text within cell), CLIP (clip text at cell boundary), or OVERFLOW_CELL (allow text to overflow into adjacent empty cells). horizontal_alignment (Optional[str]): Horizontal text alignment - LEFT, CENTER, or RIGHT. vertical_alignment (Optional[str]): Vertical text alignment - TOP, MIDDLE, or BOTTOM. bold (Optional[bool]): Whether to apply bold formatting. italic (Optional[bool]): Whether to apply italic formatting. font_size (Optional[int]): Font size in points.
Returns: str: Confirmation of the applied formatting.
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | ||
| italic | No | ||
| font_size | No | ||
| range_name | Yes | ||
| text_color | No | ||
| wrap_strategy | No | ||
| spreadsheet_id | Yes | ||
| background_color | No | ||
| user_google_email | Yes | ||
| number_format_type | No | ||
| vertical_alignment | No | ||
| horizontal_alignment | 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 burden and it does state the action and return value. However, it does not disclose whether absent optional fields preserve existing formatting or reset it, nor does it mention permission requirements or error behavior. The default-sheet behavior and accepted hex/format types are useful additions, but side-effect semantics are missing.
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 organized with an overview, format-specific notes, a complete Args list, and a Returns line. It is long because there are 13 undocumented parameters, but every sentence provides necessary semantics rather than repeating schema names.
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 13 parameters, no schema descriptions, and no annotations, the description covers all required invocation details, defaults, accepted values, and the return type. It is only slightly incomplete because it does not spell out the effect on unspecified formatting fields or failure conditions.
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 fully compensates with a detailed Args section documenting all 13 parameters. It gives concrete formats (hex strings), enumeration values (WRAP/CLIP/OVERFLOW_CELL, LEFT/CENTER/RIGHT), and examples for number 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 opens with a concrete action and target: 'Applies formatting to a range' followed by the formatting categories (colors, number formats, wrapping, alignment, styling). This clearly differentiates it from nearby value-mutation and conditional-formatting siblings.
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 clear context that this tool is for direct range formatting and notes defaults like the first sheet being used, but it never explicitly says when to choose this over alternatives such as manage_conditional_formatting or modify_sheet_values. Usage is implied rather than stated with exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_trigger_codeA
Generates Apps Script code for creating triggers.
The Apps Script API cannot create triggers directly - they must be created from within Apps Script itself. This tool generates the code you need.
Args: trigger_type: Type of trigger. One of: - "time_minutes" (run every N minutes: 1, 5, 10, 15, 30) - "time_hours" (run every N hours: 1, 2, 4, 6, 8, 12) - "time_daily" (run daily at a specific hour: 0-23) - "time_weekly" (run weekly on a specific day) - "on_open" (simple trigger - runs when document opens) - "on_edit" (simple trigger - runs when user edits) - "on_form_submit" (runs when form is submitted) - "on_change" (runs when content changes)
function_name: The function to run when trigger fires (e.g., "sendDailyReport")
schedule: Schedule details (depends on trigger_type):
- For time_minutes: "1", "5", "10", "15", or "30"
- For time_hours: "1", "2", "4", "6", "8", or "12"
- For time_daily: hour as "0"-"23" (e.g., "9" for 9am)
- For time_weekly: "MONDAY", "TUESDAY", etc.
- For simple triggers (on_open, on_edit): not neededReturns: str: Apps Script code to create the trigger
| Name | Required | Description | Default |
|---|---|---|---|
| schedule | No | ||
| trigger_type | Yes | ||
| function_name | 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 and handles it well. It discloses the key behavioral trait an agent could easily get wrong: the tool does not create a trigger, it returns code. It also documents edge-case behavior, e.g., simple triggers (on_open, on_edit) do not need a schedule. Minor omissions are auth requirements and what the generated code looks like, but the non-executing behavior is explicit.
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 one-sentence purpose is front-loaded, and the Args/Returns structure mirrors the schema for easy scanning. Every section earns its place given the 0% schema coverage. Slight redundancy exists — trigger types are enumerated in the trigger_type list and then repeated in the schedule bullets — so a consolidated table would be tighter, but the length is justified.
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 3-param code-generation tool with an output schema, the description covers the non-obvious behavioral constraint, all valid parameter values, and per-type schedule rules. The return type is stated and also captured by the output schema. Gaps are minor: no example of the generated code and no statement about whether auth is needed, though as pure code generation this is low-risk.
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 document the parameters, and it does. trigger_type enumerates all eight valid values with one-line explanations; schedule gives per-type valid choices with concrete formats ('0'-'23', 'MONDAY', '1'-'30'); function_name includes a real example ('sendDailyReport'). This goes far beyond the bare schema, which only defines types and a default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generates Apps Script code for creating triggers.' It also explains the critical distinction — the Apps Script API cannot create triggers directly, so this tool produces the code instead. This clearly separates it from sibling tools like run_script_function or update_script_content, which execute or modify actual script 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 rationale ('The Apps Script API cannot create triggers directly - they must be created from within Apps Script itself') clearly implies the use case: whenever a trigger must be set up through the API, this tool is the entry point. However, it never names alternatives or says when not to use it, and the sibling list contains closely related tools (create_script_project, update_script_content, run_script_function) that receive no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactB
Get detailed information about a specific contact.
Args: user_google_email (str): The user's Google email address. Required. contact_id (str): The contact ID (e.g., "c1234567890" or full resource name "people/c1234567890").
Returns: str: Detailed contact information.
| Name | Required | Description | Default |
|---|---|---|---|
| contact_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 clearly indicates a read operation ('Get') and states the return type as a string, which gives basic transparency. However, annotations are absent, so the description carries the full burden; it does not mention required authorization via user_google_email, error behavior, or what 'detailed information' includes.
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, structured with Args and Returns, and front-loads the core purpose. The parameter examples add value without excessive verbosity, though 'Required.' in Args duplicates information already present in 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?
For a simple get-by-id tool, the description covers both inputs and the return type, and an output schema exists. Still, it lacks broader context such as when to use it versus related contact tools, potential errors, or whether the contact must belong to the specified Google user.
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 by explaining both parameters: user_google_email is required and identifies the user's account, and contact_id includes format examples such as 'c1234567890' or 'people/c1234567890'. This adds meaningful guidance 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 uses a specific verb and resource: 'Get detailed information about a specific contact.' This clearly distinguishes it from list/search operations, though it does not explicitly name sibling tools. The resource and intent are 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 when you already have a contact_id and need details, but it gives no explicit guidance on when to prefer this over list_contacts, search_contacts, or manage_contact. There are no exclusions, prerequisites, or alternative tool names mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_groupA
Get details of a specific contact group including its members.
Args: user_google_email (str): The user's Google email address. Required. group_id (str): The contact group ID. max_members (int): Maximum number of members to return (default: 100, max: 1000).
Returns: str: Contact group details including members.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | Yes | ||
| max_members | 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 disclosure burden. It communicates a read-only intent ('Get details'), states the return type (str), and documents the max_members cap and default. It does not mention error behavior or authentication prerequisites, but for a simple read operation this is reasonably transparent.
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 structured with a one-sentence purpose followed by an Args/Returns breakdown. Every line adds useful information and there is no filler, making it easy for an agent 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?
For a simple retrieval tool, the description covers purpose, all parameters, return type, and member-count bounds. It could be more complete by mentioning when to use list_contact_groups instead or noting that valid Google auth/email context is assumed, but the presence of an output schema reduces the need to describe return shapes in detail.
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 document the parameters itself, and it does. It explains user_google_email is required, group_id identifies the group, and max_members has explicit default and maximum values. This adds real meaning beyond the bare schema properties.
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: 'Get details of a specific contact group including its members.' This clearly distinguishes it from siblings like list_contact_groups (listing all groups) and manage_contact_group (modification), and the 'specific' wording signals that a group_id is required.
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 through 'specific contact group' and the required group_id parameter, but it never explicitly states when to prefer this tool over alternatives such as list_contact_groups or search_contacts. No exclusions or routing guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_as_markdownA
Reads a Google Doc and returns it as clean Markdown with optional comment context.
Unlike get_doc_content which returns plain text, this tool preserves document formatting as Markdown: headings, bold/italic/strikethrough, links, code spans, ordered/unordered lists with nesting, and tables.
When comments are included (the default), each comment's anchor text — the specific text the comment was attached to — is preserved, giving full context for the discussion.
Args: user_google_email: User's Google email address document_id: ID of the Google Doc (or full URL) include_comments: Whether to include comments (default: True) comment_mode: How to display comments: - "inline": Footnote-style references placed at the anchor text location (default) - "appendix": All comments grouped at the bottom with blockquoted anchor text - "none": No comments included include_resolved: Whether to include resolved comments (default: False)
Returns: str: The document content as Markdown, optionally with comments
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| comment_mode | No | inline | |
| include_comments | No | ||
| include_resolved | 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 defaults for include_comments and include_resolved, explains comment_mode values, describes how anchor text is preserved, and signals a read operation by using 'Reads'. This goes well beyond the bare 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 core purpose and sibling differentiation are front-loaded in the first sentences. The Args and Returns sections are structured and skimmable, and no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only conversion tool with 5 parameters, the description covers purpose, all parameters, defaults, comment behavior, and return type. It is complete enough for an agent to invoke correctly without needing extra 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 no parameter descriptions (0% coverage), so the Args block is essential. It documents all five parameters, explains the meaning of comment_mode values, and clarifies that document_id can be a full URL, adding value beyond the schema's type-only fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Reads'), resource ('Google Doc'), and output format ('Markdown'), and explicitly contrasts with sibling get_doc_content so an agent can distinguish it. The mention of headings, lists, and tables makes the output concrete.
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?
Explicitly identifies the alternative (get_doc_content) and the differentiator: this tool preserves formatting as Markdown while get_doc_content returns plain text. It also states default comment behavior, helping an agent decide when to rely on defaults.
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?
No annotations are provided, so the description carries the behavioral disclosure burden. It does a good job by explaining that native Docs are fetched via the Docs API, while Office files are downloaded via Drive API and have text extracted, and that the result is a string with a metadata header. It could further disclose edge-case behavior or auth requirements, but the core mechanics are clearly stated.
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 bullets, and front-loads the primary action. Every sentence adds useful information, including the API behavior distinctions and the return type. 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 tool has only two parameters, and the description covers the retrieval behavior and return value reasonably well. However, because there are no annotations and no schema-level parameter explanations, the missing semantics for user_google_email and the absence of usage alternatives leave the description only partially complete for an agent encountering this tool for the first time.
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 provides no descriptions for document_id or user_google_email, and schema description coverage is 0%. The description only clarifies that the file is identified by document_id; it does not explain the role or format of user_google_email, which is a required parameter. This leaves an important parameter under-explained.
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 content') and resource ('Google Doc or a Drive file like .docx') identified by document_id, and even explains the API path for each file type. It does not explicitly distinguish itself from similar siblings like get_drive_file_content or get_doc_as_markdown, so it falls just short of full 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 description implies when the tool is useful by listing supported file types (native Google Docs and Office files in Drive), but it does not explicitly state when to choose this tool over alternatives, nor does it mention any exclusions or limitations. With several overlapping content-retrieval siblings, clearer routing guidance would be valuable.
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 carries the full burden, and it delivers: it discloses that native files are exported, Office files are unzipped and parsed with std-lib, other files are downloaded with a UTF-8 attempt and binary fallback, and results include a metadata header. This is concrete, non-obvious behavioral detail that helps an agent predict outcomes.
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, a compact bulleted list of behavior per file type, and a clear Args/Returns section. Every section earns its place, and the most important scoping 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?
The description covers inputs, return type, shared-drive support, file-type conversion strategies, and binary fallback, which is strong for a read-only retrieval tool. It stops short of addressing permissions, size limits, or error behavior, but these are minor given the presence of an output schema and the detailed behavioral list.
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 defines both required parameters: user_google_email as the user's Google email address and file_id as the Drive file ID. This adds meaning beyond the bare string types, though it could go further by clarifying the email's role in auth/context or expected file_id 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?
Description clearly states a specific verb and resource: retrieves the content of a Google Drive file by ID, with explicit mention of shared drive support. The bulleted format breakdown distinguishes it from sibling tools like get_drive_file_download_url and list_drive_items by emphasizing extracted, human-readable 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 usage context is implied through the bulleted file-type handling: use this when you need parsed text/CSV from Google-native or Office files, and when falling back to raw download may produce binary. However, the description never explicitly names alternative sibling tools or states when not to use this tool, leaving selection partially to inference.
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
Downloads a Google Drive file and saves it to local disk.
In stdio mode, returns the local file path for direct access. In HTTP mode, returns a temporary download URL (valid for 1 hour).
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), PDF if export_format='pdf', 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 download. 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). For Sheets: supports 'csv', 'pdf', or 'xlsx' (default).
Returns: str: File metadata with either a local file path or download URL.
| 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?
With no annotations present, the description carries the full burden of behavioral disclosure. It explicitly states the side effect of saving to local disk, explains the temporary URL validity of 1 hour, and describes export conversion behavior for native Google files. It does not cover auth requirements or failure behavior, but the disclosed side effects and mode-dependent returns are substantial and 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 well-structured with an opening summary, mode-specific behavior, a clear format table, and an Args section. It is somewhat repetitive—the Returns section echoes the mode-specific return info already stated—but the organized layout and front-loaded key behavior make it 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 essential operational details: required and optional parameters, mode-dependent return values, export format defaults, and native file handling. It is reasonably complete for a file download tool, though it does not address authentication prerequisites, permissions, or how it relates to sibling tools like get_drive_file_content or get_drive_shareable_link.
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, and it does. It explains user_google_email as required and identifies what it represents, defines file_id as the Google Drive file ID, and gives detailed semantics for export_format including allowed values, defaults, and per-document-type support. This is strong parameter documentation 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 downloads a Google Drive file and saves it to local disk, with mode-specific return behavior (local path in stdio, temporary URL in HTTP). It also details export handling for native Google files, which clarifies the resource and action. However, the tool name emphasizes 'download URL' while the description leads with 'downloads and saves to local disk,' creating slight ambiguity, and it does not distinguish itself from sibling tools like get_drive_file_content or get_drive_shareable_link.
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 stdio vs HTTP mode applies and what return type to expect, plus explicit export format behavior for Docs, Sheets, and Slides. It does not explicitly name alternative tools or state when not to use this tool, but the mode and format guidance gives enough context for an agent to decide correctly in most cases.
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 behavioral burden. It indicates a read operation ('Gets') and describes the return as detailed metadata with sharing status and URLs, but it does not disclose authentication requirements, failure behavior, or whether the returned string is JSON or formatted text. 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 is compact and organized into Args/Returns sections with no filler. The 'Required' note on user_google_email is redundant given the schema, but it does not meaningfully hurt. No important content is buried.
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 getter with an existing output schema, this description provides enough to invoke the tool correctly: both parameters are explained and the broad return contents are stated. It does not discuss related permission tools or edge cases, but those are not necessary for a correct call.
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 by explaining both parameters in plain language: the user's Google email address and the file ID whose permissions to check. It also marks requiredness. It could add where to obtain the file ID or expected email format, but the core semantics are clear.
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 ('Gets') and identifies the resource ('detailed metadata about a Google Drive file including sharing permissions'). It is clearly a retrieval tool rather than a mutation tool, but it does not further differentiate from closely related siblings such as get_drive_shareable_link or check_drive_file_public_access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement about when to prefer this tool over the many Drive access/permission siblings such as set_drive_file_permissions, check_drive_file_public_access, or manage_drive_access. No exclusions, prerequisites, or alternative routing are provided, so an agent must infer usage solely from the purpose sentence.
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 full burden of behavioral disclosure. It conveys that this is a read/retrieve operation, explains default behaviors (time_min current time, max_results 25, detailed False), and clarifies edge behavior such as ignored parameters when event_id is present. It stops short of mentioning auth requirements or error conditions, but otherwise is quite transparent.
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 longer than average, but it needs to be: 9 parameters, multiple retrieval modes, and conditional behaviors require explanation. The opening sentence front-loads the core purpose, and the Args section is organized consistently. Some values repeat the schema defaults, but the extra explanatory context justifies 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?
For a 9-parameter tool with no annotations, the description covers all invocation-relevant details: required email, calendar selection, retrieval modes, filtering, detailed output, attachments, and return format. It does not mention prerequisites like authentication or behavior when no events are found, but the provided information is sufficient for correct use 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?
Schema description coverage is 0%, yet the description documents all 9 parameters in detail, including defaults, formats (RFC3339), conditions (ignored if event_id is provided), and usage notes (include_attachments only with detailed=True). This fully compensates for the schema's lack of parameter descriptions and adds practical guidance beyond JSON structure.
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 clear verb and resource: 'Retrieves events from a specified Google Calendar.' It then specifies the two main retrieval modes (single event by ID, multiple events by time range) plus keyword search, making the tool's purpose immediately distinguishable from related calendar tools like manage_event or query_freebusy.
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 operational context: when event_id is provided, time filtering params are ignored; time_min defaults to current time; include_attachments is recommended when attachment access is needed; and calendar IDs can be obtained via list_calendars. It does not explicitly contrast with query_freebusy or other calendar alternatives, but the usage conditions for each mode are well explained.
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?
No annotations exist, so the description carries the behavioral disclosure burden. It does state the return type and content, and 'Get' implies a read-only operation. However, it doesn't disclose authorization requirements, failure behavior, or clarify that this returns the form definition rather than responses.
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 Args and Returns sections. The core purpose is front-loaded in the first sentence, and there is no filler or redundant 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 simple two-parameter getter, the essential call contract is present and the return contents are described. However, with no annotations and no mention of the auth prerequisite, the agent could call it before authentication or confuse it with response retrieval.
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 by explaining both parameters: user_google_email is the user's required Google email, and form_id is the ID of the form to retrieve. This adds meaning beyond the raw schema property 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 a specific verb and resource: 'Get a form.' It further distinguishes this tool from response-related siblings by specifying that the return includes the form's title, description, questions, and URLs rather than response data.
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 is given about when to use this tool versus alternatives like get_form_response or list_form_responses. There is also no mention of the Google auth prerequisite, despite start_google_auth appearing among siblings.
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?
With no annotations, the description carries the behavioral disclosure burden. It states that the tool returns response details including answers and metadata, and 'Get' implies a read operation. However, it does not mention auth requirements, error behavior, or the fact that form_id and response_id must come from an existing form.
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 one-sentence summary, followed by a clear Args/Returns breakdown. It avoids filler, though the 'Required' flag is only attached to user_google_email even though all three parameters are required in 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?
For a simple three-string getter, the description covers purpose, all parameters, and return type. It lacks context about how the tool fits with list_form_responses, authorization implications, and potential error cases, but the output schema covers return structure, so the gap is moderate rather than severe.
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 property descriptions (0% coverage), so the description must compensate. The Args block gives each parameter a plain-language meaning, including that user_google_email is the user's Google email address and response_id is the ID of the response to retrieve. It does not explain how to locate these IDs, but it provides meaningful semantics beyond raw string 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 opens with a clear verb and resource: 'Get one response from the form.' The word 'one' distinguishes it naturally from the sibling tool list_form_responses, making the tool's scope 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?
There is no guidance on when to use this tool versus list_form_responses or other form-related tools. No prerequisites or workflow context are provided, such as how to obtain a response_id or that response IDs come from list_form_responses.
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 an email attachment and saves it to local disk.
In stdio mode, returns the local file path for direct access. In HTTP mode, returns a temporary download URL (valid for 1 hour). May re-fetch message metadata to resolve filename and MIME type.
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 with either a local file path or download URL.
| 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 and does a good job: it discloses that the tool writes to local disk, returns different response types by mode, that the HTTP URL is temporary (valid for 1 hour), and that metadata may be re-fetched. This is meaningful behavioral context beyond the name and 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 front-loaded with the core action, then provides mode-specific behavior, parameter semantics, and return type. Every sentence earns its place without unnecessary filler, and the structure 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?
For a simple three-parameter Gmail attachment download tool, the description covers the essential context: what it does, return behavior by mode, and parameter meanings. It does not cover error cases or explicit auth prerequisites, but these are not critical for this straightforward 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?
Schema description coverage is 0%, but the description provides a clear Args section explaining the role of each parameter: message_id identifies the containing message, attachment_id identifies the attachment, and user_google_email supplies the user's address. This compensates well for the schema's lack of parameter 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 a specific verb ('Downloads') and resource ('an email attachment') and explains the resulting behavior: saving to local disk and returning a path or URL. This distinguishes it from related sibling tools like get_gmail_message_content and download_chat_attachment.
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 explains behavior in stdio vs HTTP mode, which helps an agent know what to expect, but it does not explicitly state when to use this tool over alternatives or when not to use it. Usage context is implied by the tool's purpose rather than explicitly guided.
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?
With no annotations, the description carries the behavioral burden. It clearly signals a read operation via 'Retrieves' and describes the returned fields, which is useful. However, it omits prerequisites like prior authentication, error behavior for invalid IDs, and limitations such as plain-text-only body or absence of attachments.
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, with a front-loaded purpose sentence followed by Args and Returns sections. It adds useful return details like date and Message-ID. There is minor overlap between the opening sentence and the Returns section, but this does not hurt clarity.
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 two-parameter, read-only tool with no nested objects and an output schema present, the description covers the core essentials: what the tool does, both parameters, and the return content. The main gaps are lack of explicit routing among many similar Gmail siblings and any authentication prerequisite, but these are modest given the tool's low 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?
The input schema has 0% parameter description coverage, so the Args section is essential and provides at least a one-line explanation for both parameters. 'message_id' is described meaningfully as the unique ID of the message to retrieve, and 'user_google_email' clarifies it is the user's email and required. The descriptions are minimal but compensate 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 opens with a specific verb ('Retrieves'), names the exact resource ('a specific Gmail message'), and enumerates the content scope (subject, sender, recipients, plain text body). This clearly distinguishes the tool from search, batch, and thread-related siblings, even without naming them.
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: use this tool for retrieving the full content of a single Gmail message. However, it does not explicitly mention alternatives or exclusions, such as 'use get_gmail_messages_content_batch for multiple messages' or 'use get_gmail_thread_content for a whole thread.' An agent must infer routing from sibling names and the word 'specific.'
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?
With no annotations provided, the description carries the full burden and does well: it discloses the batch behavior, the upper bound of 25 messages, the rationale behind that bound, and the difference between 'full' and 'metadata' formats. It also clarifies that the return value is a string containing a formatted list of message fields, which is useful behavioral detail.
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 primary purpose, immediately followed by the critical batch limit and rationale. The structured Args and Returns sections are compact and every sentence adds value; 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 batch retrieval tool with three parameters, the description covers purpose, limits, parameter meaning, and return shape. Even though an output schema exists, the description's explicit Returns details remove ambiguity about what the formatted string contains. No critical information is missing for safe 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 fully compensate for the schema. It explains all three parameters: message_ids (list of IDs, max 25), user_google_email (required), and format (enumerated values with meaning). This is complete and adds meaning 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 clearly states the action ('Retrieves the content of multiple Gmail messages') and the key scoping detail ('in a single batch request'). This distinguishes it from singular tools like get_gmail_message_content and, by saying 'messages' rather than 'threads', from get_gmail_threads_content_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 gives clear context for when batch retrieval is appropriate, noting the 25-message limit and the reason ('to prevent SSL connection exhaustion'). It does not explicitly name alternatives or state when not to use it, but the context is strong enough for an agent to infer the intended use case.
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, the description carries the behavioral disclosure burden. It states the operation is a retrieval, includes all messages, and returns content 'formatted for reading.' It does not mention auth prerequisites, error behavior, or potential size of the returned thread, but the read-only nature is clearly conveyed.
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 tight and well-structured: a single action sentence followed by a compact Args/Returns block. Every part earns its place, and the main behavior 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 two-parameter read tool, the description covers the inputs and the return value, and an output schema exists. The main gaps are the lack of explicit guidance about when to use this tool versus get_gmail_threads_content_batch and no mention of auth or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It defines thread_id as 'the unique ID of the Gmail thread to retrieve' and user_google_email as 'the user's Google email address.' These are minimal but do add some semantic 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 opens with a specific verb and resource: 'Retrieves the complete content of a Gmail conversation thread, including all messages.' This clearly identifies a single conversation thread as the target and distinguishes it from message-level tools, though it does not explicitly differentiate from the batch sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The single-thread scope is implied by 'a Gmail conversation thread,' so an agent can infer this tool is for one thread rather than multiple. However, the description never explicitly says when to choose this over get_gmail_threads_content_batch or provides any exclusion criteria.
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?
With no annotations provided, the description carries the behavioral disclosure burden. It transparently explains that the function automatically chunks requests in groups of 25, mentions the maximum batch size, and states the return format as a formatted string with separators. This goes beyond a bare 'retrieves threads' statement, though it does not cover error or authorization 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 compact and front-loaded: purpose, batch limit, and rationale appear first. The Args and Returns sections are concise and each sentence adds useful information with no filler or 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?
For a two-parameter tool with no annotations, the description is complete enough to call correctly: it covers what the tool does, how batching behaves, what input is required, and what output shape to expect. The presence of an output schema further reduces the need to describe return values in greater detail.
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. It explains thread_ids are Gmail thread IDs and that batching is automatic, and it notes user_google_email is the user's Google email address and is required. Both parameters receive meaningful semantic context 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 opens with a specific verb and resource: 'Retrieves the content of multiple Gmail threads in a single batch request.' This clearly distinguishes the tool from the singular sibling get_gmail_thread_content and the message-level batch tool get_gmail_messages_content_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?
It states the intended use case: retrieving multiple threads efficiently in one batch, and adds a concrete rationale for the 25-thread limit: preventing SSL connection exhaustion. It does not explicitly name the singular alternative get_gmail_thread_content, but the batch framing makes the appropriate context clear.
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?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It says messages are 'formatted' but does not explain what formatting entails, how sorting or pagination works, whether authentication is required, or what the returned string actually contains. This is too thin for a tool with no annotation safety or behavior hints.
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 very concise, front-loads the core purpose in one clear sentence, and avoids fluff. The Returns line adds a small amount of value about output format, though it is still minimal. It would be stronger with more behavioral detail, but as a concise structure it is effective.
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 lack of annotations, 0% schema coverage, and the large sibling tool set, this description is incomplete. It does not clarify pagination, ordering, auth requirements, output formatting semantics, or how this differs from search_messages. An agent would likely need to guess or call the wrong sibling 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 only references 'the specified space,' which maps loosely to space_id. It provides no additional meaning for user_google_email, order_by, or page_size beyond their parameter names and defaults, so it fails 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 clearly states the action ('Retrieves messages') and the resource ('from a Google Chat space'), making the main purpose unambiguous. It does not explicitly differentiate itself from sibling search_messages, but the scope is specific enough to be generally distinguishable from other Google Chat 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 no guidance on when to use this tool versus alternatives like search_messages, list_spaces, or send_message. It does not mention intended scenarios, exclusions, or prerequisites, so an agent must infer usage entirely from the name and the first sentence.
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?
No annotations are provided, so the description carries the full behavioral disclosure burden. It clearly indicates a read-only retrieval operation ('Get details') and describes the return value as a string containing page details, elements, and layout. While it does not discuss auth or error behavior, it gives sufficient transparency for a simple getter.
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 purpose sentence followed by a minimal Args/Returns breakdown. Every sentence adds useful information 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?
For a simple retrieval tool with an output schema and fully documented parameters, the description is largely complete. It covers what the tool does, what inputs are needed, and what kind of result to expect. It could be improved by adding guidance on how this tool relates to sibling presentation tools, but that gap is already captured in the usage dimension.
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 by documenting all three parameters: user_google_email, presentation_id, and page_object_id, each with a short explanation of its role. The descriptions are somewhat generic but add meaning beyond the bare schema 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 opens with 'Get details about a specific page (slide) in a presentation,' which clearly identifies the verb, resource, and scope. This distinguishes it from sibling tools like get_presentation, which targets the entire presentation, and get_page_thumbnail, which returns an image rather than structural details.
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 guidance on when to use this tool versus alternatives such as get_presentation, get_page_thumbnail, or batch_update_presentation. Usage context is only implied by the wording 'Get details about a specific page,' with no mention of exclusions or conditions that would select a different tool.
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 behavioral disclosure burden. It does disclose the return type and the allowed thumbnail_size values, which is helpful. However, it does not explicitly state whether this is a read-only operation, whether authentication via user_google_email is implicitly required beyond being a parameter, or what happens on invalid input.
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 tightly structured: a one-sentence summary followed by a clean Args/Returns block. Every line adds distinct information including types, requiredness, allowed values, default, and return type, with 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 thumbnail URL generation tool, all parameters and the return value are covered, and the default behavior for thumbnail_size is explicit. It is slightly incomplete in not mentioning authorization context or how to obtain a valid page_object_id, but these are not blocking 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?
The input schema provides no parameter descriptions, but the description fully compensates: it documents every parameter with a plain-language explanation, marks user_google_email as required, and gives the valid values and default for thumbnail_size. This is exactly the value a description should add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Generate a thumbnail URL for a specific page (slide) in a presentation.' This is not a tautology and clearly distinguishes the tool from siblings like get_page or get_presentation, which fetch page content rather than thumbnail URLs.
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 intended use case is implied by the purpose: use this when a thumbnail image URL for a slide is needed. However, the description does not explicitly say when to use this tool versus alternatives, mention prerequisites such as prior authentication, or point to sibling tools for resolving page_object_id.
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?
No annotations are provided, so the description carries the full disclosure burden. It correctly signals a read-only lookup ('Get details') and states the return shape (string with title, slides count, metadata), but it omits auth prerequisites (the user_google_email parameter implies an authenticated account, and start_google_auth exists as a sibling) and failure behavior for invalid or inaccessible presentation 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 a compact three-part docstring — summary, Args, Returns — with the purpose front-loaded in the first sentence and no filler. Every line 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?
For a simple two-parameter getter with an output schema present and both params documented, the description is nearly complete. The remaining gaps — auth-state requirements and error behavior — are minor for a retrieval tool of this 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?
Schema description coverage is 0%, but the Args docstring documents both parameters with type and required markers, fully compensating for the schema's silence. The prose is largely a restatement of the names ('user's Google email address', 'ID of the presentation to retrieve'), so it adds modest meaning beyond what the parameter names already convey.
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?
'Get details about a Google Slides presentation' names a specific verb and resource, and the Returns clause enumerates exactly what is fetched (title, slides count, metadata). This clearly distinguishes it from presentation-adjacent siblings like get_page and get_page_thumbnail, which target page-level detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use, when-not-to-use, or alternative tools are mentioned. With presentation-adjacent siblings such as get_page, get_page_thumbnail, and list_presentation_comments, an agent receives no guidance for choosing among them; usage is only vaguely implied by the verb 'Get'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_contentA
Retrieves content of a specific file within a project.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID file_name: Name of the file to retrieve
Returns: str: File content as string
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | Yes | ||
| script_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 behavioral context. 'Retrieves' and 'Returns: str: File content as string' make the read-only nature and output clear. It also notes that the service client is injected, which is useful. However, it doesn't disclose error behavior, permissions, or rate limits. For a simple read tool 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 is structured with a clear opening sentence, an Args block, and a Returns block. It is appropriately sized for a tool with 3 parameters, with no redundant prose. The main purpose is front-loaded, making it 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?
For a simple file-content getter, the description covers the essential operational context: the injected service, required identifiers, and return type. The output schema also documents the return value. It doesn't address error cases, but these are not critical for straightforward retrieval. Overall, an agent can invoke this tool correctly with the given information.
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. The Args section gives a one-line description for each parameter, but these mostly restate the parameter names ('User's email address', 'The script project ID', 'Name of the file to retrieve'). It does clarify that 'service' is injected and not part of the schema, which adds value. Overall, it provides only minimal additional meaning beyond the 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?
States a specific verb ('Retrieves') and resource ('content of a specific file within a project'). This clearly differentiates it from sibling tools like get_script_project (project metadata) and get_drive_file_content (Drive files). The description is precise and immediately actionable.
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 clear context: use when you need the source content of a file inside an Apps Script project. It does not explicitly mention alternatives or exclusion cases, but the specificity of the purpose makes the appropriate use case obvious among the large sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_metricsA
Gets execution metrics for a script project.
Returns analytics data including active users, total executions, and failed executions over time.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID metrics_granularity: Granularity of metrics - "DAILY" or "WEEKLY"
Returns: str: Formatted string with metrics data
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | ||
| user_google_email | Yes | ||
| metrics_granularity | No | DAILY |
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 communicates a read-style operation through 'Gets' and 'Returns' and explains the return format as a formatted string, but it does not explicitly state that the operation is read-only, nor does it cover authentication requirements, rate limits, or potential 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 front-loaded with the main purpose and then uses a compact Args/Returns structure for clarity. The Args section is somewhat redundant with the schema and includes a non-schema parameter, but the overall text remains short, scannable, and free of unnecessary 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 metrics-retrieval tool, the description covers the key dimensions: what metrics are returned, granularity options, and the return type. It does not explain authentication prerequisites or how to find the script_id, but those are reasonably inferable from the schema and sibling tools like list_script_projects.
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 useful allowed values for metrics_granularity ('DAILY' or 'WEEKLY') and hints that service is injected. However, the explanations for user_google_email and script_id largely restate their names, and the 'service' arg is not part of the input schema, which could confuse an agent about what to actually 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-resource pair ('Gets execution metrics for a script project') and lists the concrete metric types returned: active users, total executions, and failed executions. This makes the tool's purpose clear and distinguishes it from script lifecycle tools like list_script_projects and run_script_function, though it does not explicitly contrast with the similar-sounding list_script_processes.
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: an agent can reasonably infer this tool is for retrieving execution analytics for a script project. However, there is no explicit when-to-use guidance, no exclusions, and no reference to alternatives such as list_script_processes when process-level details are needed instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_projectB
Retrieves complete project details including all source files.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID
Returns: str: Formatted project details with all file contents
| Name | Required | Description | Default |
|---|---|---|---|
| script_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 behavioral burden. It discloses that this is a retrieval operation returning a formatted string of project details and file contents, implying a read-only action. However, it does not address potential cost, size, auth needs, or what happens if the project is missing.
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 Args and Returns sections. It has no redundant fluff, though listing 'service' as an arg despite it being absent from the schema is a minor structural inconsistency.
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 this is a simple get-by-ID operation with only two required params and an output schema, the description is mostly adequate. It clearly states the return format. Missing context includes when to prefer this over sibling tools and any access prerequisites.
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 parameter descriptions, so the description provides the only semantics. It defines user_google_email and script_id in plain language, and notes that service is an injected client. The extra 'service' arg is not in the schema, which could confuse invocation, but it is labeled as injected.
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 and resource: 'Retrieves complete project details including all source files.' The phrase 'complete project details' and 'all source files' helps distinguish this from related siblings like list_script_projects or get_script_content, though it does not explicitly name them.
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. The description does not mention prerequisites, such as needing a script_id from list_script_projects, nor does it contrast with sibling tools like get_script_content or list_script_projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_engine_infoA
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?
With no annotations, the description carries the full burden. It does disclose that the operation is a read-only retrieval and describes the return value, which is helpful. But it omits explicit behavioral context such as authentication requirements, error conditions, or any side effects, so transparency is only adequate.
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 clear Args and Returns sections. Every sentence carries needed information and there is no fluff 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 one-parameter metadata getter with an output schema, the description is mostly complete: it states the purpose, the required argument, and the kind of return value. The main gap is the lack of an explicit authentication prerequisite, which matters because sibling tools include start_google_auth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does this by explaining that user_google_email is 'The user's Google email address' and marking it as required, adding real meaning beyond the bare string type in the schema. It could add format or examples, but for a single simple parameter this 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 opens with a specific verb and resource: 'Retrieves metadata about a Programmable Search Engine.' It also names the concrete return content ('configuration and available refinements'), so an agent can clearly distinguish this from sibling tools like search_custom or get_spreadsheet_info.
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 use case is implied: call this when you need metadata about a Programmable Search Engine for the given user. However, there is no explicit guidance about when not to use it, no stated prerequisite like first calling start_google_auth, and no mention of alternative tools for similar metadata needs.
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 behavioral disclosure burden. The verb 'Gets' and the explicit 'Returns: formatted spreadsheet information...' clearly signal a read-only metadata operation with a defined output. It omits auth or error caveats, but for a simple getter that is not a major 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 front-loaded with a clear purpose sentence, then uses tidy Args and Returns blocks. Every line carries useful information and there is no fluff 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?
For a simple two-parameter getter, the description is complete enough: both required args are explained and the return content is specified. It does not discuss authorization preconditions or error cases, but the tool's simplicity and the presence of an output schema reduce the need for that detail.
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 gives meaningful semantics for both required parameters: user_google_email is the user's Google email and spreadsheet_id identifies the target spreadsheet. The descriptions are minimal and provide no ID format or sourcing example, so it is not a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it gets information about a specific spreadsheet, including its sheets. This clearly distinguishes it from siblings like list_spreadsheets and read_sheet_values, which handle listing or cell-level data.
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 'specific spreadsheet' gives clear selection context: use this when you have a spreadsheet_id and need metadata or sheet list rather than listing all spreadsheets or reading cell values. It does not explicitly name exclusionary alternatives, so it stops 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.
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 carries the behavioral disclosure burden. 'Get details' and the Returns note make clear this is a read-only retrieval, but it does not address authentication, permissions, or error 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 compact and front-loaded with the core purpose, followed by a terse Args and Returns breakdown. No filler is present, though the Args block somewhat mirrors the schema field names.
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 retrieval tool with three required string parameters, the description documents all parameters and the return summary. An output schema is present, so return-value details are handled. The main missing piece is explicit usage guidance versus sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains each parameter's meaning: user_google_email is the user's Google email, task_list_id identifies the containing list, and task_id identifies the task to retrieve. This adds real semantics over the bare property 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 begins with a clear, specific verb and resource: 'Get details of a specific task.' It distinguishes this from siblings like list_tasks and manage_task by focusing on retrieval of one task's details.
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 intended use is implied by 'specific task' and the required IDs, but the description does not explicitly state when to use this tool versus list_tasks or manage_task, and it offers no exclusions or alternative routing.
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?
No annotations are provided, so the description carries the behavioral burden. It clearly frames the operation as a read/retrieval and specifies the returned content, but it does not explicitly state read-only semantics, authentication requirements, or error behavior. Adequate for a simple getter, but with 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 front-loaded with a one-sentence purpose, followed by structured Args and Returns sections. The only redundancy is marking user_google_email as 'Required' when the schema already lists it as required; otherwise it is compact and 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?
For a two-parameter read tool, the description covers purpose, parameters, and return content, making it minimally viable. However, it lacks any usage context, such as when to call it instead of list_task_lists or manage_task_list, and does not address error or auth behavior. This is a notable gap given no annotations exist.
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 by defining both parameters: user_google_email as the user's Google email and required, and task_list_id as the ID of the task list to retrieve. It could add where to find the ID, but the essential semantics are clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and object: 'Get details of a specific task list.' It is clearly distinguishable from siblings like list_task_lists and manage_task_list, and the return description reinforces the 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?
No usage guidance is given. The description does not mention when to use this tool versus list_task_lists or manage_task_list, nor does it state prerequisites or alternatives. An agent must infer usage from the name and parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Gets details of a specific version.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID version_number: The version number to retrieve (1, 2, 3, etc.)
Returns: str: Formatted string with version details
| Name | Required | Description | Default |
|---|---|---|---|
| script_id | Yes | ||
| version_number | 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 behavioral disclosure. 'Gets' signals a read-only operation and the Returns line says the result is a formatted string, but there is no mention of error behavior, version-existence checks, or any permissions beyond the injected service client.
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 purpose is stated in one opening sentence, followed by a tight Args list and a clear Returns line. It is well-structured with no filler, making it 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?
For a simple getter with three parameters, it covers the core inputs and return type. However, it lacks any guidance about how the script_id should be obtained, what 'details' includes, or how failures are reported, which is notable because neither annotations nor schema descriptions add 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 is the only source of parameter meaning. It gives one-line explanations for all parameters, but user_google_email and script_id merely restate their names, and only version_number and the injected service description add real 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 states a specific action ('Gets details') on a specific resource ('a specific version'), and tying it to script_id/version_number makes the target unambiguous. The word 'specific' differentiates it from the sibling list_versions, while 'Gets' differentiates it from create_version.
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 'use this when' or exclusion, but the description implies this tool is for retrieving one known version by number. An agent could infer the alternative (list_versions for enumeration), but the description does not explicitly name it or say when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_to_google_docA
Imports a file (Markdown, DOCX, TXT, HTML, RTF, ODT) into Google Docs format with automatic conversion.
Google Drive automatically converts the source file to native Google Docs format, preserving formatting like headings, lists, bold, italic, etc.
Args: user_google_email (str): The user's Google email address. Required. file_name (str): The name for the new Google Doc (extension will be ignored). content (Optional[str]): Text content for text-based formats (MD, TXT, HTML). file_path (Optional[str]): Local file path for binary formats (DOCX, ODT). Supports file:// URLs. file_url (Optional[str]): Remote URL to fetch the file from (http/https). source_format (Optional[str]): Source format hint ('md', 'markdown', 'docx', 'txt', 'html', 'rtf', 'odt'). Auto-detected from file_name extension if not provided. folder_id (str): The ID of the parent folder. Defaults to 'root'.
Returns: str: Confirmation message with the new Google Doc link.
Examples: # Import markdown content directly import_to_google_doc(file_name="My Doc.md", content="# Title\n\nHello world")
# Import a local DOCX file
import_to_google_doc(file_name="Report", file_path="/path/to/report.docx")
# Import from URL
import_to_google_doc(file_name="Remote Doc", file_url="https://example.com/doc.md")| Name | Required | Description | Default |
|---|---|---|---|
| content | No | ||
| file_url | No | ||
| file_name | Yes | ||
| file_path | No | ||
| folder_id | No | root | |
| source_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?
With no annotations, the description carries the burden and does disclose key behavior: Google Drive converts the source, formatting is preserved, the extension is ignored, folder_id defaults to root, and the tool returns a confirmation message with a link. It does not mention authentication prerequisites or precedence if multiple sources are supplied, but the main side effect (creating a new Google Doc) is clearly stated.
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 structure is well organized: a one-line purpose, a brief conversion note, a detailed but necessary Args section, a Returns line, and three illustrative examples. Given the parameter count and zero schema descriptions, every section earns its place with little 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 is largely complete for a 7-parameter import tool: all parameters, defaults, format handling, and return value are covered. Minor gaps remain, such as not explicitly stating that only one of content/file_path/file_url should be provided and not mentioning whether prior Google authentication is required.
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: every one of the 7 parameters is explained with type, required/optional status, supported formats, defaults, and special behavior (e.g., source_format auto-detection, file_path accepting file:// URLs). The examples make parameter combinations concrete.
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 ('Imports'), a concrete resource (files in Markdown/DOCX/TXT/HTML/RTF/ODT), and a distinct outcome (conversion into Google Docs format). This clearly differentiates it from sibling tools like create_doc or create_drive_file, which create blank or generic 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 gives clear context by naming supported formats, explaining auto-conversion, and showing three usage patterns (inline content, local file, remote URL). It does not explicitly name alternatives or state when not to use it, but the usage context is unambiguous enough for an agent to select this tool over blank-doc creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_elementsB
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?
With no annotations, the description carries the full behavioral disclosure burden. It states the insert action and mentions the document is updated, but it does not disclose that this is a mutating operation requiring edit permissions, whether changes are reversible, or how insertion interacts with existing content beyond the index parameter. The return type is provided, but behavioral risk is under-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 compact and well-structured: one introductory sentence followed by a clear Args list and a Returns line. Every line adds useful information; there is no filler or 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 and the return type, and an output schema exists, so this is adequate for invoking the tool. However, given the large sibling set and lack of annotations, it omits guidance on when to use this tool instead of alternatives and does not address behavioral effects/permissions. It is functional but not 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, and it does: every parameter is explained, including enum-like values for element_type and list_type, conditional requirements for rows/columns and list_type, and the meaning of index. Minor ambiguity remains around how multiple list items should be represented in the 'text' parameter, but overall the parameter semantics are well 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 and resource: 'Inserts structural elements like tables, lists, or page breaks into a Google Doc.' The allowed element_type values further clarify the scope. It does not explicitly differentiate from related siblings such as create_table_with_data or insert_doc_image, but the structural-element focus is reasonably distinctive.
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 conditional parameter guidance for tables and lists ('required for table', 'required for list'), but it provides no guidance on when to choose this tool over sibling tools like create_table_with_data, batch_update_doc, or insert_doc_image. There is no explicit when-to-use or when-not-to-use statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_imageB
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?
There are no annotations, so the description carries the full behavioral disclosure burden. It indicates mutation through 'inserts' and mentions a confirmation return, but it does not disclose authorization requirements, side effects on document content as a result of insertion, or behavior on invalid image sources. For a mutation tool 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 tightly organized with a one-sentence summary, a straightforward arg list, and a return statement. There is no filler or duplication of schema details that aren't already present. The opening sentence front-loads 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?
The parameter documentation is strong, but the description omits context that would help an agent decide when to choose this tool over insert_doc_elements, and it does not mention whether authenticated user state or prior authorization is required. Given no annotations and a weak schema, the description is adequate but not fully complete for safe autonomous 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?
The description compensates entirely for the 0% schema coverage by defining all six parameters clearly: email, document ID, image source with accepted types, 0-based index, and width/height in points. It also notes which parameters are optional, providing meaning the input schema lacks entirely.
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 clear verb and resource: 'Inserts an image into a Google Doc from Drive or a URL.' It is specific about the action and the accepted source types. It does not explicitly contrast with the sibling insert_doc_elements, which could also insert images, but the name and scope are focused enough to convey the tool's singular 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 about when to use this tool versus alternatives such as insert_doc_elements or batch_update_doc. The description states only what the tool does, not when it should be preferred, what prerequisites exist, or what scenarios are not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_tabA
Inserts a new tab into a Google Doc.
Args: user_google_email: User's Google email address document_id: ID of the document to update title: Title of the new tab index: Position index for the new tab (0-based among sibling tabs) parent_tab_id: Optional ID of a parent tab to nest the new tab under
Returns: str: Confirmation message with document link
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| title | Yes | ||
| document_id | Yes | ||
| parent_tab_id | 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 carry the full burden of behavioral disclosure. It clearly states that the operation inserts a tab, explains the 0-based indexing semantics, and notes optional parent nesting, which is useful. However, it does not disclose side effects on existing tabs, permission or authentication requirements, or failure behavior for invalid index or parent_tab_id values.
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 a clear one-line purpose, a structured Args list, and a Returns statement. Every sentence serves a purpose, and the most important action is front-loaded without any 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?
Given there is no schema-level parameter documentation and no annotations, the description does a strong job of covering the essential invocation details: purpose, all parameters, and return shape. It is slightly incomplete because it omits authentication prerequisites, behavior on invalid inputs, and interaction with sibling tab operations, but the core calling contract is well defined and the 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 provides no property descriptions (0% coverage), so the description is entirely responsible for parameter meaning. It successfully explains all five parameters, including the crucial details that index is 0-based among sibling tabs and that parent_tab_id optionally nests the new tab, going far 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 opening sentence, 'Inserts a new tab into a Google Doc,' uses a specific verb and resource, making the tool's function immediately clear. It is readily distinguishable from sibling tools like update_doc_tab, delete_doc_tab, and insert_doc_elements because the action and target are explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does and lists its arguments, but it gives no explicit guidance about when to choose this tool over alternatives such as update_doc_tab or delete_doc_tab. No when-to-use, prerequisites, or exclusion conditions are stated, leaving the agent to infer usage context from the action alone.
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
Inspecting structure of specific tabs
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
tabs: List of available tabs in the document (if no tab_id specified)
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 tab_id: Optional ID of the tab to inspect. If not provided, inspects main document.
Returns: str: JSON string containing document structure and safe insertion indices
| Name | Required | Description | Default |
|---|---|---|---|
| tab_id | No | ||
| 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?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so comprehensively. It explains what the output contains, how to interpret total_length as an exclusive boundary, how tab_id changes scope, and that the return value is a JSON string. The read-only nature is implied strongly by 'inspect' and 'finding safe insertion points before making changes.'
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?
Although the description is longer than average, it is tightly organized with scannable headings and each section adds unique value. The essential safety warning is front-loaded, and the workflow is concise and directly actionable. No sentence feels redundant 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 description covers all important contextual ground: when to use, what the output means, how to use the result safely, parameter semantics, and tab behavior. An agent can successfully invoke this tool and interpret its output without needing to consult external documentation. The presence of an output schema further reduces 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 description coverage is 0%, but the description compensates fully by documenting each argument: user_google_email, document_id, detailed, and tab_id. It adds behavioral meaning beyond the schema, such as tab_id defaulting to the main document when omitted. This is a strong recovery from an otherwise 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, actionable purpose: 'finding safe insertion points and understanding document structure.' It further enumerates concrete use cases like locating tables and inspecting tabs, which clearly differentiates it from siblings like get_doc_content or debug_table_structure. The name is reinforced with operational detail rather than merely restated.
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 'USE THIS FOR' section explicitly lists when to call the tool, and the 'CRITICAL FOR TABLE OPERATIONS' section mandates calling it before table creation. The numbered WORKFLOW gives step-by-step guidance for interpreting the result and choosing a safe index, which is exactly the kind of when-to-use context an agent needs.
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 carries the behavioral disclosure burden. It does indicate a read operation ('Retrieves') and scopes access to the authenticated user, and it describes the output shape. However, it omits important context such as the need for prior authentication via start_google_auth, behavior when the user has no calendars, or any permission/error conditions. This is moderate disclosure for a simple read 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 an opening one-line purpose followed by Args and Returns sections. The main sentence is front-loaded and informative. The only minor redundancy is restating 'Required' when the schema already marks the parameter as required.
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 tool, the description is mostly complete: it names the input, the output, and the scope. Yet it lacks any mention of prerequisite authentication, what happens when the email is unauthorized or invalid, or the empty-calendar case. Since there are no annotations to fill these gaps, the description alone leaves some operational uncertainty for an agent deciding how and when to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does clarify that user_google_email is 'The user's Google email address' and marks it as required. With only one parameter, this is sufficient semantic grounding, though 'Required' mostly repeats the schema's required array.
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 and resource: 'Retrieves a list of calendars accessible to the authenticated user.' The calendar domain clearly distinguishes it from sibling list tools such as list_spreadsheets and list_gmail_labels. Including the return fields (summary, ID, primary status) further clarifies exactly what the tool produces.
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 you need the user's calendars as a list. However, it does not explicitly state when not to use it or name alternatives such as get_events for calendar events or query_freebusy for availability. The agent must infer the right choice from sibling names rather than being guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contact_groupsA
List contact groups (labels) for the user.
Args: user_google_email (str): The user's Google email address. Required. page_size (int): Maximum number of groups to return (default: 100, max: 1000). page_token (Optional[str]): Token for pagination.
Returns: str: List of contact groups with their details.
| Name | Required | Description | Default |
|---|---|---|---|
| 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?
No annotations are provided, so the description carries the burden. It communicates that this is a read/list operation and includes pagination behavior, but it does not disclose authentication requirements, ordering, system-label inclusion, or other behavioral details beyond the basic listing.
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 purpose followed by organized Args and Returns sections. Every section adds useful information and there is 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?
For a simple list operation, the description covers the required and optional parameters and the high-level return value. It is mostly complete, but it could be stronger by mentioning when to prefer this over get_contact_group or how authentication relates to user_google_email.
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 by explaining each parameter: user_google_email is required, page_size has default and max limits, and page_token is for pagination. This adds meaning beyond the raw 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 the tool lists contact groups (labels) for a user, using a specific verb and resource. It is clear enough to distinguish from related tools like get_contact_group, though it does not explicitly name or contrast sibling 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?
There is no guidance about when to use this tool versus alternatives such as get_contact_group, manage_contact_group, or list_contacts. The description does not state exclusions, prerequisites, or recommended scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsA
List contacts for the authenticated user.
Args: user_google_email (str): The user's Google email address. Required. page_size (int): Maximum number of contacts to return (default: 100, max: 1000). page_token (Optional[str]): Token for pagination. sort_order (Optional[str]): Sort order: "LAST_MODIFIED_ASCENDING", "LAST_MODIFIED_DESCENDING", "FIRST_NAME_ASCENDING", or "LAST_NAME_ASCENDING".
Returns: str: List of contacts with their basic information.
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| page_token | No | ||
| sort_order | 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 behavioral disclosure burden. 'List' implies a read-only operation, and the parameter docs clarify pagination and sorting behavior. Still, it does not explicitly state that contacts are not modified, what happens with an invalid or unauthenticated email, or what 'basic information' includes, 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 front-loaded with a clear one-line summary and then uses a well-organized Args/Returns structure. It is slightly repetitive of schema defaults and required flags, but overall every section earns its place 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?
The definition is adequate for a simple read-only list operation: parameters are documented well and the return type is stated. However, it lacks guidance on when to choose this over 'search_contacts', and with no annotations it does not address authentication assumptions or edge cases, making it incomplete for an agent operating with minimal 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 compensates fully by explaining all four parameters, including required status, defaults, maximum page size, and the exact allowed values for sort_order. This is exactly the kind of parameter-level detail an agent needs and exceeds what the raw 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 clearly states a specific verb and resource: 'List contacts for the authenticated user.' This makes the tool's core purpose obvious and distinguishes it from single-contact 'get_contact' or mutating 'manage_contact'. However, it does not explicitly differentiate from the sibling 'search_contacts' tool, so an agent may not know which listing-style tool to prefer.
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 'search_contacts', 'get_contact', or 'manage_contacts_batch'. The description gives context ('authenticated user') but no exclusions, prerequisites, or routing hints. An agent is left to infer usage from the name and parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deploymentsA
Lists all deployments for a script project.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID
Returns: str: Formatted string with deployment list
| Name | Required | Description | Default |
|---|---|---|---|
| script_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 present, so the description must carry the behavioral burden. It discloses that the operation returns a formatted string and mentions an injected Google API service client, which is useful. It does not explicitly state that the operation is read-only or describe pagination or formatting behaviors, 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 brief and front-loaded with the core purpose, followed by a compact Args/Returns structure. Every line earns its place without redundant wording or unnecessary detail.
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 with an output schema present, the description covers the key context: the operation, the parameters, the injected service, and the return type. It could further explain what fields appear in the formatted deployment list or note read-only behavior, but the essentials are 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. It defines both actual parameters: user_google_email as the user's email address and script_id as the script project ID, while clarifying that service is an injected client rather than a caller-provided parameter. This adds meaning 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 a specific verb and resource: 'Lists all deployments for a script project.' This clearly identifies the tool's function and distinguishes it from siblings like list_script_projects and list_versions, which target different resources, and manage_deployment, which implies mutation.
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 retrieving deployment information for a script project, which gives basic context for when to use it. However, it does not explicitly state when to avoid it, nor does it name alternatives such as manage_deployment or list_versions, so usage guidance is only 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, the description carries the full burden, but it only says the tool 'Lists' and 'Returns a formatted list'. It does not disclose read-only safety, authentication requirements, pagination behavior, or what happens when folder_id is invalid.
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 front-loaded, but the 'Returns' block adds little value and no parameter or usage detail is included. It is concise but under-specified.
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, no annotations, and many closely related siblings, this description omits essential operational context. An agent cannot tell how to properly set folder_id, why user_google_email is required, or how pagination works.
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 compensate. folder_id, page_size, and user_google_email are never explained, even though user_google_email is required and page_size defaults to 100.
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 resource: it lists Google Docs within a specific Drive folder. This distinguishes it from many sibling tools, though it does not explicitly contrast with list_drive_items or 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?
There is no guidance on when to use this tool versus alternatives such as list_drive_items or search_drive_files. No context, prerequisites, 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.
list_document_commentsC
List 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 present, the description must carry the full behavioral burden, but it only restates the core operation. It does not mention pagination, whether resolved comments are included, required authentication, or what happens if access is missing.
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 filler. It is appropriately concise, though it could include more helpful context without becoming verbose.
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 list operation with an output schema, the basic purpose is conveyed, but critical context is missing. The agent is not told how user_google_email relates to authentication, when to prefer this over sibling tools, or any behavioral caveats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate, but it provides no explanation of either parameter. The role of user_google_email and the expected format of document_id are left entirely to inference from the property 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 uses a specific verb ('List') and resource ('comments from a Google Document'), making the operation clear. It distinguishes itself from mutation tools like manage_document_comment, though it doesn't explicitly name sibling 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?
No guidance is provided about when to use this tool versus alternatives such as list_spreadsheet_comments, list_presentation_comments, or manage_document_comment. The intended context is only implied by the name and resource type.
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.
page_token (Optional[str]): Page token from a previous response's nextPageToken to retrieve the next page of results.
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.
file_type (Optional[str]): Restrict results to a specific file type. Accepts a friendly
name ('folder', 'document'/'doc', 'spreadsheet'/'sheet',
'presentation'/'slides', 'form', 'drawing', 'pdf', 'shortcut',
'script', 'site', 'jam'/'jamboard') or any raw MIME type
string (e.g. 'application/pdf'). Defaults to None (all types).
detailed (bool): Whether to include size, modified time, and link in results. Defaults to True.
Returns: str: A formatted list of files/folders in the specified folder. Includes a nextPageToken line when more results are available.
| Name | Required | Description | Default |
|---|---|---|---|
| corpora | No | ||
| detailed | No | ||
| drive_id | No | ||
| file_type | No | ||
| folder_id | No | root | |
| page_size | No | ||
| page_token | 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 behavioral burden, and it delivers: pagination via nextPageToken, default page size, file_type filtering with accepted aliases, and return format. It also explains the nuanced scope behavior for drive_id, folder_id, and include_items_from_all_drives.
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 longer than average, but the length is justified by 9 parameters and shared-drive complexity. It is front-loaded with purpose and scoping rules before the Args block, and the Returns section is compactly integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter tool with no annotations, the description covers all parameters, the output shape, pagination, and conditional behavior across My Drive and shared drives. Nothing essential for calling the tool correctly 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%, so the Args block is essential. It defines every parameter's purpose, defaults, optionality, and special behavior (e.g., folder_id can be a shared drive's ID for root; file_type accepts friendly names or raw MIME types), far exceeding the schema's bare 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 opens with a specific verb-resource pair: 'Lists files and folders', and immediately distinguishes itself by noting shared-drive support. It is clearly differentiated from siblings like search_drive_files (search) and get_drive_file_content (fetch a single file).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditional usage: if drive_id is specified, the listing is scoped to that drive; otherwise it lists My Drive and accessible shared drives. It does not explicitly name alternatives or say when not to use the tool, but the contextual conditions are clear enough for an agent to choose it appropriately.
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 carries the burden of behavioral disclosure. 'List' implies read-only behavior, and the Returns section indicates a string containing response details and pagination info. However, it does not explicitly state that no mutations occur, what authorization is required, or how pagination tokens are produced.
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 a clear one-line summary followed by a structured Args/Returns section. It is appropriately sized for a four-parameter tool, with no filler, though the Returns section partially duplicates information that an output schema would already provide.
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 parameters and return payload adequately, but it lacks guidance on when to use this list operation versus get_form_response, and it does not mention authentication prerequisites or failure conditions. Given the low schema coverage and absent annotations, this is a meaningful gap, though the tool itself is straightforward.
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, and it does. The Args section explains every parameter: user_google_email is required and identifies the Google user, form_id identifies the form, page_size controls maximum results with a default of 10, and page_token is described as the token for the next page. This makes all four parameters actionable.
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 ('List') and the resource ('a form's responses'), so an agent can tell this is a read operation on form responses. It is clear, but it does not explicitly distinguish itself from the similarly named sibling get_form_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?
The description gives no guidance on when to use this tool versus alternatives such as get_form_response or get_form. It also does not mention prerequisites like authentication via start_google_auth, leaving the agent to infer usage context from the parameter names.
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?
There are no annotations, so the description carries the full burden. It does state the return format ('formatted list of filters with their criteria and actions') and implies non-mutating behavior with 'Lists,' but it does not disclose auth prerequisites, error behavior, or explicitly confirm there are no 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 front-loaded: the main purpose appears in the first sentence, followed by minimal Args and Returns sections. Every sentence provides useful 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?
For a simple one-parameter listing tool, the description covers the essential elements: what is listed, the parameter's meaning, and the return value. It could mention authentication dependencies or how it relates to sibling filter management tools, but nothing critical is missing 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 compensates by explaining the only parameter: user_google_email is the user's Google email address and is required. This adds meaningful context beyond the bare string type in 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 uses a specific verb 'Lists' with a clear resource, 'Gmail filters configured in the user's mailbox,' and distinguishes it from sibling tools like list_gmail_labels and manage_gmail_filter. An agent can immediately tell this is a read-only listing operation for filters.
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: this tool is for retrieving all Gmail filters, implying a read-only inspection use case. It does not explicitly name alternatives or exclusion conditions, but the 'Lists all' scope makes the intended usage reasonably unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gmail_labelsB
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?
Annotations are absent, so the description carries the full behavioral burden. The verb 'Lists' signals a read-only operation and the Returns section discloses that output is a formatted list with IDs, names, and types, but no context is given on auth prerequisites, inclusion of system labels, pagination, 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 compact: one lead sentence followed by standard Args/Returns sections. Every element is functional, though the docstring format is conventional rather than crafted, and the Returns section partly duplicates the existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only listing tool with an output schema, the essentials — action, parameter meaning, and return shape — are present. The gaps are usage routing and behavioral context, but the tool's simplicity keeps the cost of those gaps low.
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 Args section must compensate, and it does: 'user_google_email (str): The user's Google email address. Required.' This documents meaning and requiredness, though it largely restates what the parameter name already conveys and duplicates the schema's required array.
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: 'Lists all labels in the user's Gmail account.' This distinguishes it from sibling tools like manage_gmail_label (mutating label operations) and list_gmail_filters (filters, not labels), so an agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance appears anywhere in the description. It does not mention alternatives, prerequisites, or cases where a sibling tool like manage_gmail_label or list_gmail_filters 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_presentation_commentsB
List 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?
No annotations are provided, so the description must disclose behavioral traits on its own. It indicates a read-style operation but does not mention whether authentication via user_google_email is required, whether replies are included, whether there are pagination limits, or whether this returns only top-level comments. 'All comments' is broad and underspecified.
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 redundant or verbose wording. It is concise, though it achieves brevity by sacrificing useful behavioral and parameter detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value details are not necessary in the description. The core purpose and obvious parameter names make basic invocation plausible, but the lack of auth context, parameter semantics, and differentiation from the management tool leaves meaningful 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?
Schema description coverage is 0%, and the description adds no detail about either parameter. 'presentation_id' and 'user_google_email' are not explained beyond their names, so an agent has no guidance on formats, where to find the ID, or why the email is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('List'), a specific resource ('comments'), and a scope ('from a Google Presentation'). This distinguishes it from siblings like list_document_comments and list_spreadsheet_comments by resource type, even without naming them.
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 verb 'List' implies read-only usage, and the resource type implies this tool is for presentation comments rather than document or spreadsheet comments. However, there is no explicit guidance about when to use this tool versus manage_presentation_comment or how it relates to other comment-list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_script_processesA
Lists recent execution processes for user's scripts.
Args: service: Injected Google API service client user_google_email: User's email address page_size: Number of results (default: 50) script_id: Optional filter by script ID
Returns: str: Formatted string with process list
| Name | Required | Description | Default |
|---|---|---|---|
| page_size | No | ||
| script_id | 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 does convey a non-mutating read operation ('Lists') and mentions the return type ('Formatted string'), but it does not disclose side effects, auth requirements, or how 'recent' is determined.
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 a clear one-sentence purpose, then organized into Args and Returns sections. There is no filler or redundant elaboration.
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, parameters, and return value, and an output schema exists. However, it lacks guidance on when to use this tool versus the many script-related siblings, and it does not fully resolve how the injected 'service' argument relates to the declared request 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 coverage is 0%, so the description's Args section is important. It names all three schema parameters and gives brief glosses, though most add little beyond what the schema already shows. The mention of 'service' is helpful context, but it does not clarify that this is an injected runtime client, not a user-supplied request field.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Lists recent execution processes for user's scripts.' This clearly distinguishes the tool from siblings like list_script_projects or get_script_metrics, since 'execution processes' is a unique 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 gives no guidance on when to choose this tool over related script tools such as list_script_projects or get_script_metrics, and it does not mention exclusions or prerequisites. Usage is only implied by the stated purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_script_projectsA
Lists Google Apps Script projects accessible to the user.
Uses Drive API to find Apps Script files.
Args: service: Injected Google API service client user_google_email: User's email address page_size: Number of results per page (default: 50) page_token: Token for pagination (optional)
Returns: str: Formatted list of script projects
| Name | Required | Description | Default |
|---|---|---|---|
| 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 carries the behavioral disclosure burden. It does add useful context about scope and method: it lists projects 'accessible to the user' and uses the Drive API. However, it does not explicitly state that this is a read-only operation, whether prior authentication is required, or how pagination behaves beyond the parameter definitions.
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 follows a clear structure: one-line purpose, mechanism, Args, and Returns. It contains little fluff, though the Args section could be tightened to avoid including 'service,' which is not part of the actual input 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?
For a simple listing tool, the description covers the core information: purpose, scope, parameters, and return type. An output schema is available for return details, and the main missing piece—explicit guidance about when to use it versus sibling tools—is already accounted for in the usage dimension.
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: user_google_email, page_size, and page_token each get a meaningful explanation. One minor ambiguity is that 'service' is listed in Args but is not present in the input schema, which could confuse an agent even though it is likely an injected dependency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it 'Lists Google Apps Script projects accessible to the user.' It also clarifies the underlying mechanism, 'Uses Drive API to find Apps Script files,' which distinguishes it from related single-resource tools like get_script_project.
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 by the tool's stated purpose: use it to list the Google Apps Script projects available to the user. However, it does not explicitly tell the agent when to prefer this over related alternatives such as get_script_project, list_deployments, or search_drive_files.
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?
With no annotations provided, the description carries the full burden. It does disclose that the operation is a read-only listing scoped to spaces the user can access, and it states the return is a formatted string. However, it does not disclose pagination behavior, how space_type filtering behaves, or any authentication requirements, so behavioral context remains thin.
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, which is good. However, the second sentence ('A formatted list of Google Chat spaces accessible to the user') largely restates the first, and since an output schema exists, the Returns section adds marginal value while occupying space that could have documented the 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?
For a tool with 3 parameters, 0% schema coverage, and no annotations, the description is incomplete. The optional parameters page_size and space_type are left unexplained (what values does space_type accept besides the default 'all'?), and pagination behavior is not described. The purpose and return type are covered, but the agent cannot determine optional parameter semantics.
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 connects 'accessible to the user' to the required user_google_email parameter and hints at space_type values via '(rooms and direct messages)', but page_size is entirely undocumented in both schema and description, leaving a real 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 uses a specific verb ('Lists') with a specific resource ('Google Chat spaces') and clarifies scope with '(rooms and direct messages)' and 'accessible to the user'. This clearly distinguishes it from message-level Chat siblings like get_messages, send_message, and search_messages, leaving no ambiguity about what it 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 choose this tool over alternatives — no when-to-use context, no prerequisites, and no exclusions. An agent would have to infer the use case entirely from the purpose statement, which is minimal guidance at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spreadsheet_commentsB
List 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?
No annotations are provided, so the description carries the behavioral burden. It states the core read-only action clearly, but does not disclose whether resolved comments or replies are included, or that the user_google_email must have access to the spreadsheet.
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 redundant words or filler. It is highly scannable and exactly as concise as the simple tool warrants.
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 two-parameter read tool with an output schema, so heavy return-value documentation is unnecessary. However, the description omits authentication context and any distinction from comment management or other comment-listing tools, leaving minor but real 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?
Schema description coverage is 0%, so the description needed to explain the two required parameters. It maps indirectly to spreadsheet_id via 'Google Spreadsheet', but gives no explanation of user_google_email or how the parameters relate to each other.
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 ('List') and a concrete resource ('comments from a Google Spreadsheet'), clearly distinguishing it from related tools like list_document_comments or manage_spreadsheet_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 does not say when to prefer this tool over alternatives, nor does it mention prerequisites such as having authenticated access to the spreadsheet. Usage context is only weakly implied by the verb 'List'.
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?
No annotations are provided, so the description carries the full burden. It discloses that the operation is a read-only listing and describes the return format ('formatted list of spreadsheet files (name, ID, modified time)'). However, it does not mention authentication prerequisites, behavior on inaccessible accounts, or any authorization requirements, which are meaningful gaps for a Google Drive 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 compact and well-structured: a one-sentence summary followed by concise Args and Returns sections. Every sentence provides necessary value, and the core behavior 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 low-complexity tool with only two parameters and an output schema, the description covers invocation, parameter semantics, and return format. It is missing an explicit note about requiring prior Google authentication (especially given the start_google_auth sibling) and could reference alternative listing tools, so it is not 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 Args section fully compensates by explaining that user_google_email is the user's Google email and is required, and that max_results limits the result count with a default of 25. This adds human-readable meaning beyond the raw schema types and defaults, though it could add constraints like supported range for max_results.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Lists spreadsheets from Google Drive that the user has access to.' This clearly identifies the tool's function and differentiates it from generic Drive listing tools like list_drive_items by specifying spreadsheet type and access 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 implies usage by framing the tool as a way to list accessible spreadsheets and documents required parameters, but it does not explicitly state when to prefer this tool over siblings like search_drive_files or list_drive_items, nor does it mention exclusions. The required user_google_email gives some context, but alternatives are not discussed.
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?
The verb 'List' signals a read-only operation, and the Returns clause describes the output shape. However, with no annotations, the description does not disclose prerequisites such as OAuth/start_google_auth, pagination behavior, or the effect of the 1000-item cap beyond the parameter default.
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: a one-sentence summary followed by concise Args and Returns sections. Every line earns its place with no redundancy or 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 simple list operation, the description covers all parameters and the basic return format, and an output schema exists for additional detail. It is complete enough for direct invocation, though it lacks usage routing guidance relative to sibling task-list 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?
Despite 0% schema description coverage, the description documents all three parameters with types, requiredness, defaults, and the max cap for max_results. It adds meaningful semantics beyond the raw schema, though page_token could be more specific about where the token originates.
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 opening line 'List all task lists for the user' names a specific verb, resource, and scope, making the tool's purpose clear. It is distinguishable from siblings such as get_task_list and list_tasks by name and wording, though it does not explicitly contrast with them.
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 like get_task_list, list_tasks, or manage_task_list. It states what the tool does but leaves the agent to infer selection criteria.
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 provided, the description carries the behavioral disclosure burden and largely succeeds. It documents defaults for max_results, show_completed, show_deleted, show_hidden, and show_assigned, and it surfaces the nuanced constraint that show_hidden must be true to include completed tasks from first-party clients. The read-only nature is implied by 'list' and the return description, though not explicitly stated.
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 one-sentence summary is front-loaded and the rest is a scannable Args/Returns layout. For a 13-parameter tool, every line earns its place by adding semantics that the schema does not provide.
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 13 parameters are meaningfully described, defaults are explicit, pagination is covered, and the return type is specified. Since an output schema exists, detailed return-field documentation is unnecessary, and the tool is fully callable based on the description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only names, types, and defaults, so its description coverage is effectively zero. The description compensates fully by explaining every parameter, including required user_google_email, max_results bounds, pagination via page_token, RFC 3339 date filters, and the behavioral meaning of each show_* flag.
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: 'List all tasks in a specific task list.' It clearly distinguishes this from siblings like list_task_lists, which lists task lists, and get_task, which fetches a single task. The required task_list_id parameter reinforces the intended 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 implies the tool is for enumerating tasks within a known task list, and the required user_google_email and task_list_id make the basic usage context clear. However, it does not explicitly explain when to choose this over alternatives, such as get_task, manage_task, or list_task_lists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsA
Lists all versions of a script project.
Versions are immutable snapshots of your script code. They are created when you deploy or explicitly create a version.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID
Returns: str: Formatted string with version list
| Name | Required | Description | Default |
|---|---|---|---|
| script_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 behavioral disclosure burden. 'Lists' signals a read-only operation, and the description adds that versions are immutable snapshots and that the return value is a formatted string. It does not, however, disclose sorting, pagination, failure behavior, or authentication prerequisites, so transparency 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 well-structured with a front-loaded purpose, a concise explanatory sentence, an Args section, and a Returns section. The only blemish is the inclusion of 'service' in Args when the schema does not list it, and the return statement is somewhat redundant given an output schema exists, but overall there is no wasted 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 low-complexity read-only listing tool, the description covers the main purpose, key inputs, and basic return type. It is missing guidance on auth dependencies, empty version lists, ordering, and how it differs from list_deployments, and the 'service' parameter mismatch adds a small completeness gap. It is sufficient for a basic invocation but not fully 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%, so the description must compensate. It gives one-line meanings for 'user_google_email' and 'script_id', but these largely restate what the parameter names already imply. It also mentions 'service: Injected Google API service client,' which is not in the input schema and could create minor confusion, though the word 'injected' signals it is not caller-supplied.
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: 'Lists all versions of a script project.' It clearly names the object type (versions), the scope (all versions), and the target resource (a script project), which separates it from related siblings like get_version, create_version, and list_deployments.
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 this is useful by explaining that versions are immutable snapshots created at deploy/version-creation time, so an agent can infer it is the right tool for viewing version history. However, it does not explicitly say when not to use it or name alternatives such as get_version or list_deployments, leaving usage boundaries implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_conditional_formattingA
Manages conditional formatting rules on a Google Sheet. Supports adding, updating, and deleting conditional formatting rules via a single tool.
Args: user_google_email (str): The user's Google email address. Required. spreadsheet_id (str): The ID of the spreadsheet. Required. action (str): The operation to perform. Must be one of "add", "update", or "delete". range_name (Optional[str]): A1-style range (optionally with sheet name). Required for "add". Optional for "update" (preserves existing ranges if omitted). Not used for "delete". condition_type (Optional[str]): Sheets condition type (e.g., NUMBER_GREATER, TEXT_CONTAINS, DATE_BEFORE, CUSTOM_FORMULA). Required for "add". Optional for "update" (preserves existing type if omitted). 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. Used by "add" and "update". background_color (Optional[str]): Hex background color to apply when condition matches. Used by "add" and "update". text_color (Optional[str]): Hex text color to apply when condition matches. Used by "add" and "update". rule_index (Optional[int]): 0-based index of the rule. For "add", optionally specifies insertion position. Required for "update" and "delete". 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. Used by "add" and "update". sheet_name (Optional[str]): Sheet name to locate the rule when range_name is omitted. Defaults to the first sheet. Used by "update" and "delete".
Returns: str: Confirmation of the operation and the current rule state.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| range_name | No | ||
| rule_index | No | ||
| 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 behavioral burden. It discloses action-specific behavior (e.g., range_name is optional for update and preserves existing ranges, rule_index required for update/delete, gradient_points creates a gradient rule and ignores boolean parameters) and states the return value. This is strong, though it could be even clearer about destructive effects and the odd 'boolean parameters' reference.
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 appropriate for a tool with 11 parameters and three actions. It is structured with a clear summary followed by an Args section, and each parameter line adds necessary operational detail without unnecessary 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?
The description covers all parameters, action variants, return type, and key behavioral nuances, which is strong for a complex tool. It loses a point because it does not provide a complete mapping of condition_type values to expected condition_values, and the phrase about 'boolean parameters' is confusing given no boolean parameters exist in the 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 input schema has 0% description coverage, so the description must fully document parameters, and it does. It explains each parameter's purpose, constraints, and action applicability, including the action enum values, required conditions, and accepted formats like JSON strings for 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 states a specific verb ('manages'), a resource ('conditional formatting rules on a Google Sheet'), and enumerates the supported operations (add, update, delete). This clearly differentiates the tool from the sibling tools, including format_sheet_range, by focusing on rule management rather than one-time 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 provides clear context that this tool is for managing conditional formatting rules and explains the three action modes. It does not explicitly name alternatives or state when not to use it, but the scope is specific enough that an agent can determine appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contactA
Create, update, or delete a contact. Consolidated tool replacing create_contact, update_contact, and delete_contact.
Args: user_google_email (str): The user's Google email address. Required. action (str): The action to perform: "create", "update", or "delete". contact_id (Optional[str]): The contact ID. Required for "update" and "delete" actions. given_name (Optional[str]): First name (for create/update). family_name (Optional[str]): Last name (for create/update). email (Optional[str]): Email address (for create/update). phone (Optional[str]): Phone number (for create/update). organization (Optional[str]): Company/organization name (for create/update). job_title (Optional[str]): Job title (for create/update). notes (Optional[str]): Additional notes (for create/update).
Returns: str: Result of the action performed.
| Name | Required | Description | Default |
|---|---|---|---|
| No | |||
| notes | No | ||
| phone | No | ||
| action | Yes | ||
| job_title | No | ||
| contact_id | No | ||
| given_name | No | ||
| family_name | No | ||
| organization | 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 behavioral burden. It openly states that the tool creates, updates, or deletes and that it returns a string result, but it does not disclose whether delete is permanent, whether update replaces only provided fields, or what side effects or permissions are involved.
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, then presents parameters and return value in a clean Args/Returns structure. Every line adds useful information; 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?
Given ten parameters and no annotations, the description covers all required invocation details, conditional behaviors, and return type. It is slightly light on deeper operational context such as how to obtain a contact_id and how update semantics handle omitted fields, but it is sufficient for calling 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 compensates fully by documenting all 10 parameters, including the purpose of each and conditional requirements such as contact_id being required for update and delete. This adds significant meaning 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 'Create, update, or delete a contact,' which is a specific verb-resource statement, and explicitly says it consolidates create_contact, update_contact, and delete_contact. This clearly distinguishes it from the sibling batch tool manage_contacts_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 gives clear usage context by defining the three actions and stating that contact_id is required for update and delete. It does not explicitly mention when not to use this tool in favor of manage_contacts_batch, but the singular 'contact' in the name and the consolidation statement make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contact_groupA
Create, update, delete a contact group, or modify its members. Consolidated tool replacing create_contact_group, update_contact_group, delete_contact_group, and modify_contact_group_members.
Args: user_google_email (str): The user's Google email address. Required. action (str): The action to perform: "create", "update", "delete", or "modify_members". group_id (Optional[str]): The contact group ID. Required for "update", "delete", and "modify_members" actions. name (Optional[str]): The group name. Required for "create" and "update" actions. delete_contacts (bool): If True and action is "delete", also delete contacts in the group (default: False). add_contact_ids (Optional[List[str]]): Contact IDs to add (for "modify_members"). remove_contact_ids (Optional[List[str]]): Contact IDs to remove (for "modify_members").
Returns: str: Result of the action performed.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| action | Yes | ||
| group_id | No | ||
| add_contact_ids | No | ||
| delete_contacts | No | ||
| user_google_email | Yes | ||
| remove_contact_ids | 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 of behavioral disclosure. It does well by explaining the action-specific requirements and the destructive delete_contacts flag, which is a meaningful side-effect disclosure. It could add permission or error-condition context, but the core behavioral traits are transparent.
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 efficiently organized with an overview sentence, a consolidated-tool note, labeled Args, and a Returns line. Every sentence adds useful information and there is no filler or 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?
For a consolidated CRUD tool with 7 parameters and no schema descriptions, the description provides nearly complete context: all actions, conditional parameter requirements, and side-effect behavior. The return type is stated, and the tool's relationship to the replaced legacy tools is clarified.
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%, yet the description fully compensates by explaining every parameter, including which parameters are required for each action and the semantics of delete_contacts. This is exactly the kind of parameter-level guidance the schema lacks.
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 exact operations: create, update, delete a contact group, or modify its members. It also explicitly distinguishes itself as the consolidated replacement for four sibling tools, leaving no ambiguity about what it 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 makes the intended use obvious by enumerating the four actions and naming the legacy tools it replaces. It does not explicitly say when to use listing/retrieval tools instead, but for a modification-focused tool the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contacts_batchA
Batch create, update, or delete contacts. Consolidated tool replacing batch_create_contacts, batch_update_contacts, and batch_delete_contacts.
Args: user_google_email (str): The user's Google email address. Required. action (str): The action to perform: "create", "update", or "delete". contacts (Optional[List[Dict[str, str]]]): List of contact dicts for "create" action. Each dict may contain: given_name, family_name, email, phone, organization, job_title. updates (Optional[List[Dict[str, str]]]): List of update dicts for "update" action. Each dict must contain contact_id and may contain: given_name, family_name, email, phone, organization, job_title. contact_ids (Optional[List[str]]): List of contact IDs for "delete" action.
Returns: str: Result of the batch action performed.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| updates | No | ||
| contacts | No | ||
| contact_ids | 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 behavioral disclosure burden. It explicitly names the create, update, and delete operations and states the return type, but it does not discuss permissions, partial failures, irreversibility of deletion, or what happens on invalid input. This is adequate but not deeply transparent.
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 a clear purpose statement, then organized into concise parameter explanations. No sentence is filler, and the Args block earns its place given the schema provides no property 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?
The description covers all parameters, action-to-parameter mapping, required fields, allowed keys, and the return value. It does not explicitly state that the action-specific parameter is effectively required for that action despite being marked Optional in the signature, nor does it describe error behavior. Overall, it is nearly complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining each parameter's purpose, which action it applies to, the valid action values, allowed contact fields, and the requirement that update dicts contain contact_id. 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 opening line, 'Batch create, update, or delete contacts,' uses a specific verb and resource and clearly describes the tool's consolidated scope. The note that it replaces batch_create_contacts, batch_update_contacts, and batch_delete_contacts distinguishes it from more granular sibling contact 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 clearly states that this is the consolidated batch tool and maps each action to the relevant parameter group. It does not explicitly say to use manage_contact for single-contact operations, but the batch framing and replacement note provide clear contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_deploymentB
Manages Apps Script deployments. Supports creating, updating, and deleting deployments.
Args: service: Injected Google API service client user_google_email: User's email address action: Action to perform - "create", "update", or "delete" script_id: The script project ID deployment_id: The deployment ID (required for update and delete) description: Deployment description (required for create and update) version_description: Optional version description (for create only)
Returns: str: Formatted string with deployment details or confirmation
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| script_id | Yes | ||
| description | No | ||
| deployment_id | No | ||
| user_google_email | Yes | ||
| version_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full disclosure burden. It does state the mutation actions and the return type ('Formatted string with deployment details or confirmation'), which is meaningful. However, it omits side effects such as the irreversibility of a delete, permission/auth requirements, and behavior on invalid action/parameter combinations, and the listed 'service' argument does not exist in 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 definition is well structured and front-loaded: a one-sentence purpose summary, a scannable Args block, and a Returns line. Each parameter entry earns its place given the multi-action nature of the tool, though the inclusion of the nonexistent 'service' argument and some redundancy in the lede ('Manages... Supports...') slightly bloat it.
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 multi-action tool with 6 parameters, 0% schema coverage, and no annotations, the description covers the essential invocation surface, including return format. It still misses edge-case behavior (e.g., what happens when action is delete but deployment_id is null), permission/side-effect disclosure, and any linkage to sibling tools such as list_deployments or create_version. The phantom 'service' parameter adds a small accuracy 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?
Schema description coverage is 0%, so the description must compensate, and it largely does: every schema parameter is explained and per-action requirement constraints are added. It also enumerates the valid action values in prose ('"create", "update", or "delete"'), which is important since the schema defines no enums for action. The phantom 'service' parameter and lack of concrete format examples keep it from a 5.
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 clear verb and resource combination: 'Manages Apps Script deployments' and immediately specifies the supported operations: 'creating, updating, and deleting deployments.' This makes the tool's scope explicit and conceptually sets it apart from siblings like list_deployments or create_version, though it never names them directly.
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 per-parameter usage constraints, such as 'deployment_id: The deployment ID (required for update and delete)' and 'description: Deployment description (required for create and update)', which help an agent construct a valid call. However, it offers no guidance on when to use this tool versus alternatives like list_deployments, when each action (create/update/delete) is appropriate, or what prerequisites must hold before invoking it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_document_commentB
Manage comments on a Google Document.
Actions:
create: Create a new comment. Requires comment_content.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| comment_id | No | ||
| document_id | Yes | ||
| comment_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 full burden of behavioral disclosure. It lists the three actions and their parameter requirements but does not disclose side effects, whether resolve is destructive or reversible, permission prerequisites, or what the operation returns. The 'manage' framing leaves important behavioral outcomes vague 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 appropriately short, front-loads the core purpose, and structures actions as a clean bulleted list. Every sentence earns its place, with no filler or repetition of schema properties.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return value details are not required in the description. The action-to-parameter mapping is useful, but the description lacks guidance on how to obtain a comment_id (e.g., via list_document_comments) and does not mention any necessary prerequisites. For a multi-action tool with no annotations and no schema descriptions, this leaves moderate gaps in operational 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?
With 0% schema description coverage, the description compensates by explicitly mapping each action value to the required parameters: create needs comment_content, reply needs comment_id and comment_content, resolve needs comment_id. This adds meaningful conditional semantics not present in the bare schema. It does not explain user_google_email and document_id, but these are standard required identifiers and less 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 states a clear verb+resource ('Manage comments on a Google Document') and enumerates the specific supported actions: create, reply, and resolve. This distinguishes it from sibling comment-manager tools for spreadsheets and presentations by explicitly naming the resource type. It does not explicitly name sibling tools, but the resource specification 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 implies usage by listing the actions and their required parameters, so an agent can infer the intended calls. However, it does not provide explicit guidance on when to use this tool versus related tools like list_document_comments to retrieve comment IDs, nor does it state alternatives or exclusions. The usage context is implied rather than explicitly directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_drive_accessA
Consolidated tool for managing Google Drive file and folder access permissions.
Supports granting, batch-granting, updating, revoking permissions, and transferring file ownership -- all through a single entry point.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file or folder. Required. action (str): The access management action to perform. Required. One of: - "grant": Share with a single user, group, domain, or anyone. - "grant_batch": Share with multiple recipients in one call. - "update": Modify an existing permission (role or expiration). - "revoke": Remove an existing permission. - "transfer_owner": Transfer file ownership to another user. share_with (Optional[str]): Email address (user/group), domain name (domain), or omit for 'anyone'. Used by "grant". role (Optional[str]): Permission role -- 'reader', 'commenter', or 'writer'. Used by "grant" (defaults to 'reader') and "update". share_type (str): Type of sharing -- 'user', 'group', 'domain', or 'anyone'. Used by "grant". Defaults to 'user'. permission_id (Optional[str]): The permission ID to modify or remove. Required for "update" and "revoke" actions. recipients (Optional[List[Dict[str, Any]]]): List of recipient objects for "grant_batch". Each should have: email (str), role (str, optional), share_type (str, optional), expiration_time (str, optional). For domain shares use 'domain' field instead of 'email'. send_notification (bool): Whether to send notification emails. Defaults to True. Used by "grant" and "grant_batch". email_message (Optional[str]): Custom notification email message. Used by "grant" and "grant_batch". expiration_time (Optional[str]): Expiration in RFC 3339 format (e.g., "2025-01-15T00:00:00Z"). Used by "grant" and "update". allow_file_discovery (Optional[bool]): For 'domain'/'anyone' shares, whether the file appears in search. Used by "grant". new_owner_email (Optional[str]): Email of the new owner. Required for "transfer_owner". move_to_new_owners_root (bool): Move file to the new owner's My Drive root. Defaults to False. Used by "transfer_owner".
Returns: str: Confirmation with details of the permission change applied.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | ||
| action | Yes | ||
| file_id | Yes | ||
| recipients | No | ||
| share_type | No | user | |
| share_with | No | ||
| email_message | No | ||
| permission_id | No | ||
| expiration_time | No | ||
| new_owner_email | No | ||
| send_notification | No | ||
| user_google_email | Yes | ||
| allow_file_discovery | No | ||
| 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?
The description discloses several behavior-relevant details: send_notification defaults to True, allow_file_discovery affects search visibility, move_to_new_owners_root defaults to False, and permission_id is required for update/revoke. However, with no annotations provided, it does not state higher-level side effects of destructive actions like revoke or transfer_owner (e.g., immediate removal of access, possible loss of ownership), nor does it mention authentication 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 long but justified by the tool's complexity (14 parameters, 5 actions, 0% schema coverage). It opens with a one-sentence summary, uses a clean labeled Args list, and groups parameter relevance per action. There is no filler; every line 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 high parameter count, absent annotations, and empty schema descriptions, the description provides a complete picture: action-specific required parameters are clearly marked, defaults are stated, return type is defined as a str confirmation, and nested object structure for recipients is explained. An agent has enough context to construct valid calls for all five actions.
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: every one of the 14 parameters is defined with type, required/optional status, defaults, and the actions that use it. It even provides an example RFC 3339 format and the expected structure for the recipients list, adding substantial meaning 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?
Description opens with 'Consolidated tool for managing Google Drive file and folder access permissions,' clearly stating the verb and resource. It then enumerates five specific actions (grant, grant_batch, update, revoke, transfer_owner), making it unambiguous what the tool does and how it differs from simple 'set permission' siblings.
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 action list doubles as usage guidance, with each action explicitly described ('Share with a single user, group, domain, or anyone', 'Share with multiple recipients in one call', etc.), so an agent can select the right action. However, it does not explicitly contrast this consolidated tool with sibling tools like set_drive_file_permissions, or state conditions where that sibling should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_eventA
Manages calendar events. Supports creating, updating, and deleting events.
Args: user_google_email (str): The user's Google email address. Required. action (str): Action to perform - "create", "update", or "delete". summary (Optional[str]): Event title (required for create). start_time (Optional[str]): Start time in RFC3339 format (required for create). end_time (Optional[str]): End time in RFC3339 format (required for create). event_id (Optional[str]): Event ID (required for update and delete). calendar_id (str): Calendar ID (default: 'primary'). description (Optional[str]): Event description. location (Optional[str]): Event location. attendees (Optional[Union[List[str], List[Dict[str, Any]]]]): Attendee email addresses or objects. timezone (Optional[str]): Timezone (e.g., "America/New_York"). attachments (Optional[List[str]]): List of Google Drive file URLs or IDs to attach. add_google_meet (Optional[bool]): Whether to add/remove Google Meet. reminders (Optional[Union[str, List[Dict[str, Any]]]]): Custom reminder objects. use_default_reminders (Optional[bool]): Whether to use default reminders. transparency (Optional[str]): "opaque" (busy) or "transparent" (free). visibility (Optional[str]): "default", "public", "private", or "confidential". color_id (Optional[str]): Event color ID (1-11, update only). guests_can_modify (Optional[bool]): Whether attendees can modify. guests_can_invite_others (Optional[bool]): Whether attendees can invite others. guests_can_see_other_guests (Optional[bool]): Whether attendees can see other guests.
Returns: str: Confirmation message with event details.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| summary | No | ||
| color_id | No | ||
| end_time | No | ||
| event_id | No | ||
| location | No | ||
| timezone | No | ||
| attendees | No | ||
| reminders | No | ||
| start_time | No | ||
| visibility | No | ||
| attachments | No | ||
| calendar_id | No | primary | |
| description | No | ||
| transparency | No | ||
| add_google_meet | No | ||
| guests_can_modify | No | ||
| user_google_email | Yes | ||
| use_default_reminders | No | ||
| guests_can_invite_others | No | ||
| guests_can_see_other_guests | 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 disclosure burden, and it does state the mutating and destructive nature of the tool explicitly ('creating, updating, and deleting'), which is transparent about side effects. Parameter notes like 'Whether to add/remove Google Meet' and the 'Returns: str' line add further context. Missing are auth/permission requirements, whether delete is permanent, and failure/error behavior for a mutation tool of this significance.
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 two-sentence opener is front-loaded with the most important information, and the Args section is systematically organized one-line-per-parameter, which is appropriately proportional to the tool's 21-parameter complexity. Minor redundancy exists in the opener ('Manages calendar events' followed by the operations), but overall every line 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?
For a complex 3-action, 21-parameter tool with zero annotations, the description covers the full parameter surface, action-specific invariants, and the return contract. The gaps are non-parameter context: no mention of authentication prerequisites, cross-field constraints (e.g., end_time after start_time), or error scenarios for failed updates/deletes. Still, an agent has nearly everything needed 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?
Schema description coverage is 0%, so the description had to fully compensate, and it does so exemplarily: all 21 parameters receive human-readable semantics, type hints, defaults, valid values (transparency, visibility, color_id), and action-conditional requirements (event_id for update/delete, summary for create). This goes well beyond the bare schema and would let an agent construct valid calls without external documentation.
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 resource (calendar events) and enumerates three distinct operations (creating, updating, deleting), which gives agents a concrete picture of what the tool does. The first sentence 'Manages calendar events' is somewhat generic and nearly restates the tool name, but the operation taxonomy adds specificity. It functionally distinguishes from read-only siblings like get_events and query_freebusy, though it never names them explicitly.
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 rather than stated: the enumeration of create/update/delete signals when to invoke this tool, and the Args section adds useful per-action guidance (summary/start_time/end_time required for create; event_id required for update and delete). However, there is no explicit when-to-use vs. alternatives guidance, no mention that read operations should go to get_events, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gmail_filterA
Manages Gmail filters. Supports creating and deleting filters.
Args: user_google_email (str): The user's Google email address. Required. action (str): Action to perform - "create" or "delete". criteria (Optional[Dict[str, Any]]): Filter criteria object (required for create). filter_action (Optional[Dict[str, Any]]): Filter action object (required for create). Named 'filter_action' to avoid shadowing the 'action' parameter. filter_id (Optional[str]): ID of the filter to delete (required for delete).
Returns: str: Confirmation message with filter details.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| criteria | No | ||
| filter_id | No | ||
| filter_action | 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 behavioral burden. It discloses that the tool creates or deletes filters and returns a confirmation string, which is useful, but it omits side effects, authorization requirements, or consequences of deletion. This is minimally adequate but not richly transparent.
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 a clear one-sentence purpose and then uses an organized Args/Returns layout. Every line earns its place, and the parameter naming note is genuinely useful rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values, and the description handles parameter roles and requiredness well. However, for a five-parameter tool with two arbitrary-dict parameters, the absence of a concrete filter criteria/filter_action schema or example leaves the agent with enough ambiguity to build incorrect calls.
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 well by documenting all five parameters, marking required ones, listing the action values, and explaining why filter_action is named that way. It falls short of fully defining the internal structure of criteria and filter_action objects, which remain opaque.
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 it manages Gmail filters and explicitly narrows the scope to creating and deleting filters. The resource and actions are clear enough to distinguish from most siblings, but the opening verb 'manages' is generic and it doesn't explicitly contrast with related tools like list_gmail_filters.
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 action parameter ('create' or 'delete'), telling the agent when this tool applies. However, it provides no explicit guidance about when to prefer a sibling tool such as list_gmail_filters or manage_gmail_label, nor any exclusions.
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, the description carries the full behavioral burden, but it mostly restates the action enum from the schema and only promises a confirmation message. It does not disclose permission needs, idempotency, partial-vs-full update semantics, failure behavior, or irreversible delete side effects beyond the word 'delete.'
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 summary line is front-loaded and immediately followed by a compact, well-organized Args/Returns block. Each line covers one parameter or the return value, with no filler or 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 largely sufficient for correct invocation: action requirements, parameter semantics, and return format are all covered. It is incomplete only in minor but useful respects—it does not mention how to obtain a label_id via list_gmail_labels, authentication prerequisites, or edge-case/error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter is documented with its meaning and conditional requirements, such as 'name ... Required for create' and 'label_id ... Required for update and delete operations.' Since schema description coverage is 0%, this fully compensates for the missing structured descriptions and adds helpful conditional logic.
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 'Manages Gmail labels: create, update, or delete labels,' naming the resource and the specific actions it performs. This clearly differentiates it from read-only label tools like list_gmail_labels and from manage_gmail_filter, which handles filters.
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 action enum and conditional parameter requirements give clear context for when the tool is appropriate: creating, updating, or deleting Gmail labels. However, it does not explicitly mention when not to use it or point to alternatives such as list_gmail_labels for retrieving label IDs, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_presentation_commentA
Manage comments on a Google Presentation.
Actions:
create: Create a new comment. Requires comment_content.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| comment_id | No | ||
| comment_content | No | ||
| 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?
There are no annotations, so the description carries the full burden of explaining behavioral effects. It lists the actions but does not disclose whether resolve is reversible or destructive, what permissions are required, whether side effects occur immediately, or what the tool returns. The action names provide minimal behavioral meaning but leave important 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 compact, front-loaded with the resource and operation type, and uses a clean bullet list for actions. Every sentence adds value and there is no redundant or boilerplate 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?
The tool is moderately complex with conditional parameters, and the description covers the basic invocation contract. However, it omits guidance on where comment_id comes from, whether prior authentication is expected, and any caveats about editing presentation comments. Since an output schema exists, return value details can be safely omitted.
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 the only source of parameter meaning. It usefully maps each action to its required parameters, which is critical because action has no enum and comment_id/comment_content are nullable. The remaining required parameters, user_google_email and presentation_id, are self-explanatory from their 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 tool as managing comments on a Google Presentation and enumerates exactly three actions: create, reply, and resolve. This makes it easily distinguishable from sibling tools like manage_document_comment and manage_spreadsheet_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 clear context for when to use the tool: when working with comments on a Google Presentation. However, it does not explicitly compare against nearby alternatives, mention when not to use it, or point to list_presentation_comments as the source for comment_id values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_spreadsheet_commentA
Manage comments on a Google Spreadsheet.
Actions:
create: Create a new comment. Requires comment_content.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| comment_id | No | ||
| spreadsheet_id | Yes | ||
| comment_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?
With no annotations, the description carries the full burden of disclosing side effects, but it only lists the three actions and their required parameters. It does not explain the consequences of resolving a comment, whether replies are appended in a threaded view, permission requirements, or any irreversible 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 compact, directly front-loaded with the tool's purpose, and uses a clear bulleted action format. Every sentence adds 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 output schema exists, so return-value details are not the description's responsibility, and the core actions are covered. However, for a mutation tool with no annotations, it omits key operational context such as how to obtain comment IDs, what happens after resolving, and when the tool would be inappropriate to 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?
The input schema has no property descriptions, so the description's mapping of action to required parameters is valuable: create requires comment_content, while reply and resolve require comment_id. It does not fully explain the meaning of user_google_email or spreadsheet_id, but these are reasonably inferable from context and 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 resource ('comments on a Google Spreadsheet') and enumerates the supported operations (create, reply, resolve), making it easy for an agent to know what the tool does. It distinguishes itself from sibling tools like manage_document_comment by explicitly mentioning 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?
The description provides no guidance on when to choose this tool over alternatives, such as list_spreadsheet_comments for retrieving comment IDs or manage_document_comment for Docs comments. It also does not mention prerequisites like running start_google_auth or how to obtain a comment_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_taskA
Manage tasks: create, update, delete, or move tasks within task lists.
Args: user_google_email (str): The user's Google email address. Required. action (str): The action to perform. Must be one of: "create", "update", "delete", "move". task_list_id (str): The ID of the task list. Required for all actions. task_id (Optional[str]): The ID of the task. Required for "update", "delete", and "move" actions. title (Optional[str]): The title of the task. Required for "create", optional for "update". notes (Optional[str]): Notes/description for the task. Used by "create" and "update" actions. status (Optional[str]): Task status ("needsAction" or "completed"). Used by "update" action. due (Optional[str]): Due date in RFC 3339 format (e.g., "2024-12-31T23:59:59Z"). Used by "create" and "update" actions. parent (Optional[str]): Parent task ID (for subtasks). Used by "create" and "move" actions. previous (Optional[str]): Previous sibling task ID (for positioning). Used by "create" and "move" actions. destination_task_list (Optional[str]): Destination task list ID (for moving between lists). Used by "move" action.
Returns: str: Result of the requested action.
| Name | Required | Description | Default |
|---|---|---|---|
| due | No | ||
| notes | No | ||
| title | No | ||
| action | Yes | ||
| parent | No | ||
| status | No | ||
| task_id | No | ||
| 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?
With no annotations, the description carries the transparency burden and does disclose the core behaviors: create, update, delete, move, and per-action parameter usage. However, it does not state whether delete is irreversible, what happens to subtasks/ordering, or any authentication requirements beyond the user email parameter.
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 one-line purpose, then uses a structured Args list where every entry earns its place. The level of detail is justified given the large parameter count and zero schema-level 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?
The description provides a complete calling contract for all actions and parameters, and the output schema covers the return type. It lacks only minor contextual details such as destructive side effects, move semantics across lists, and auth prerequisites.
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 by documenting all 11 parameters, including requiredness, which actions each parameter applies to, enum values for action/status, and date format. This is essential and well-executed.
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 resource ('tasks') and the exact operations available: create, update, delete, or move. This distinguishes manage_task from sibling task tools like list_tasks/get_task and manage_task_list, which operate on task lists rather than 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 communicates it is for mutating tasks via create/update/delete/move. It does not explicitly mention alternatives like list_tasks or get_task for read-only needs, but the action set and resource scope provide strong contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_task_listA
Manage task lists: create, update, delete, or clear completed tasks.
Args: user_google_email (str): The user's Google email address. Required. action (str): The action to perform. Must be one of: "create", "update", "delete", "clear_completed". task_list_id (Optional[str]): The ID of the task list. Required for "update", "delete", and "clear_completed" actions. title (Optional[str]): The title for the task list. Required for "create" and "update" actions.
Returns: str: Result of the requested action.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| action | Yes | ||
| task_list_id | 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 behavioral burden. It does disclose that delete and clear_completed are destructive and that create/update are mutating, but it omits details about irreversibility, permission requirements, or side effects on child tasks when deleting a list. The Returns line is minimal but present.
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 appropriately sized, front-loads the core purpose, and uses a clear Args/Returns structure. Each sentence adds necessary information, with no filler or redundant 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 multi-action tool with conditional parameter requirements, the description covers all parameters and the return type adequately. It falls short of a 5 only because it does not explain how to obtain a task_list_id, mention auth prerequisites, or clarify what happens to child tasks when a list is deleted.
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 fully compensates by enumerating valid action values and specifying which parameters are required for each action: task_list_id for update/delete/clear_completed, and title for create/update. This is essential semantic information that the 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 opens with a specific verb and resource, 'Manage task lists,' and immediately enumerates the exact supported actions: create, update, delete, and clear_completed. This sharply distinguishes it from sibling tools like manage_task, which operates on individual tasks within a 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 does not provide explicit guidance on when to use this tool versus related siblings such as list_task_lists, get_task_list, list_tasks, or manage_task. The supported actions imply usage, but there is no stated alternative or exclusion condition.
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) link_url: Hyperlink URL (http/https)
Returns: str: Confirmation message with operation details
| Name | Required | Description | Default |
|---|---|---|---|
| bold | No | ||
| text | No | ||
| italic | No | ||
| link_url | 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 behavioral disclosure burden. It does explain key behaviors such as end_index controlling insertion vs replacement, text being optional for formatting-only operations, and returning a confirmation message. However, it does not warn about the destructive nature of replacing text, permission requirements, or failure states.
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 one-sentence purpose and then uses a structured Args list. It is long, but the length is justified by the high parameter count and the need to document optional interactions. There is no filler or 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 the operation, parameter semantics, optional behaviors, and return value, which is largely sufficient for invoking the tool correctly. It is slightly incomplete in that it lacks guidance for choosing this tool over related document-editing tools and does not address side effects of replacement, but overall the core invocation context is present.
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 by documenting all 13 parameters with meaningful semantics. It explains optional behavior, formatting values, color formats, and index semantics, which is far beyond what the raw 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 clearly identifies the operation: 'Modifies text in a Google Doc' and enumerates the capabilities: insert, replace, and apply formatting in a single operation. However, it does not differentiate itself from near-sibling tools such as find_and_replace_doc, batch_update_doc, or update_paragraph_style, so an agent may not know which one to prefer.
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 guidance on when to use this tool versus alternatives. It does not mention that this tool operates on index-based ranges rather than find-and-replace or structural batch updates, nor does it state any exclusions or prerequisites.
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 | ||
| remove_label_ids | 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 explains the core side-effect behavior, including that removing INBOX archives and adding TRASH deletes, and it states the return type. It does not disclose edge-case behavior, such as what happens if the same label ID is passed in both add and remove lists, but the main behavioral traits are covered.
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 purpose, two practical usage examples, then a compact Args section and a Return statement. No sentences are wasted, and the structure makes it 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 purpose, usage examples, all parameters, and return value, which is nearly complete for a simple four-parameter tool. It could be improved by referencing the sibling batch tool and noting that label IDs come from list_gmail_labels, but these gaps are minor given the tool's 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?
Schema description coverage is 0%, so the description must fully document parameters, and it does. It explains user_google_email (required), message_id, add_label_ids, and remove_label_ids with their types and roles. This goes well beyond the bare input schema, giving an agent enough information 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 a specific verb and resource: 'Adds or removes labels from a Gmail message.' It is easy to understand what the tool does. However, it does not explicitly distinguish itself from the sibling tool batch_modify_gmail_message_labels, which performs the same label-modification operation on multiple 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 description provides clear usage context with concrete examples: 'To archive an email, remove the INBOX label. To delete an email, add the TRASH label.' This helps an agent know common scenarios. However, it does not mention when to prefer this tool over batch_modify_gmail_message_labels or other alternatives, so exclusion guidance is missing.
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 provided, the description carries the full behavioral disclosure burden. It states the core operation, the clear_values behavior, and the confirmation return, but it does not explicitly mention side effects such as destructive overwrite, required edit permissions, or behavior when values are omitted outside the clear case. These are implied but not surfaced.
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 a one-sentence summary, followed by a compact Args/Returns structure. Every sentence contributes useful information, and the formatting makes it easy for an agent to parse parameter semantics 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?
For a six-parameter mutation tool with no annotations, the description covers all parameters, defaults, conditional behavior, and the return type. It is slightly incomplete in not stating prerequisites such as edit access or range validity, but the parameter documentation and output schema leave little ambiguity 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?
The input schema has 0% description coverage, so the Args section fully compensates by explaining all six parameters. It documents requiredness, the conditional requirement for values, accepted formats for values, defaults for value_input_option and clear_values, and the meaning of each setting.
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 action: 'Modifies values in a specific range of a Google Sheet' and explicitly names the supported operations: write, update, or clear. This makes the tool's purpose immediately clear and distinguishes it from siblings 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 opening sentence provides strong context for when to use the tool: whenever sheet range values need to be written, updated, or cleared. It does not explicitly name alternatives or exclusion conditions, but the purpose statement is clear enough for an agent to select this over read/format siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_freebusyA
Returns free/busy information for a set of calendars.
Args:
user_google_email (str): The user's Google email address. Required.
time_min (str): The start of the interval for the query in RFC3339 format (e.g., '2024-05-12T10:00:00Z' or '2024-05-12').
time_max (str): The end of the interval for the query in RFC3339 format (e.g., '2024-05-12T18:00:00Z' or '2024-05-12').
calendar_ids (Optional[List[str]]): List of calendar identifiers to query. If not provided, queries the primary calendar. Use 'primary' for the user's primary calendar or specific calendar IDs obtained from list_calendars.
group_expansion_max (Optional[int]): Maximum number of calendar identifiers to be provided for a single group. Optional. An error is returned for a group with more members than this value. Maximum value is 100.
calendar_expansion_max (Optional[int]): Maximum number of calendars for which FreeBusy information is to be provided. Optional. Maximum value is 50.
Returns: str: A formatted response showing free/busy information for each requested calendar, including busy time periods.
| Name | Required | Description | Default |
|---|---|---|---|
| time_max | Yes | ||
| time_min | Yes | ||
| calendar_ids | No | ||
| user_google_email | Yes | ||
| group_expansion_max | No | ||
| calendar_expansion_max | 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 goes beyond a simple 'returns information' by describing the formatted response, the primary-calendar fallback behavior, and the error condition for group_expansion_max exceeding its limit. It does not mention authentication or rate limits, but the core query behavior is well covered.
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 purpose followed by organized Args and Returns sections. Every parameter explanation earns its place given the lack of schema-level descriptions, and the formatting makes it easy to scan. There is no filler or redundant restating of the tool name.
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 six-parameter tool with no annotations and no schema-level descriptions, the description provides a solid base: all parameters, defaults, limits, examples, and the return format are explained. The only noticeable gap is the absence of comparative guidance against related calendar tools and any mention of authentication prerequisites, but the operational details are 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%, so the description must compensate, and it does thoroughly. For all six parameters it explains meaning, optionality, defaults, constraints, and gives concrete RFC3339 examples for time_min and time_max. It also clarifies how calendar_ids relates to list_calendars, which adds real 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 opens with a clear, specific statement: 'Returns free/busy information for a set of calendars.' This identifies the verb, resource, and scope. It does not explicitly name sibling tools, but 'free/busy' is semantically distinct from event-list tools like get_events, so an agent can generally tell it apart.
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 useful context on how to call the tool, such as falling back to the primary calendar when calendar_ids is omitted and referencing list_calendars as a source of calendar IDs. However, it does not explicitly state when to prefer this tool over alternatives like get_events, nor does it provide exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sheet_valuesB
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". include_hyperlinks (bool): If True, also fetch hyperlink metadata for the range. Defaults to False to avoid expensive includeGridData requests. include_notes (bool): If True, also fetch cell notes for the range. Defaults to False to avoid expensive includeGridData requests.
Returns: str: The formatted values from the specified range.
| Name | Required | Description | Default |
|---|---|---|---|
| range_name | No | A1:Z1000 | |
| include_notes | No | ||
| spreadsheet_id | Yes | ||
| user_google_email | Yes | ||
| include_hyperlinks | 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 of behavioral disclosure. It does disclose that include_hyperlinks and include_notes default to False 'to avoid expensive includeGridData requests,' which adds meaningful behavioral context about cost. However, it doesn't clarify whether this is a read-only operation (though the name suggests it), whether it requires prior Google auth, or what error or edge-case behavior to expect.
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 clean Args section with parameters, defaults, and return value. It is appropriately sized and front-loaded; the core purpose is the first line. Nothing is wasted, though the Args section could arguably be folded more tightly if needed.
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 that this is a read operation with 5 parameters and no annotations, the description covers the essential semantics for calling the tool correctly. However, it misses some context that would help an agent, such as whether prior auth is needed, what the output string format looks like in practice, and potential failure modes. With an output schema present, the return format is partially implied, but a bit more guidance would help.
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 with 5 parameters and no parameter descriptions in the schema, the description must compensate. It does list each parameter with a brief meaning and defaults, including examples and the rationale for the defaults. This adds significant value beyond the raw schema. However, the explanations are concise and don't dive into format constraints or edge cases for parameters like range_name or spreadsheet_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 states a clear verb-resource pair: 'Reads values from a specific range in a Google Sheet.' This is specific enough to convey the core operation and the mention of 'values' plus 'range' distinguishes it from sheet modification tools like modify_sheet_values. However, it doesn't explicitly differentiate itself from related read tools such as get_spreadsheet_info or list_spreadsheets, which is a minor gap.
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 describing what the tool does and its parameters, but it doesn't explicitly state when to use this tool versus alternatives like get_spreadsheet_info or modify_sheet_values. There is no mention of prerequisites such as Google auth being required, nor exclusions about when a different read tool should be chosen. The context is understandable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_script_functionA
Executes a function in a deployed script.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID function_name: Name of function to execute parameters: Optional list of parameters to pass dev_mode: Whether to run latest code vs deployed version
Returns: str: Formatted string with execution result or error
| Name | Required | Description | Default |
|---|---|---|---|
| dev_mode | No | ||
| script_id | Yes | ||
| parameters | No | ||
| function_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?
With no annotations, the description carries the behavioral disclosure burden. It does disclose the return format ('Formatted string with execution result or error') and dev_mode behavior, but it does not mention that executing arbitrary script functions can have side effects, require authorization, or affect external data.
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 a clear one-line purpose, followed by a structured Args and Returns list. It loses a point for including 'service' as an arg even though it is not part of the input schema, which adds minor noise.
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 parameters and the return format are covered, but there is no guidance on side effects, required permissions, or when not to use this tool. Given that running arbitrary script code can be a mutating operation with no annotations, the description is not fully complete for safe tool selection.
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 explaining every schema parameter in plain language. It clarifies dev_mode as 'run latest code vs deployed version,' marks parameters as optional, and identifies script_id as the project ID. The extra 'service' arg is marked injected, which reduces potential confusion.
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 'Executes a function in a deployed script,' which names a specific verb and resource. It is clearly distinct from script management siblings such as create_script_project, update_script_content, and manage_deployment, since none of those invoke an arbitrary function.
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 running an Apps Script function, especially through the dev_mode note about latest vs deployed version. However, it does not explicitly state when to prefer this tool over script-related alternatives or mention any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsA
Search contacts by name, email, phone number, or other fields.
Args: user_google_email (str): The user's Google email address. Required. query (str): Search query string (searches names, emails, phone numbers). page_size (int): Maximum number of results to return (default: 30, max: 30).
Returns: str: Matching contacts with their basic information.
| 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?
No annotations are provided, so the description carries the disclosure burden. It explains matching behavior, the return type, and the page_size cap of 30. It does not explicitly state that this is read-only or that authentication must already exist, but the verb 'search' makes the non-mutating intent reasonably clear.
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 summary is front-loaded and the Args/Returns structure is easy to scan. There is minor redundancy between 'name, email, phone number' in the summary and 'searches names, emails, phone numbers' in the query parameter description, but it is still concise and useful.
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 low-complexity search tool, the description covers the required user identifier, query semantics, and result limit. It could add a note about when to prefer list_contacts or whether the returned string is plain text or JSON, but these are minor gaps, and 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 input schema has 0% description coverage, so the description fully compensates by documenting all three parameters: user_google_email (required), query (searchable fields), and page_size (default and max). This adds real meaning beyond what the 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 states a specific verb ('Search'), a resource ('contacts'), and searchable fields ('name, email, phone number, or other fields'). This clearly distinguishes it from sibling tools like list_contacts and get_contact.
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 intended use is implied: use this when you need to find contacts by a query rather than listing all contacts or retrieving a specific contact by ID. However, it never explicitly names alternatives or states when not to use this tool, so the agent must infer the boundary.
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"). sites (Optional[List[str]]): List of sites/domains to restrict search to (e.g., ["example.com", "docs.example.com"]). When provided, results are limited to these sites.
Returns: str: Formatted search results including title, link, and snippet for each result.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| num | No | ||
| safe | No | off | |
| sites | No | ||
| 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?
No annotations are provided, so the description carries the behavioral disclosure burden. It clearly frames the operation as a read-only search and states the output format, but it does not mention authentication prerequisites beyond the required email field, custom search engine configuration, rate limits, or pagination behavior. This is adequate but not deeply transparent.
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 purpose is front-loaded in one sentence, followed by a well-organized Args block and a Returns line. Each parameter gets one focused line with useful detail; there is no filler. The length is proportional to the tool's 13 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?
Parameter documentation is thorough and the return format is defined, which covers most of what an agent needs to call the tool. The main gap is the absence of any mention of the required Google auth state or the custom search engine context, especially given there is no annotation coverage and a large sibling toolset.
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?
Every parameter is individually documented with type, default, meaning, and often concrete examples, such as date_restrict='d5', language='lang_en', and sites as a list of domains. This fully compensates for the 0% schema description coverage and adds substantial meaning beyond raw property 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 opens with a clear verb and resource: 'Performs a search using Google Custom Search JSON API.' It also specifies the return shape ('title, link, and snippet'), which makes the tool's function unambiguous and distinguishes it from sibling search tools like search_gmail_messages or search_drive_files by naming the custom web-search API.
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 API name and the general search context, but the description never explicitly states when to prefer this tool over sibling search tools, nor does it mention exclusions or alternatives. There is no 'use this for web search, not Gmail/Drive/Docs' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsB
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 must carry behavioral disclosure; it does say the search uses Drive API, applies a mimeType filter, and returns a formatted list. It does not mention auth prerequisites, pagination through page_size, or how the query is interpreted, leaving notable 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 short and front-loaded with the main action, and the return line is not excessive. It could drop the redundant return-type note since an output schema exists, so it earns 4 rather than 5.
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 schema descriptions, and no annotations, the description is incomplete: it lacks parameter semantics, auth context, and guidance on behavior or alternatives. It leaves enough ambiguity that an agent would need to infer or ask about page_size and user_google_email.
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 only clarifies that query is a name-based search term. It does not explain user_google_email's role (which account to search) or page_size behavior, so it fails to compensate for 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 opening sentence uses a specific verb ('Searches'), targets 'Google Docs', and explains the Drive API mimeType filter, which distinguishes this from broad Drive search siblings like search_drive_files. The resource and scope are immediately clear.
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 use case—find Google Docs by name—but never says when to prefer this tool over alternatives such as search_drive_files or list_docs_in_folder. No exclusions or 'use X instead' guidance is provided.
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.
page_token (Optional[str]): Page token from a previous response's nextPageToken to retrieve the next page of results.
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.
file_type (Optional[str]): Restrict results to a specific file type. Accepts a friendly
name ('folder', 'document'/'doc', 'spreadsheet'/'sheet',
'presentation'/'slides', 'form', 'drawing', 'pdf', 'shortcut',
'script', 'site', 'jam'/'jamboard') or any raw MIME type
string (e.g. 'application/pdf'). Defaults to None (all types).
detailed (bool): Whether to include size, modified time, and link in results. Defaults to True.
Returns: str: A formatted list of found files/folders with their details (ID, name, type, and optionally size, modified time, link). Includes a nextPageToken line when more results are available.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| corpora | No | ||
| detailed | No | ||
| drive_id | No | ||
| file_type | No | ||
| page_size | No | ||
| page_token | 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 provided, the description carries the full burden and largely delivers. It discloses the return format ('formatted list of found files/folders'), pagination behavior via nextPageToken, and the conditional interaction between drive_id and corpora. It also documents behavioral defaults for page_size, include_items_from_all_drives, and detailed. Minor omissions: no mention of rate limits or auth requirements, though the required user_google_email implicitly signals authenticated access.
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 purpose sentence is front-loaded and followed by a disciplined Args/Returns structure. Every parameter entry earns its place because the schema provides no descriptions, so the length is appropriate rather than bloated. There is no filler, repetition, or irrelevant detail.
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?
Operationally complete for a complex 9-parameter tool with interacting parameters (drive_id ↔ corpora ↔ include_items_from_all_drives), covering defaults, pagination, filtering, and output format; an output schema also exists. The gap is tool-selection context: how search_drive_files relates to list_drive_items, search_docs, or get_drive_file_content is never addressed, which matters given the extensive sibling list.
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?
At 0% schema description coverage, the description fully compensates by documenting all 9 parameters with meaning beyond bare type/default. file_type even enumerates accepted friendly names and gives a raw MIME example; drive_id and corpora explain conditional behavior and preferred values; page_token explains how to paginate. This is exemplary compensation for a schema that carries no 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?
States a specific verb and resource: 'Searches for files and folders within a user's Google Drive, including shared drives.' The scope qualifier ('including shared drives') adds useful precision beyond a generic search statement. However, it doesn't explicitly differentiate from siblings like search_docs or list_drive_items, so it misses the top criterion for 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 on when to choose this tool over siblings such as list_drive_items or search_docs, and no exclusions or conditions are stated. The only directional advice is parameter-level ('Prefer 'user' or 'drive' over 'allDrives' for efficiency'), which addresses argument choice, not tool selection. With over 100 sibling tools, an agent must infer when a query-based search is the right entry point.
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, the description carries the full disclosure burden and does solid work: it states the return shape (Message IDs, Thread IDs, web links), the pagination contract via page_token, and the page_size default of 10. It omits auth prerequisites (start_google_auth is a sibling) and no-result behavior, but for a non-destructive search operation nothing surprising is hidden.
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?
Purpose is front-loaded in the first sentence, followed by return-value and pagination highlights, then clean Args and Returns sections. There is mild redundancy between the opening summary ('Returns both Message IDs and Thread IDs...') and the Returns paragraph, but every section earns its place given the 0% schema coverage the description must compensate for.
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 4-parameter tool with no annotations and an empty schema, the description covers purpose, all parameter semantics, return format, and the pagination loop end-to-end. The only notable omission is the auth state required (sibling start_google_auth hints this matters), which is minor for a read-only search 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 fully compensates by documenting all four parameters with operational detail: query supports 'standard Gmail search operators,' page_token is tied to 'next_page_token from a previous response,' page_size has an explicit default, and user_google_email is marked Required. This adds meaning well 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?
States a specific verb and resource — 'Searches messages in a user's Gmail account' — and clarifies it returns Message IDs, Thread IDs, and web verification links, which cleanly separates it from content-fetching siblings like get_gmail_message_content and Chat's search_messages. An agent can tell what this tool does without opening the schema.
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 rather than stated: the description positions the tool as a search-and-verify step ('for manual verification') with pagination support, but never names alternatives or exclusion conditions. An agent must infer that get_gmail_message_content or get_gmail_threads_content_batch would be the follow-up for actual content, since the description notes search only returns IDs and links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesC
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 carries the full burden of behavioral disclosure. It only states that a formatted list of matches is returned; it does not disclose authentication requirements, pagination behavior, the effect of the optional space_id, or whether search is limited to the authenticated user's accessible spaces. For a search tool with no annotation coverage, key behavioral traits are missing.
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 front-loaded, with the core purpose stated in the first sentence and the return type in the second. There is no filler or repetition. However, the returned type line adds little value beyond the output schema and might have been better used for behavioral or parameter details.
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 4 parameters, no annotations, and an output schema, the description is too sparse to fully guide an agent. It omits prerequisites (e.g., authentication), the meaning of optional parameters, pagination behavior, and how results are ordered or scoped. The output schema covers return values partially, but the absence of usage context makes the definition incomplete.
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 and the tool description adds no parameter-specific meaning. While 'by text content' hints at the query parameter, the roles of space_id, page_size, and user_google_email are not explained. Parameter names and defaults provide some self-evidence, but the description does not compensate for the complete 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 operation ('Searches for messages'), the resource scope ('in Google Chat spaces'), and the method ('by text content'). It distinguishes itself from Gmail search siblings by explicitly naming Google Chat spaces, and from get_messages which implies listing rather than searching. However, it does not explicitly contrast with any sibling tool, so it falls slightly 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?
There is no guidance on when to use this tool versus alternatives such as get_messages, search_gmail_messages, or list_spaces. No scenarios, prerequisites (like start_google_auth), or exclusions are provided. The usage context is only implicit in the name and description, which is insufficient.
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 with optional attachments. Supports Gmail's "Send As" feature to send from configured alias addresses.
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'. attachments (Optional[List[Dict[str, str]]]): Optional list of attachments. Each dict can contain: Option 1 - File path (auto-encodes): - 'path' (required): File path to attach - 'filename' (optional): Override filename - 'mime_type' (optional): Override MIME type (auto-detected if not provided) Option 2 - Base64 content: - 'content' (required): Standard base64-encoded file content (not urlsafe) - 'filename' (required): Name of the file - 'mime_type' (optional): MIME type (defaults to 'application/octet-stream') cc (Optional[str]): Optional CC email address. bcc (Optional[str]): Optional BCC email address. from_name (Optional[str]): Optional sender display name. If provided, the From header will be formatted as 'Name '. from_email (Optional[str]): Optional 'Send As' alias email address. The alias must be configured in Gmail settings (Settings > Accounts > Send mail as). If not provided, the email will be sent from the authenticated user's primary email address. user_google_email (str): The user's Google email address. Required for authentication. thread_id (Optional[str]): Optional Gmail thread ID to reply within. When provided, sends a reply. in_reply_to (Optional[str]): Optional RFC Message-ID of the message being replied to (e.g., 'message123@gmail.com'). references (Optional[str]): Optional chain of RFC Message-IDs for proper threading (e.g., 'msg1@gmail.com msg2@gmail.com').
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 with a custom display name
send_gmail_message(to="user@example.com", subject="Hello", body="Hi there!", from_name="John Doe")
# Send an HTML email
send_gmail_message(
to="user@example.com",
subject="Hello",
body="<strong>Hi there!</strong>",
body_format="html"
)
# Send from a configured alias (Send As)
send_gmail_message(
to="user@example.com",
subject="Business Inquiry",
body="Hello from my business address...",
from_email="business@mydomain.com"
)
# 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 an email with attachments (using file path)
send_gmail_message(
to="user@example.com",
subject="Report",
body="Please see attached report.",
attachments=[{
"path": "/path/to/report.pdf"
}]
)
# Send an email with attachments (using base64 content)
send_gmail_message(
to="user@example.com",
subject="Report",
body="Please see attached report.",
attachments=[{
"filename": "report.pdf",
"content": "JVBERi0xLjQK...", # base64 encoded PDF
"mime_type": "application/pdf"
}]
)
# 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. | |
| from_name | No | Optional sender display name (e.g., 'Peter Hartree'). If provided, the From header will be formatted as 'Name <email>'. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| from_email | No | Optional 'Send As' alias email address. Must be configured in Gmail settings (Settings > Accounts > Send mail as). If not provided, uses the authenticated user's email. | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| attachments | No | Optional list of attachments. Each can have: "path" (file path, auto-encodes), OR "content" (standard base64, not urlsafe) + "filename". Optional "mime_type". Example: [{"path": "/path/to/file.pdf"}] or [{"filename": "doc.pdf", "content": "base64data", "mime_type": "application/pdf"}] | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| in_reply_to | No | Optional RFC Message-ID of the message being replied to (e.g., '<message123@gmail.com>'). | |
| 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 disclosure burden and meets it: it states that the tool actually sends email, describes reply behavior via thread_id/in_reply_to/references, explains attachment auto-encoding vs raw base64, notes mime defaulting, and calls out auth and alias configuration 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 structure is strong: purpose first, then Args, Returns, Examples. However, the Args section largely duplicates the input-schema content and the nine examples, while instructive, make the description longer than necessary for the information conveyed.
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 13-parameter sending tool, the description covers nearly every operational aspect: auth, aliases, threading, attachments, body formats, and return value. It is slightly incomplete in not mentioning the prerequisite start_google_auth flow or explicitly steering agents toward draft_gmail_message when the user wants a draft rather than an immediate send.
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?
Even though schema coverage is 92%, the description adds meaningful semantics beyond the schema: 'path' auto-encodes, base64 must be standard (not urlsafe), mime_type auto-detected, 'from_name' formats the From header as 'Name <email>', and the alias must be configured in Gmail settings. The examples make non-obvious combinations concrete.
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 first line states a specific verb and resource: 'Sends an email using the user's Gmail account.' It then enumerates the exact behaviors (new emails, replies, attachments, Send As aliases), making it easy to distinguish from sibling Gmail tools like search_gmail_messages or draft_gmail_message.
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?
Clear context is provided for when to use the tool: sending a new message, replying within a thread, using CC/BCC, sending HTML, or using a Send As alias. It does not explicitly name alternatives such as draft_gmail_message or chat send_message, so it misses the 'when-not/alternatives' requirement for a 5.
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.
Args: thread_name: Reply in an existing thread by its resource name (e.g. spaces/X/threads/Y). thread_key: Reply in a thread by app-defined key (creates thread if not found).
Returns: str: Confirmation message with sent message details.
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | Yes | ||
| thread_key | No | ||
| thread_name | 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?
With no annotations, the description carries the full burden. It does disclose the message-sending behavior, the return type (confirmation string), and the side-effect of creating a thread when using thread_key. However, it omits permission requirements, failure behavior, rate limits, and what happens if the space is invalid—details expected for a mutation tool with no annotations.
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 with the core action, and uses a clear Args/Returns structure with no filler. It loses a point because the Args section is incomplete (only two of five parameters are listed), which could mislead an agent into thinking those are the only relevant inputs.
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 having an output schema for the return value, the description is incomplete for a 5-parameter tool with zero schema coverage and no annotations. It fails to explain the three required parameters, provides no cross-references to list_spaces or get_messages for finding a space_id, and does not mention authentication context. An agent would struggle to invoke this tool correctly based on this definition alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all parameters. It only explains thread_name and thread_key, and leaves the three required parameters (user_google_email, space_id, message_text) completely undefined. An agent cannot reliably infer what values to provide for these required fields from the description alone.
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 'Sends a message to a Google Chat space,' which states a specific verb and resource. It clearly distinguishes this tool from Gmail-related senders and Google Chat read/reaction tools. The reply behavior via thread_name/thread_key adds precision.
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 offers some in-tool guidance by explaining when to use thread_name vs thread_key, including the side-effect that thread_key creates a thread if not found. However, it gives no guidance on when to use send_message instead of sibling tools like create_reaction or get_messages, and no explicit exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_drive_file_permissionsA
Sets file-level sharing settings and controls link sharing for a Google Drive file or folder.
This is a high-level tool for the most common permission changes. Use this to toggle "anyone with the link" access or configure file-level sharing behavior. For managing individual user/group permissions, use share_drive_file or update_drive_permission instead.
Args: user_google_email (str): The user's Google email address. Required. file_id (str): The ID of the file or folder. Required. link_sharing (Optional[str]): Control "anyone with the link" access for the file. - "off": Disable "anyone with the link" access for this file. - "reader": Anyone with the link can view. - "commenter": Anyone with the link can comment. - "writer": Anyone with the link can edit. writers_can_share (Optional[bool]): Whether editors can change permissions and share. If False, only the owner can share. Defaults to None (no change). copy_requires_writer_permission (Optional[bool]): Whether viewers and commenters are prevented from copying, printing, or downloading. Defaults to None (no change).
Returns: str: Summary of all permission changes applied to the file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | ||
| link_sharing | 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, the description carries the behavioral disclosure burden. It clearly identifies this as a mutation, explains the effect of each optional setting, states that null means no change, and says it returns a summary of changes. It does not discuss side effects such as making the file publicly accessible or whether existing permissions are overwritten, but it is far more transparent than a minimal mutation description.
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, then gives clear usage routing before moving into a structured Args section. Every sentence adds value, and the parameter documentation is detailed without being bloated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with five parameters and no annotations, it covers purpose, alternatives, defaults, and return type. The main gap is that the required user_google_email is not explained in context: why it is needed and how it relates to the file being modified, so an agent may not know exactly whose email to supply.
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 strongly: every parameter gets a custom explanation. link_sharing has value-by-value effects, and both boolean parameters get their consequences and default behavior. The only terse parameter is user_google_email, but it still identifies the expected value and requiredness.
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: 'Sets file-level sharing settings and controls link sharing for a Google Drive file or folder.' It also positions itself as a high-level tool for common permission changes, which distinguishes it from the more granular sibling permission 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?
It explicitly says when to use this tool: to toggle 'anyone with the link' access or configure file-level sharing behavior. It also names the alternatives for a different case: 'For managing individual user/group permissions, use share_drive_file or update_drive_permission instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_publish_settingsB
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?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. It does not mention side effects beyond updating settings, such as whether existing publish settings are overwritten, whether authentication is required, or whether viewers' access is immediately affected. The Returns line confirms a success message but does not explain failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured with a purpose sentence, parameter list, and return type. There is no filler, and the key 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 simple four-parameter tool, the description covers purpose, parameters, and return value. However, it lacks usage context, behavioral caveats, and any note about required authentication state, which leaves the definition minimally adequate rather than 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 compensate. The Args section provides clear meaning for all four parameters, including requiredness and defaults, which adds value beyond the bare schema property 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 clear verb and resource: 'Updates the publish settings of a form.' This is specific enough to identify the tool's core action, though it does not explicitly differentiate it from sibling tools like batch_update_form.
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, when not to use it, or what prerequisites are needed. The description only states what the tool does, 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.
start_google_authA
Manually initiate Google OAuth authentication flow.
NOTE: This is a legacy OAuth 2.0 tool and is disabled when OAuth 2.1 is enabled. 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 | john.doe@gmail.com |
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 behavioral disclosure burden. It discloses that this is a legacy OAuth 2.0 tool, that it is disabled when OAuth 2.1 is enabled, that authentication is normally automatic, and that manual initiation is only for specific retry or proactive cases. This is rich behavioral context beyond a simple action 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 and front-loaded with the core purpose, followed by a critical legacy note, explicit usage conditions, and a helpful redirect to normal behavior. Every sentence contributes necessary context, and the numbered conditions make the guidance easy for an agent 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 usage context and fallback behavior are thoroughly explained, and an output schema exists so return values do not need to be covered. However, the description omits essential parameter semantics: what values 'service_name' accepts and what 'user_google_email' means. For a tool with a required parameter and no schema descriptions, this is a clear completeness 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?
Schema description coverage is 0% and the description provides no explanation of the two parameters. The tool requires 'service_name' and has an optional 'user_google_email', but the description never clarifies what service names are valid or what role the email plays. The description adds no meaning beyond the raw 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 explicitly states the action ('Manually initiate Google OAuth authentication flow') and the specific resource (OAuth authentication). It clearly distinguishes this tool from the sibling workspace tools by framing it as an authentication utility rather than a Gmail, Drive, Docs, or Calendar 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?
The description provides explicit when-to-use guidance with a numbered list of three specific conditions, and also explains when NOT to use it: automatic authentication normally handles the flow and users should simply call the target Google Workspace tool. This is exemplary usage guidance that leaves little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_doc_tabA
Renames a tab in a Google Doc.
Args: user_google_email: User's Google email address document_id: ID of the document to update tab_id: ID of the tab to rename (use inspect_doc_structure to find tab IDs) title: New title for the tab
Returns: str: Confirmation message with document link
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| tab_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?
With no annotations, the description carries the full disclosure burden. It does state the mutating behavior ('Renames') and the return value (confirmation message with document link), but it does not mention authorization requirements, failure conditions, or edge cases. This is reasonable for a simple rename operation but not fully transparent.
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 purpose sentence followed by Args and Returns sections. Every line serves a purpose, and the format makes it easy for an agent to scan and extract the needed information 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?
For a simple four-string-parameter rename operation, this description is complete: it explains the action, all parameters, a discovery method for tab_id, and the return value. Given the lack of annotations, it provides enough detail for an agent to invoke the tool correctly without additional inference.
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 no descriptions for any of the four parameters, but the description documents each one meaningfully. It also adds a valuable cross-reference for tab_id, telling the agent to use inspect_doc_structure to discover valid tab IDs, fully compensating 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 opening line, 'Renames a tab in a Google Doc,' states a specific verb, resource, and operation. It clearly distinguishes this tool from siblings like insert_doc_tab and delete_doc_tab, and its scope is obvious even among the many Google-doc-related 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 clear operating context and explicitly points users to inspect_doc_structure for finding tab IDs, which is valuable guidance. It does not explicitly enumerate when not to use the tool or compare against insert_doc_tab/delete_doc_tab, so it falls just short of a perfect usage-guideline score.
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?
There are no annotations, so the description must disclose behavior on its own. It does state that the operation is mutating, returns a confirmation string, and gives a useful caveat that changing mime_type may require content upload. It does not discuss side effects of trashed or parent changes, nor permission requirements, leaving part of the behavioral burden unmet.
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 summary is front-loaded, followed by a well-structured Args section and a Returns line. The length is justified by the 12 parameters, and none of the prose is 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?
With 12 parameters and no annotations, the description covers all inputs, required flags, return type, and one important caveat. It is nearly complete, though it could explicitly state that unspecified fields are left unchanged and mention required user authorization.
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 the only source of parameter meaning. It explains all 12 parameters, marks the two required ones, clarifies comma-separated parent IDs, and adds a caveat on mime_type. This fully compensates for 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-resource pair: 'Updates metadata and properties of a Google Drive file.' This clearly distinguishes it from sibling tools like create_drive_file, copy_drive_file, or get_drive_file_content, and the parameter list reinforces the mutating update 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 first sentence gives a clear context: use this tool when updating Google Drive file metadata and properties. It does not name sibling alternatives or explicitly state when not to use it, such as using set_drive_file_permissions for permission-only changes, so it misses the 'exclusions' bar for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_paragraph_styleA
Apply paragraph-level formatting, heading styles, and/or list formatting to a range in a Google Doc.
This tool can apply named heading styles (H1-H6) for semantic document structure, create bulleted or numbered lists with nested indentation, and customize paragraph properties like alignment, spacing, and indentation. All operations can be applied in a single call.
Args: user_google_email: User's Google email address document_id: Document ID to modify start_index: Start position (1-based) end_index: End position (exclusive) - should cover the entire paragraph heading_level: Heading level 0-6 (0 = NORMAL_TEXT, 1 = H1, 2 = H2, etc.) Use for semantic document structure alignment: Text alignment - 'START' (left), 'CENTER', 'END' (right), or 'JUSTIFIED' line_spacing: Line spacing multiplier (1.0 = single, 1.5 = 1.5x, 2.0 = double) indent_first_line: First line indent in points (e.g., 36 for 0.5 inch) indent_start: Left/start indent in points indent_end: Right/end indent in points space_above: Space above paragraph in points (e.g., 12 for one line) space_below: Space below paragraph in points list_type: Create a list from existing paragraphs ('UNORDERED' for bullets, 'ORDERED' for numbers) list_nesting_level: Nesting level for lists (0-8, where 0 is top level, default is 0) Use higher levels for nested/indented list items
Returns: str: Confirmation message with formatting details
Examples: # Apply H1 heading style update_paragraph_style(document_id="...", start_index=1, end_index=20, heading_level=1)
# Create a bulleted list
update_paragraph_style(document_id="...", start_index=1, end_index=50,
list_type="UNORDERED")
# Create a nested numbered list item
update_paragraph_style(document_id="...", start_index=1, end_index=30,
list_type="ORDERED", list_nesting_level=1)
# Apply H2 heading with custom spacing
update_paragraph_style(document_id="...", start_index=1, end_index=30,
heading_level=2, space_above=18, space_below=12)
# Center-align a paragraph with double spacing
update_paragraph_style(document_id="...", start_index=1, end_index=50,
alignment="CENTER", line_spacing=2.0)| Name | Required | Description | Default |
|---|---|---|---|
| alignment | No | ||
| end_index | Yes | ||
| list_type | No | ||
| indent_end | No | ||
| document_id | Yes | ||
| space_above | No | ||
| space_below | No | ||
| start_index | Yes | ||
| indent_start | No | ||
| line_spacing | No | ||
| heading_level | No | ||
| indent_first_line | No | ||
| user_google_email | Yes | ||
| list_nesting_level | 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 behavioral disclosure burden. It provides useful behavior details: end_index is exclusive, heading_level 0 maps to NORMAL_TEXT, lists are created from existing paragraphs, and the return is a confirmation message. However, it does not disclose side effects like overwriting existing paragraph formatting, required permissions, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections: overview, Args, Returns, and Examples. It front-loads the core purpose and then provides necessary detail for 14 parameters. The five examples are helpful but slightly redundant; a couple of representative examples would have been enough.
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 14-parameter tool with no schema-level parameter descriptions and no annotations, the description is highly complete: it documents every parameter, provides defaults, gives return behavior, and shows usage patterns. It falls slightly short only in missing explicit usage boundaries versus doc-related sibling tools and in not stating side effects 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%, so the description fully compensates. Every parameter is explained with units, ranges, defaults, and contextual meaning—for example, line_spacing multipliers, indent values in points, list_nesting_level 0-8, and the mapping for heading_level. The varied examples further clarify parameter combinations.
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?
Clearly states a specific verb and resource: 'Apply paragraph-level formatting, heading styles, and/or list formatting to a range in a Google Doc.' The description distinguishes the tool's focus from generic text editing and element insertion, though it does not explicitly name or contrast sibling tools like modify_doc_text or batch_update_doc.
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 the tool through capabilities and examples, such as applying H1 headings, creating bulleted lists, and adjusting spacing. However, it provides no explicit guidance about when NOT to use it or which sibling tool to choose instead, so an agent must infer the boundary from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_script_contentA
Updates or creates files in a script project.
Args: service: Injected Google API service client user_google_email: User's email address script_id: The script project ID files: List of file objects with name, type, and source
Returns: str: Formatted string confirming update with file list
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| script_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 mention the core upsert behavior and the return value, but it does not disclose whether existing files with the same name are overwritten, what permissions are required, whether this affects deployments or versions, or any other side effects. 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 concise, front-loaded with the one-line purpose, and well structured with Args and Returns. The only minor weakness is that 'service: Injected Google API service client' appears in the Args list but is not part of the input schema, which could lead an agent to include it in a JSON call.
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 enough for a basic understanding, but it is incomplete for a mutation tool with no annotations and a minimal schema. The file object structure is under-specified: 'name, type, and source' are listed, but the allowed values for type and the meaning of source are not explained. It also does not clarify whether this replaces the entire script project or only the given files.
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 provides no property descriptions, so the description must compensate. It explains each schema parameter in plain language and identifies service as an injected client. It also specifies that files is a list of objects with name, type, and source, which adds meaning beyond the bare schema. However, it does not define allowed type values or the exact format of source.
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 exactly what the tool does: it 'Updates or creates files in a script project.' This is a specific verb-plus-resource statement that clearly differentiates it from siblings such as create_script_project, get_script_content, and run_script_function. The upsert nature is also explicitly communicated.
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 use case—modifying or adding files to an existing script project—but it does not explicitly say when to use this tool versus alternatives like get_script_content for reading or create_script_project for creating a new project. No exclusions or alternative conditions are provided.
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.
114 tool updates
v1.14.3- First observed
batch_modify_gmail_message_labels - First observed
batch_update_doc - First observed
batch_update_form - First observed
batch_update_presentation - First observed
check_drive_file_public_access - First observed
copy_drive_file - First observed
create_doc - First observed
create_drive_file - First observed
create_drive_folder - First observed
create_form - First observed
create_presentation - First observed
create_reaction - First observed
create_script_project - First observed
create_sheet - First observed
create_spreadsheet - First observed
create_table_with_data - First observed
create_version - First observed
debug_table_structure - First observed
delete_doc_tab - First observed
delete_script_project - First observed
download_chat_attachment - First observed
draft_gmail_message - First observed
export_doc_to_pdf - First observed
find_and_replace_doc - First observed
format_sheet_range - First observed
generate_trigger_code - First observed
get_contact - First observed
get_contact_group - First observed
get_doc_as_markdown - 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_script_content - First observed
get_script_metrics - First observed
get_script_project - First observed
get_search_engine_info - First observed
get_spreadsheet_info - First observed
get_task - First observed
get_task_list - First observed
get_version - First observed
import_to_google_doc - First observed
insert_doc_elements - First observed
insert_doc_image - First observed
insert_doc_tab - First observed
inspect_doc_structure - First observed
list_calendars - First observed
list_contact_groups - First observed
list_contacts - First observed
list_deployments - First observed
list_docs_in_folder - First observed
list_document_comments - First observed
list_drive_items - First observed
list_form_responses - First observed
list_gmail_filters - First observed
list_gmail_labels - First observed
list_presentation_comments - First observed
list_script_processes - First observed
list_script_projects - First observed
list_spaces - First observed
list_spreadsheet_comments - First observed
list_spreadsheets - First observed
list_task_lists - First observed
list_tasks - First observed
list_versions - First observed
manage_conditional_formatting - First observed
manage_contact - First observed
manage_contact_group - First observed
manage_contacts_batch - First observed
manage_deployment - First observed
manage_document_comment - First observed
manage_drive_access - First observed
manage_event - First observed
manage_gmail_filter - First observed
manage_gmail_label - First observed
manage_presentation_comment - First observed
manage_spreadsheet_comment - First observed
manage_task - First observed
manage_task_list - First observed
modify_doc_text - First observed
modify_gmail_message_labels - First observed
modify_sheet_values - First observed
query_freebusy - First observed
read_sheet_values - First observed
run_script_function - First observed
search_contacts - First observed
search_custom - 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_drive_file_permissions - First observed
set_publish_settings - First observed
start_google_auth - First observed
update_doc_headers_footers - First observed
update_doc_tab - First observed
update_drive_file - First observed
update_paragraph_style - First observed
update_script_content
TDQS
Scored across 114 tools
Multiple tools overlap significantly: list_drive_items and search_drive_files both list Drive files with similar filters, several Drive permission tools (get_drive_file_permissions, get_drive_shareable_link, check_drive_file_public_access, manage_drive_access, set_drive_file_permissions) cover the same sharing territory, and batch_update_doc duplicates modify_doc_text, find_and_replace_doc, insert_doc_elements, and tab management. While individual descriptions are detailed, an agent would often struggle to pick the right tool among these overlapping options.
Tool names are mostly snake_case with a verb_noun structure, but service prefixes are applied inconsistently: compare search_gmail_messages with generic search_messages and search_custom, or send_gmail_message with send_message. There is also a mixture of manage_*, modify_*, batch_update_*, and create_* patterns that, while readable, creates no strong predictable convention across the full set.
With 114 tools, this far exceeds the 50+ threshold for an extreme mismatch. The suite spans many Google services, but the count is bloated by redundant tools (batch_update_doc vs individual doc editors, overlapping Drive permission tools, manage_contact vs manage_contacts_batch) and would be far more usable split into per-service MCP servers.
Across the covered Google services, lifecycle coverage is generally strong: Gmail, Drive, Docs, Sheets, Calendar, Chat, Forms, Slides, Tasks, Contacts, Custom Search, and Apps Script all have read and write operations. Notable gaps exist—no calendar create/delete, no sheet deletion/rename, no permanent Drive delete—but these can often be worked around via existing tools like update_drive_file or Drive trash.
Maintenance
Related MCP Connectors
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Provides tools for searching Google Workspace documentation and much more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Workspace services (Gmail, Calendar, Drive, Docs, Sheets, Chat, Slides, People) through natural language using Claude Desktop, Claude Code CLI, and other MCP clients.4103MIT
- AlicenseBqualityAmaintenanceMCP server integrating multiple Google Workspace services including Gmail, Calendar, Drive, Sheets, Docs, Tasks, People, Forms, and Slides, enabling users to manage emails, events, files, documents, and more through natural language.15MIT
- AlicenseBqualityDmaintenanceProvides natural language control over Google Workspace services (Calendar, Drive, Gmail, Docs, Sheets, Slides, Forms, Tasks, Chat) via MCP, with OAuth 2.1 multi-user authentication.100MIT
- AlicenseAqualityBmaintenanceEnables natural language interaction with multiple Google accounts (Gmail, Drive, Calendar) from MCP-compatible clients like Claude.632072MIT