worksuite-mcp
Allows searching, reading, drafting, sending, and labeling emails in Gmail.
Allows reading schedules, creating and moving events, and checking free/busy in Google Calendar.
Provides tools to create and edit documents in Google Docs.
Enables searching files, reading content, uploading, sharing, and managing folders in Google Drive.
Allows creating and editing spreadsheets, reading and writing cells in Google Sheets.
Enables creating and editing presentations in Google Slides.
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., "@worksuite-mcpsummarize my unread emails"
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.
Worksuite MCP
Connect Claude (or any MCP client) to your Google Workspace. Worksuite MCP is a polished, batteries-included Model Context Protocol server that gives your AI assistant full access to Gmail, Google Drive, Docs, Sheets, Slides, Calendar, Forms, Tasks, Chat and Contacts, all through your own Google account and your own OAuth app. Your data stays yours.
It wraps the excellent open-source
workspace-mcp engine and adds a clean
launcher, a self-healing startup, and the setup guide below so you can be talking
to your inbox and Drive in a few minutes.
What you can do once it is connected
Gmail - search, read, draft, send, and label email.
Drive - search files, read content, upload, share, and manage folders.
Docs / Sheets / Slides - create and edit documents, read and write cells, build decks.
Calendar - read your schedule, create and move events, check free/busy.
Tasks, Forms, Chat, Contacts - full read/write across the rest of Workspace.
Around 120 tools in total. You talk to your AI in plain language ("find the invoice from Acme and forward it to finance") and it uses these tools to do it.
Related MCP server: google-connections-mcp
Requirements
macOS or Linux
uv(providesuvx). Install it with:curl -LsSf https://astral.sh/uv/install.sh | shA Google account
An MCP client. These instructions use Claude Code, but any MCP client works.
Step 1 - Get the code
git clone https://github.com/chadvdwww-hash/worksuite-mcp.git
cd worksuite-mcp
chmod +x bin/worksuite-mcp.shStep 2 - Create your Google OAuth app
Worksuite MCP signs in as you, using your own Google Cloud OAuth client. You create it once. It takes about five minutes.
Open the Google Cloud Console and create (or pick) a project.
Enable the APIs you want under APIs & Services → Library. At minimum enable: Gmail API, Google Drive API, Google Docs API, Google Sheets API, Google Slides API, Google Calendar API. (Enable Tasks, Forms, Chat and People APIs too if you want those tools.)
Go to APIs & Services → OAuth consent screen:
User type: External.
Fill in the app name (e.g. "Worksuite MCP") and your email.
Under Test users, add the Google account you will sign in with. This is required while the app is in Testing mode, or Google blocks the login with
403 access_denied.
Go to APIs & Services → Credentials → Create credentials → OAuth client ID:
Application type: Desktop app (or Web application).
If you pick Web application, add this authorized redirect URI:
http://localhost:8000/oauth2callbackDownload the client secret JSON.
Heads up on token lifetime: while your OAuth app is in Testing mode, Google expires the refresh token after 7 days, so you re-authenticate roughly weekly. Publish the app (OAuth consent screen → Publish app) to make it permanent.
Step 3 - Point Worksuite MCP at your credentials
Tell the server where your downloaded client secret lives:
export GOOGLE_CLIENT_SECRET_PATH="/absolute/path/to/your/client_secret.json"(You can also set GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET
directly instead of a file. Either way, keep these secret. They are gitignored.)
Step 4 - Register it with Claude Code
claude mcp add worksuite-mcp -- /absolute/path/to/worksuite-mcp/bin/worksuite-mcp.shThen check it:
claude mcp list
# worksuite-mcp: .../bin/worksuite-mcp.sh - ✔ ConnectedStep 5 - Sign in to Google (first run)
The first time your AI calls a Workspace tool, Worksuite MCP opens a Google sign-in page in your browser. Approve the scopes (you may see an "unverified app" warning because it is your personal app; click through to continue). After that your credentials are cached and reused automatically.
That's it. Ask your assistant to "list my recent Drive files" or "summarise my unread email" to confirm it works.
Good to know (saves you an hour)
Port 8000 must be free. The OAuth sign-in flow listens on
localhost:8000(it can roam up to 8004). The launcher auto-reaps stale Worksuite/Workspace instances holding those ports before each start, so a crashed session won't block the next one. If sign-in still fails with "port in use", something else is on 8000:lsof -nP -iTCP:8000 -sTCP:LISTEN.File uploads are sandboxed. Tools that import a local file only read from
~/.workspace-mcp/attachments/by default. Either copy the file there first, or setALLOWED_FILE_DIRS=/your/dirand restart the server.Avoid dots in new document titles. When creating a Doc from a file, a name like
Cal.com Setupgets truncated toCal. UseCal-com Setupand rename afterward if needed.Where credentials live. Once you sign in, tokens are stored under
~/.google_workspace_mcp/credentials/. Delete that file to force a fresh login.
How it works
Worksuite MCP is a thin wrapper. It pins the upstream workspace-mcp package,
applies its own branding and startup banner, runs a port-reaper so a crashed run
never blocks the next, then hands off to the upstream server which does the
Google API heavy lifting. Upgrading the engine is a one-line version bump in
pyproject.toml.
your AI client <-- MCP --> Worksuite MCP launcher --> Google Workspace APIsCredits
Built on workspace-mcp by Taylor
Wilsdon and contributors. Licensed under the MIT License (see LICENSE).
Available Tools
122 toolsappend_table_rowsAppend Table RowsA
Appends rows to a structured table in a Google Sheet. The rows are added to the end of the table body, automatically extending the table range.
Use list_sheet_tables first to find the table ID.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| table_id | Yes | The ID of the table to append to (get from list_sheet_tables). Required. | |
| values | Yes | 2D array of values to append. Each inner list is one row. Can be a JSON string or Python list. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-idempotent, non-destructive operation. The description adds useful behavioral context by specifying that rows are appended to the end of the table body and that the table range automatically extends. This clarifies the exact side effect without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the core action, and every sentence contributes: one defines the operation and behavior, the other provides the essential prerequisite. 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 simple append operation, the description is complete: it covers what the tool does, the side effect on the table range, and the required discovery step for table_id. The output schema handles return-value expectations, and annotations handle the safety profile, so no critical guidance 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 100%, so the schema fully documents all four parameters. The description only reinforces that table_id comes from list_sheet_tables, which is already stated in the schema's table_id description, so it adds no significant new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Appends rows to a structured table in a Google Sheet.' It also explains the distinctive behavior—rows are added to the end of the table body and the range is automatically extended—which clearly separates it from plain spreadsheet writers like modify_sheet_values or table creation 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 a concrete prerequisite: 'Use list_sheet_tables first to find the table ID,' which tells the agent the required preceding step. It does not explicitly discuss when not to use this tool or name alternatives, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_modify_gmail_message_labelsBatch Modify Gmail Message LabelsADestructive
Adds or removes labels from multiple Gmail messages in a single batch request.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| message_ids | Yes | A list of message IDs to modify. | |
| add_label_ids | No | List of label IDs to add to the messages. | |
| remove_label_ids | No | List of label IDs to remove from the messages. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a destructive, non-read-only operation, and the description matches that without contradicting it. The description adds the useful behavioral detail that this is a single batch request, but it does not disclose nuances like partial failure behavior or what happens if only message_ids are provided with no label 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?
The description is a single sentence with no fluff or repetition of schema details. It front-loads the core action and the distinguishing batch characteristic efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema descriptions, an output schema, and annotations covering mutability/destructiveness, the description is minimally sufficient. However, it could be more complete by explicitly signaling the singular sibling tool and clarifying batch behavior when add and remove arrays are both supplied.
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 100%, and each parameter already has a clear description. The tool description does not add additional meaning about parameter relationships, such as whether add_label_ids and remove_label_ids can be used simultaneously or whether at least one is expected.
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 ('Adds or removes'), a clear resource ('labels from multiple Gmail messages'), and a distinguishing mode ('in a single batch request'). This makes it easy to tell apart from the singular sibling tool 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 phrase 'multiple Gmail messages' and 'single batch request' imply that this tool is for bulk label modifications, but it does not explicitly say when to prefer it over modify_gmail_message_labels or mention any exclusions. Usage context is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_docBatch Update DocADestructive
Executes multiple low-level document operations in a single atomic batch update.
For normal header/footer text, prefer update_doc_headers_footers. Only use create_header_footer here for advanced section-break layouts.
RECOMMENDED WORKFLOW FOR BUILDING DOCUMENTS:
To avoid index calculation errors, build documents in phases:
PHASE 1 - INSERT ALL CONTENT (use end_of_segment=true, no index math): Append text, section breaks, and page breaks sequentially. Each operation appends to the end of the body. No index needed. Example batch: [ {"type": "insert_text", "end_of_segment": true, "text": "Report Title\n"}, {"type": "insert_text", "end_of_segment": true, "text": "\nExecutive Summary\n"}, {"type": "insert_text", "end_of_segment": true, "text": "Revenue grew 15%.\n"}, {"type": "insert_section_break", "end_of_segment": true, "section_type": "NEXT_PAGE"}, {"type": "insert_text", "end_of_segment": true, "text": "Detailed Analysis\n"} ]
PHASE 2 - CREATE HEADERS/FOOTERS (if needed): For normal header/footer text, use update_doc_headers_footers (it auto-creates if missing and writes the content for you). Only include create_header_footer operations in a batch when you are intentionally managing advanced section-break-specific layouts.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| operations | Yes | List of operation dicts. Each operation MUST have a 'type' field. All operations accept an optional 'tab_id' to target a specific tab. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses atomic batch behavior and warns about index calculation errors, recommending end_of_segment=true. It adds context beyond annotations (destructiveHint=true) by explaining how to avoid pitfalls. It could be more explicit about failure handling but is generally good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy and includes a detailed recommended workflow with examples. While well-structured with sections and bold headings, it could be more concise. The information is valuable but verbose, earning a mid-score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple operation types) and the presence of annotations and an output schema, the description covers essential aspects: atomicity, alternative tools, and a workflow to avoid errors. It is complete enough for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description provides additional context on usage patterns (e.g., end_of_segment vs index) and includes example operations, which adds value but does not systematically describe each parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes multiple low-level document operations in a single atomic batch update. It distinguishes itself from sibling tools like update_doc_headers_footers by specifying when to use each, providing a specific verb ('batch update') and resource ('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 explicitly guides when to use this tool versus alternatives, e.g., 'For normal header/footer text, prefer update_doc_headers_footers. Only use create_header_footer here for advanced section-break layouts.' It also provides a detailed recommended workflow with phases to avoid index calculation errors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_formBatch Update FormADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| form_id | Yes | The ID of the form to update. | |
| requests | Yes | 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) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this tool as destructive and non-read-only; the description adds useful context by specifying that deleting form items, updating metadata, and changing settings are all possible. It does not contradict the annotations and gives the agent a clearer picture of 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 two sentences, front-loaded with the core purpose, and every sentence adds value. The supported-operation summary is compact and avoids redundant detail 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 mutation tool with destructive annotations and a 100%-covered schema, the description is largely complete. It could mention execution semantics such as request ordering, atomicity, or auth prerequisites, but the existing annotations and schema cover the main safety and parameter needs.
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 100%, so the input schema already documents form_id, user_google_email, and the supported request types inside the requests parameter. The description summarizes the same operations but does not add meaning beyond what the schema already 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 and resource: 'Apply batch updates to a Google Form.' It enumerates the supported operations and adds 'primary method for modifying form content after creation,' which clearly separates it from create_form, get_form, and set_publish_settings among the 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 provides clear context: use this tool after form creation to modify content, metadata, or settings. It does not explicitly name alternatives or state when not to use it, but the 'primary method' phrasing and scope are enough to orient an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_update_presentationBatch Update PresentationCDestructive
Apply batch updates to a Google Slides presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| presentation_id | Yes | The ID of the presentation to update. | |
| requests | Yes | List of update requests to apply. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation risk is known. However, the description adds no behavioral detail beyond that: it does not mention atomicity, partial failure, irreversible changes, or what kinds of modifications can be applied.
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 efficient and clear, though slightly under-specified for the complexity of the operation.
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 destructive, open-ended batch operation with an unstructured requests array, but the description is only one generic sentence. It leaves out valid request categories, failure semantics, and usage context. The presence of an output schema covers return values, not operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% parameter coverage, so the bar for the description is lower. The description adds no parameter-level context beyond the schema, and the open-ended 'requests' array in particular would benefit from an example or explanation of the expected shape.
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 ('apply batch updates') and the resource ('Google Slides presentation'), which is enough to differentiate it from read/create tools like get_presentation and create_presentation, and from the Docs/Forms batch update siblings by resource. It does not enumerate update types or scope, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as create_presentation, get_presentation, or batch_update_doc. An agent must infer from the name and sibling list that this is the choice for batch-mutating an existing Slides presentation.
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_accessCheck Drive File Public AccessARead-onlyIdempotent
Searches for a file by name and checks if it has public link sharing enabled.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_name | Yes | The name of the file to check. | |
| drive_id | No | ID of the shared drive to scope the search to. When set, the underlying files.list call uses corpora='drive' and the given driveId, which is required to reliably find files that live only in that shared drive. When None, behaviour is unchanged (default API corpora applies). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that the search is performed by file name rather than ID, but it does not disclose additional behavioral nuance such as what counts as 'public link sharing', how the user email is used, or whether only the first match is evaluated. No contradiction with annotations 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 a single, front-loaded sentence with no filler. It communicates the essential action and outcome immediately, and every word contributes to the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the strong annotations, 100% schema coverage, and the presence of an output schema, the description covers the core intent well. The only notable gap is the potential ambiguity around what exactly qualifies as 'public link sharing' and whether the tool returns a simple boolean or detailed sharing information, but the output schema likely addresses the return format.
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 100%, including a notably detailed explanation of the drive_id parameter and its effect on the underlying files.list call. The description itself adds no new parameter-level meaning beyond restating that the tool searches by file name and inspects public link sharing, so the schema carries the load.
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: 'Searches for a file by name and checks if it has public link sharing enabled.' This clearly distinguishes it from siblings like get_drive_file_permissions or get_drive_shareable_link, since the focus is specifically on detecting public link sharing rather than listing permissions or retrieving links.
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 usage context: use this tool when you need to verify whether a file is publicly shareable via link. However, it does not explicitly state when not to use it or name alternatives such as get_drive_file_permissions or get_drive_shareable_link, leaving the routing decision to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_drive_fileCopy Drive FileB
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The ID of the file to copy. Required. | |
| new_name | No | New name for the copied file. If not provided, uses "Copy of [original name]". | |
| parent_folder_id | No | The ID of the folder where the copy should be created. Defaults to 'root' (My Drive). | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (non-read-only, non-idempotent, non-destructive), so the bar is lower. The description adds useful context — the copy 'maintains all formatting and content from the original' and can be placed in a new location — but omits copy-specific behavioral caveats such as whether sharing settings or permissions are inherited by the copy, which agents often need for Drive operations. No contradiction with 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?
Three compact sentences with the core purpose front-loaded in the first. The third sentence earns its place by adding the fidelity guarantee (formatting and content preserved), while the second is largely redundant with the first plus the schema — a minor flaw, not a structural problem.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and 100% parameter coverage give the agent a complete input contract, and annotations cover mutability and safety, so return values need no explanation. What is missing are copy-specific caveats that matter for correct invocation: whether permissions are inherited by the copy, whether a copied native Google file stays in its original format, and the access required on the source file.
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 100%, so the baseline is 3: the schema already documents file_id, new_name including the 'Copy of [original name]' default, parent_folder_id defaulting to root, and user_google_email. The description restates 'new location' and 'optional new name' at a high level but adds no meaning beyond what the schema's parameter descriptions already 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 first sentence names a specific verb+resource: 'Creates a copy of an existing Google Drive file,' which clearly separates it from creation tools like create_drive_file. However, it never explicitly names a sibling it is NOT, and the second sentence's reference to 'the template document' slightly muddies whether this operates on one specific template or on any arbitrary 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?
No sentence tells an agent when to choose this tool versus alternatives such as create_drive_file (blank new file), import_to_google_doc (converting imports), update_drive_file (editing an existing file), or get_drive_file_content (reading). Among roughly 100 sibling tools, the only routing signal is the word 'copy' itself, which is definitional rather than actual usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_calendarCreate CalendarA
Creates a new secondary Google Calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| summary | Yes | The title/name of the new calendar. | |
| description | No | An optional description for the calendar. | |
| timezone | No | IANA timezone for the calendar (e.g. 'America/New_York'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a non-read-only, non-idempotent, non-destructive external write, and the description aligns with those hints. The description adds no extra behavioral context such as duplicate-calendar side effects or permission requirements, but the structured annotations carry enough of that burden to make the gap moderate rather than severe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short sentence with no filler, starts with the operative verb, and states the core resource and scope immediately. Every word earns its place, and nothing is redundant with the tool name or title.
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 scalar-parameter create operation with full schema coverage and an output schema, this description is nearly sufficient for correct invocation. The main missing elements are usage context and side-effect nuance, but those are partly addressed by annotations and do not block an agent from 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?
The schema documents all four parameters with descriptions and defaults, so the 100% schema coverage means the description does not need to compensate. The description adds no parameter-specific nuance, so the schema-driven baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Creates') and a specific resource ('a new secondary Google Calendar'), which clearly distinguishes it from list_calendars or event-management tools. The word 'secondary' adds important scope by indicating this tool does not create or modify the primary calendar.
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 list_calendars or manage_event. It also does not mention prerequisites like Google authentication or any exclusions beyond the word 'secondary', leaving the agent to infer usage context 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_docCreate DocA
Creates a new Google Doc and optionally inserts initial content.
After creation, the document body starts at index 1. A new empty doc has total length 2 (one section break at index 0, one newline at index 1).
To build a rich document after creation, use batch_update_doc with insert_text operations using end_of_segment=true to append content sequentially without calculating indices. Then call inspect_doc_structure to get exact positions before applying formatting in a separate batch call.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| title | Yes | Title of the new document | |
| content | No | Optional initial plain text content to insert |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations by revealing important internal details: the body starts at index 1, a new empty doc has total length 2 with a section break at index 0 and newline at index 1. This is exactly the kind of behavioral context that helps an agent understand side effects and subsequent index calculations. No contradiction with 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 mostly concise and front-loaded with the primary purpose. It includes useful operational details, though the inner-document index explanation could be tightened slightly. Overall, every sentence earns its place and no filler exists.
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 the tool has an output schema, fully described parameters, and annotations, the description provides complete context for correct invocation. It covers creation behavior, initial content limitations, and a clear follow-up workflow. Nothing critical is missing for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add significant parameter-specific semantics beyond what the schema already documents. It does clarify that the content parameter is for initial plain text and that rich content should be built with batch_update_doc, but this is contextual rather than parameter-specific.
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 new Google Doc and optionally inserts initial content.' This clearly states the tool's function and differentiates it from siblings like import_to_google_doc and create_drive_file by explicitly focusing on creating a Google Doc from scratch.
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 workflow guidance: after creation, use batch_update_doc with insert_text operations and end_of_segment=true, then inspect_doc_structure before formatting. It does not explicitly compare create_doc with alternative creation tools like import_to_google_doc, but the post-creation workflow is strong enough to guide an agent on when and how to proceed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_drive_fileCreate 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_name | Yes | The name for the new file. | |
| content | No | If provided, the content to write to the file. | |
| folder_id | No | The ID of the parent folder. Defaults to 'root'. For shared drives, this must be a folder ID within the shared drive. | root |
| mime_type | No | The MIME type of the file. Defaults to 'text/plain'. | text/plain |
| fileUrl | No | If provided, fetches the file content from this URL. Supports file://, http://, and https:// protocols. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false). The description adds value by disclosing the two content input modes (direct content or fileUrl) and support for shared drives, which is not apparent from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and shared drive support, second lists the two content modes. No redundancy or unnecessary 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?
Covers core functionality (creation, shared drives, content sources) but lacks details like prerequisites or error handling. However, output schema exists and annotations are present, so the description is fairly complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description mentions 'direct content or fileUrl' and 'shared drives' but does not add new parameter semantics beyond reinforcing what the schema states.
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 it creates a new file in Google Drive, supporting shared drives and two content modes. This clearly differentiates it from sibling tools like create_doc (for Google Docs) or create_drive_folder (for folders).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., when to use create_doc for Docs). The description implies generic file creation but does not contrast with other create tools, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_drive_folderCreate Drive FolderA
Creates a new folder in Google Drive, supporting creation within shared drives.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| folder_name | Yes | The name for the new folder. | |
| parent_folder_id | No | The ID of the parent folder. Defaults to 'root'. For shared drives, use a folder ID within that shared drive. | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey the key behavioral traits: non-read-only, non-idempotent, non-destructive, open-world. The description confirms the mutating creation behavior and adds shared-drive support as extra context. It does not detail auth requirements or side effects, but the annotation coverage lowers the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the core action first and adds the shared-drive qualifier without redundancy. It contains no filler and does not repeat schema or annotation 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 straightforward create operation, the description, schema, and annotations together give an agent enough to invoke the tool correctly: required parameters are documented, safety traits are annotated, and an output schema exists. Minor details like permission prerequisites are unstated but are not essential for basic selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description's shared-drive mention aligns with and echoes the existing parent_folder_id schema note rather than adding materially new parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Creates a new folder in Google Drive.' It clearly distinguishes from siblings like create_drive_file by limiting the action to folders, and it adds the meaningful shared-drive capability without ambiguity.
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 to use the tool: creating folders in Google Drive, including within shared drives. It does not explicitly name alternatives or exclusions, but the resource type is unambiguous enough that an agent can route to this tool for folder creation versus file creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_formCreate FormB
Create a new form using the title given in the provided form message in the request.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| title | Yes | The title of the form. | |
| description | No | The description of the form. | |
| document_title | No | The document title (shown in browser tab). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a mutating, non-idempotent operation, so the bar is lower. The description adds a small behavioral detail about the title coming from 'the provided form message,' but it doesn't clarify side effects, authentication needs, or the created form's lifecycle.
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. However, the phrasing 'using the title given in the provided form message in the request' is roundabout and slightly hurts clarity, preventing a top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple creation tool, the full schema, annotations, and output schema carry much of the burden. The description is mostly sufficient, but it leaves a gap around when to use create_form versus form-update tools, and it never clarifies what 'provided form message' means.
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 100%, so the input schema already fully documents the parameters. The description adds no meaningful parameter semantics beyond the schema, and the phrase 'title given in the provided form message' could even create confusion about the source of the title 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 states a specific action and resource ('Create a new form'), and the word 'new' distinguishes it from update/get form siblings. The tail clause about 'provided form message' is ambiguous, but the core purpose is still 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 gives no guidance about when to use this tool versus alternatives like batch_update_form, get_form, or set_publish_settings. It also doesn't mention prerequisites such as completing authentication or requiring an authenticated Google account.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presentationCreate PresentationB
Create a new Google Slides presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| title | No | The title for the new presentation. Defaults to "Untitled Presentation". | Untitled Presentation |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description does not need to cover those basics. It adds only 'new' to indicate a fresh resource is created, but provides no details on return values, side effects, or relationship to Google Drive. However, since an output schema exists and there is no contradiction with annotations, a mid-range score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the essential action without filler. Every word earns its place, and the key verb and resource are 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 create tool with full schema coverage, an output schema, and meaningful annotations, the one-sentence description is largely sufficient. It lacks only occasional context such as that the resulting presentation will be stored in Google Drive, but this is not critical given the schema and 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 100%: both user_google_email and title have adequate schema descriptions. The tool description adds no additional parameter meaning beyond what the schema already provides, so the baseline of 3 is correct.
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 ('Create') and resource ('a new Google Slides presentation'), making the core purpose clear. It does not explicitly differentiate from the sibling import_to_google_slides, which also results in a Slides presentation, so it falls short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as import_to_google_slides or create_drive_file. There is no mention of prerequisites, when a new blank presentation is appropriate, or when another sibling would be a better choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reactionCreate ReactionA
Adds an emoji reaction to a Google Chat message.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| message_id | Yes | The message resource name (e.g. spaces/X/messages/Y). | |
| emoji_unicode | Yes | The emoji character to react with (e.g. 👍). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent, non-destructive operation, and the description aligns with that. However, the description adds no extra behavioral context beyond the core action, such as the reaction being publicly visible to space members, duplicate-reaction behavior, or any authorization requirements. It is adequate but not informative beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and target. Every word contributes value and there is no filler or repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so the description does not need to cover return values. However, the required user_google_email parameter is left ambiguous in both the schema and the description, and no usage context (e.g., acting as a specific user or needing space membership) is provided. The description is minimally viable but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes message_id and emoji_unicode, but user_google_email has no schema description. The tool description does not explain any parameters or compensate for the undocumented required field. Since schema coverage is only 67% and the description adds no param-level meaning, the agent is left to guess the role of user_google_email.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Adds') with a specific resource ('emoji reaction') and target ('Google Chat message'). It is immediately clear what the tool does and it distinguishes itself from all sibling tools, none of which mention reactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: the tool is for adding an emoji reaction to a Chat message. No sibling tool performs this action, so no exclusions or alternatives need to be named. It falls short of a 5 only because it does not explicitly state when not to use it or mention related Chat tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_script_projectCreate Script ProjectB
Creates a new Apps Script project.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| title | Yes | Project title | |
| parent_id | No | Optional Drive folder ID or bound container ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating, non-idempotent operation, so the safety profile is covered. The description adds that this creates a new project rather than modifying an existing one, which is useful but minimal. It does not disclose details such as whether the project is created in Drive, what happens if a project with the same title exists, or whether any additional resources are implicitly created. No contradiction with annotations 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 a single sentence with no wasted words, making it easy to parse and front-loaded with the key verb and noun. It is appropriately concise for a simple creation tool, though it could have used the brief format to add a bit more 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?
Given the output schema and annotations, the description covers the basic action but lacks context about the project lifecycle, the role of parent_id, and the need for prior Google authentication. The sibling list hints at a script-project management workflow, but the description does not explicitly connect this tool to that workflow. It is minimally viable but leaves the agent to discover important surrounding context elsewhere.
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 100%, so the schema already documents all parameters, including title, parent_id, and user_google_email. The description adds no additional meaning about these parameters or their relationships. This is the expected baseline case where the schema carries the parameter documentation burden.
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 Apps Script project.' It clearly distinguishes this from sibling tools like list_script_projects, get_script_project, update_script_content, and delete_script_project by focusing on creation. It does not state the broader context of what an Apps Script project is, but the core 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?
There is no guidance about when to use this tool versus alternatives, such as when to use create_script_project instead of create_drive_file or update_script_content. The description does not mention prerequisites like prior authentication or the relationship to other script-management tools. Agents are left to infer usage 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_sheetCreate SheetB
Creates a new sheet or duplicates an existing sheet (user_google_email: str, spreadsheet_id: str, sheet_name: Optional[str] = None, source_sheet_name: Optional[str] = None, insert_sheet_index: Optional[int] = None).
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| spreadsheet_id | Yes | ||
| sheet_name | No | ||
| source_sheet_name | No | ||
| insert_sheet_index | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a non-read-only, non-idempotent, non-destructive operation. The description adds the key behavioral fact that it can either create a blank sheet or duplicate an existing sheet, which goes beyond the annotations. It does not describe side effects, copy behavior, naming conflicts, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one dense, front-loaded sentence followed by a compact signature. There is no filler, though the signature partially 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 tool with five parameters and zero schema descriptions, the description is adequate but lean: it states the core operation and lists all parameters, and an output schema exists so return values need not be described. Missing context includes when each optional parameter applies, how duplication differs from creating a blank sheet, and how this tool differs from create_spreadsheet.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes the full function signature, which helps identify all five parameters and their optionality, and the phrase 'duplicates an existing sheet' gives meaning to source_sheet_name. This partially compensates for the 0% schema description coverage, but there are no per-parameter explanations such as how insert_sheet_index behaves or the relationship between sheet_name and source_sheet_name.
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 creates a new sheet or duplicates an existing one, which is specific and not a tautology. It does not explicitly distinguish itself from the sibling create_spreadsheet, but the use of 'sheet' and the spreadsheet_id parameter make the target resource reasonably 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 intended use case is implied by the phrasing: use this tool when a new sheet tab or a duplicate of an existing sheet is needed. However, there is no explicit guidance about when to prefer create_spreadsheet instead, nor any 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.
create_spreadsheetCreate SpreadsheetB
Creates a new Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| title | Yes | The title of the new spreadsheet. Required. | |
| sheet_names | No | List of sheet names to create. If not provided, creates one sheet with default name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate that this is a mutating operation (readOnlyHint=false) and non-destructive (destructiveHint=false), and the description does not contradict them. The description adds the domain context that the created resource is a Google Spreadsheet, but it does not disclose side effects like Drive file creation, default sharing, or permission implications. This is acceptable given the annotations but lacks deeper 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 one short, direct sentence that front-loads the core action and resource. Every word earns its place, and there is no redundant or filler content. For a simple creation tool, this is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema and output schema cover the technical details, so the description does not need to explain return values or parameter formats. However, given the large sibling toolset, the description lacks enough context to help an agent decide between 'create_spreadsheet' and related tools like 'create_sheet' or 'import_to_google_sheets'. It is minimally viable but incomplete for 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 100%, so the parameters 'title', 'sheet_names', and 'user_google_email' are already well documented in the schema. The description adds no additional parameter-level meaning, which is acceptable because the schema carries the full burden. This aligns with the baseline 3 for fully documented schemas.
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 Google Spreadsheet'), so an agent can understand the core purpose. However, it does not differentiate from the sibling tool 'create_sheet', which could be confused as creating a spreadsheet rather than a worksheet within one. A more explicit distinction would earn 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 about when to use this tool versus alternatives such as 'create_sheet', 'create_drive_file', or 'import_to_google_sheets'. The description gives no context about prerequisites, ownership implications, or which sibling tools are more appropriate in specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_table_with_dataCreate 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
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| table_data | Yes | 2D list of strings - EXACT format: [["col1", "col2"], ["row1col1", "row1col2"]] | |
| index | Yes | Document position (MANDATORY: get from inspect_doc_structure 'total_length') | |
| bold_headers | No | Whether to make first row bold (default: true) | |
| tab_id | No | Optional tab ID to create the table in a specific tab |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which only indicate mutability but not destructive), the description explains the exact behavior: creates a table at a specific index, populates it with provided data, formats headers optionally bold. It specifies that rows must have equal length and cells must be strings. However, it does not explain error handling for invalid indices or malformed data, nor the return value (though output schema exists). Good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, all-caps warnings, step-by-step workflow, and a detailed example. While it is somewhat verbose and repeats some instructions (e.g., 'must call inspect_doc_structure' appears twice), every sentence adds necessary guidance. The front-loading with the main purpose and critical notes 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 tool's complexity (6 params, dependencies on other tools, specific data formatting), the description covers all aspects: mandatory prerequisite call, index acquisition, data format rules, optional features (bold headers, tab), and post-verification with debug_table_structure. It does not explain the output, but an output schema exists. For an agent, this description is complete and 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 100%, but the description adds significant value: it provides an explicit example of table_data format, reiterates the index source (inspect_doc_structure total_length), explains bold_headers default and tab_id optionality. It goes beyond the schema by giving a concrete data format example and workflow integration.
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 the tool creates a table and populates it with data in one operation. Distinguishes from sibling tools like append_table_rows (which adds rows to existing tables) and debug_table_structure (which inspects). The verb 'creates' and resource 'table with data' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit mandatory workflow: must call inspect_doc_structure first, use its total_length as index, format data as 2D list, and optionally debug after. Gives when-to-use (single reliable operation for table creation) and when-not-to-use (never guess index). Clearly states prerequisites and alternative verification steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_versionCreate 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| description | No | Optional description for this version |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this is a mutating (readOnlyHint=false), non-idempotent operation. The description adds genuinely useful behavioral context beyond annotations: versions are immutable snapshots, and 'Once created, versions cannot be modified' warns the agent of a permanent consequence. This is consistent with idempotentHint=false and destructiveHint=false, with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero waste: the core action is front-loaded, the second sentence explains what a version is, and the third states the critical constraint. Every sentence earns its place and no information is repeated from the schema or annotations.
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 an output schema exists (so return values need no explanation) and annotations cover the safety profile, the description adequately conveys the semantics and the immutable nature of the created artifact. A minor gap is the absence of guidance on prerequisites or sequencing relative to update_script_content, but nothing essential blocks 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 100%, so all three parameters (script_id, description, user_google_email) are already documented structurally. The description adds minimal param-specific meaning beyond reinforcing that the snapshot captures 'current script code' for the given script project. Baseline 3 is appropriate; the schema does the heavy lifting.
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 ('Creates a new immutable version of a script project') and adds the key attribute 'immutable'. This clearly distinguishes it from siblings like list_versions, get_version, create_script_project, and update_script_content, so an agent can tell them apart without inspecting 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 implies the use case — 'Versions capture a snapshot of the current script code' suggests you call this when you want to freeze the current code state. However, it never explicitly names alternatives or states when not to use it (e.g., when you need to modify code first via update_script_content, or when you simply want to view versions via list_versions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_docs_runtime_infoDebug Docs Runtime InfoARead-onlyIdempotent
Return runtime/source information for diagnosing stale MCP server instances.
This is a temporary diagnostic tool intended to verify which code checkout the running MCP server has loaded.
| 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 already establish read-only, idempotent, non-destructive behavior, so the description does not need to repeat that. It adds useful context beyond annotations by marking the tool as temporary and diagnostic, clarifying that it inspects runtime/source state rather than user 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?
Two tightly written sentences with no filler. The main action and diagnostic purpose are front-loaded, and the temporary nature is stated concisely in the second sentence.
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 tool with a rich output schema and strong annotations, the description covers what the tool does and when to use it. The only notable gap is the unexplained parameter semantics, which is partially mitigated by the clear parameter name.
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 required `user_google_email` parameter but does not. The parameter name is somewhat self-explanatory, but the description does not clarify whose email is expected or how it is used for diagnosis.
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: 'Return runtime/source information' and 'verify which code checkout the running MCP server has loaded.' It clearly distinguishes itself as a temporary diagnostic tool among the many operational Google Workspace 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?
The description explicitly identifies the use case: 'diagnosing stale MCP server instances' and verifies which code checkout is loaded. It gives clear context for when to use the tool, though it does not name alternatives or exclusions, which are largely unnecessary given its unique diagnostic role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_table_structureDebug Table StructureARead-onlyIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to inspect | |
| table_index | No | Which table to debug (0 = first table, 1 = second table, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only, idempotent, and non-destructive; the description adds valuable behavioral detail by specifying exactly what the output contains and how to interpret fields like dimensions, position, current_content, and insertion_index. It also makes clear the tool inspects rather than mutates, with no contradiction to 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 long but well-structured with bolded trigger conditions, output explanations, and workflow steps that are easy to scan. Each section conveys actionable guidance, though some repetition of the tool's core purpose could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers when to use the tool, how to read its output, and how it fits into a workflow, while the output schema handles the return structure. One minor gap: it references 'populate_existing_table' as a scenario, but that tool does not appear in the sibling tool list, creating slight routing 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?
The input schema already documents all three parameters with helpful descriptions and a default for table_index. The description does not add parameter-specific guidance beyond what the schema provides, so the baseline score of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool debugs table structure and enumerates what it reveals: dimensions, cell positions, current content, insertion indices, and boundaries. It is unambiguous about the resource and purpose, though it does not explicitly contrast with sibling inspection tools like inspect_doc_structure or create_table_with_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 description provides an explicit 'USE THIS IMMEDIATELY WHEN' list and a workflow integration section covering after creation, before population, and after failures. It lacks an explicit when-not-to-use section or named alternative tools, 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.
delete_script_projectDelete Script ProjectADestructive
Deletes an Apps Script project.
This permanently deletes the script project. The action cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds valuable behavioral context by stating 'This permanently deletes the script project. The action cannot be undone.' This reinforces the irreversibility in a way the annotations do not fully convey. No contradiction 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 two short sentences, with the core action first and the critical permanent-deletion warning second. Every sentence earns its place, and there is no filler or redundant 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 two-parameter destructive tool with output schema, annotations, and full schema coverage, the description covers the essential irreversible nature of the operation. It is slightly incomplete because it does not mention when deletion should be used or what happens to related resources, but these are largely covered by the annotations and clear purpose.
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 100%, with both script_id and user_google_email already documented in the input schema. The description adds no additional parameter-level meaning, but it does not need to because the schema covers the parameters adequately. Baseline 3 is appropriate.
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: 'Deletes an Apps Script project.' It further clarifies that the deletion is permanent, which clearly distinguishes this destructive tool from sibling tools like list_script_projects, get_script_project, create_script_project, and update_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 description gives no guidance about when to use this tool versus alternatives, when deletion is appropriate, or what prerequisites apply. It only restates the action itself and its irreversibility. There is no explicit or implicit comparison to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_chat_attachmentDownload 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).
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| message_id | Yes | The message resource name (e.g. spaces/X/messages/Y). | |
| attachment_index | No | Zero-based index of the attachment to download (default 0). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) are consistent with the description, so no contradiction. The description adds genuine value beyond annotations: it discloses the side effect of writing to local disk and the mode-dependent return semantics (local path in stdio vs temporary URL with a 1-hour expiry in HTTP), which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences carry all essential information with no filler. The core function is front-loaded in the first sentence, and the mode-specific details occupy the second. Every clause 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?
The output schema exists to cover return values, and annotations cover the safety profile, lowering the burden on the description. The mode-specific behavior disclosure is a meaningful addition. Remaining gaps are the undocumented required user_google_email parameter and lack of error-behavior guidance (e.g., out-of-range attachment_index or messages with no attachments), but these are minor given the structured coverage.
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 67%, and the two documented parameters (message_id with a concrete example, attachment_index with default semantics) are well described. However, the required parameter user_google_email has zero documentation in both the schema and the description, and the description does nothing to compensate for this gap. With one required param unexplained, the agent cannot confidently construct valid calls.
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 ('Downloads'), resource ('attachment from a Google Chat message'), and outcome ('saves it to local disk'). It clearly distinguishes this from sibling tools like get_gmail_attachment_content (Gmail domain) and get_drive_file_download_url (URL only, not a download) by explicitly scoping to Google Chat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides operational context by explaining stdio vs HTTP mode return behavior, which helps the agent know what to do with the result. However, it never explicitly states when to use this tool versus similar alternatives such as get_gmail_attachment_content or get_drive_file_download_url; the routing is left to inference from the Chat domain in the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draft_gmail_messageDraft 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required for authentication. | |
| subject | Yes | Email subject. | |
| body | Yes | Email body (plain text). | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| to | No | Optional recipient email address. | |
| cc | No | Optional CC email address. | |
| bcc | No | Optional BCC email address. | |
| from_name | No | Optional sender display name (e.g., 'Peter Hartree'). If provided, the From header will be formatted as 'Name <email>'. | |
| 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. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| in_reply_to | No | Optional RFC Message-ID of the message being replied to (e.g., '<message123@gmail.com>'). | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| attachments | No | Optional list of attachments. Each can have: 'url' (fetch from URL — works with MCP attachment URLs from get_drive_file_download_url / get_gmail_attachment_content), OR 'path' (file path, auto-encodes), OR 'content' (standard base64, not urlsafe) + 'filename'. Optional 'mime_type'. Optional 'content_id' (string) makes the attachment inline-rendered: it lands in a multipart/related part with `Content-ID: <content_id>` and `Content-Disposition: inline`, and the HTML body can reference it via `<img src="cid:<content_id>">` (RFC 2392). Without `content_id` the attachment is a regular multipart/mixed attachment. | |
| include_signature | No | Whether to append the Gmail signature from Settings > Signature when available. Defaults to true. | |
| quote_original | No | Whether to include the original message as a quoted reply. Requires thread_id. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly=false and destructiveHint=false. The description adds meaningful behavioral context beyond that: it creates a draft (not sends), supports reply drafts, includes optional attachments, and can use configured 'Send As' aliases. These details clarify the tool's effect without contradicting any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each delivering distinct value: primary action, key supported modes, and a specialized feature. No redundant fluff, front-loaded with 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?
Despite 15 parameters and an output schema, the description captures the essential functional surface: draft creation, reply support, attachments, and alias sending. The detailed schema fills in the rest. It does not mention return values, but the output schema covers that. Slightly more explicit usage guidance would push this higher, but it is complete enough for a tool with such a rich 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 already provides 100% parameter coverage, so baseline is 3. The description elevates this by connecting high-level features to specific parameters: 'reply drafts' maps to thread_id/in_reply_to, 'attachments' maps to the attachments array, and 'Send As' maps to from_email. This adds conceptual meaning beyond individual schema entries.
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 draft email in the user's Gmail account.' It clearly distinguishes itself from sibling send_gmail_message by emphasizing 'draft' and explicitly names key capabilities (new drafts, reply drafts, attachments, Send As).
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 contexts by mentioning 'new drafts and reply drafts' and 'Send As' alias addresses, but it never explicitly states when to choose this tool over send_gmail_message or other alternatives. No exclusions or direct alternative comparisons are given, leaving the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_doc_to_pdfExport Doc to PDFA
Exports a Google Doc to PDF format and saves it to Google Drive.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the Google Doc to export | |
| pdf_filename | No | Name for the PDF file (optional - if not provided, uses original name + "_PDF") | |
| folder_id | No | Drive folder ID to save PDF in (optional - if not provided, saves in root) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a non-read-only, non-idempotent, non-destructive operation. The description adds that the result is saved to Google Drive, which clarifies the output location, but it does not disclose prerequisites, permission requirements, or duplicate/overwrite behavior. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes: the action, the source format, the target format, and the destination are all included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple conversion tool, the description, full parameter schema, annotations, and existing output schema provide enough information for an agent to call it correctly. It is slightly incomplete only in not addressing edge cases like file naming defaults or authorization context, but those are covered elsewhere or are non-essential.
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 already describes all four parameters with 100% coverage. The description does not add parameter-level meaning beyond aligning document_id with the source doc and folder_id with the Drive destination, so the baseline score of 3 is appropriate.
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 ('Exports') and resource ('Google Doc to PDF format'), and also notes the output destination ('saves it to Google Drive'). This is distinguishable from siblings such as get_doc_as_markdown or copy_drive_file, none of which perform PDF conversion.
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: use this when you need a PDF version of a Google Doc saved to Drive. However, the description provides no explicit when-to-use guidance, no exclusions, and does not name alternatives such as get_doc_as_markdown or get_drive_file_download_url.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_and_replace_docFind and Replace DocADestructive
Finds and replaces text throughout a Google Doc. No index calculation required.
This is the safest way to update specific text in a document because it does not require knowing any indices. Use this tool when you need to:
Replace placeholder text (e.g., {{TITLE}}) with real content
Update specific words or phrases throughout the document
Make targeted text changes without risk of index errors
For building documents from scratch, consider inserting text with unique placeholders via batch_update_doc, then using this tool to replace them.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| find_text | Yes | Text to search for | |
| replace_text | Yes | Text to replace with | |
| match_case | No | Whether to match case exactly | |
| tab_id | No | Optional ID of the tab to target |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and idempotentHint=false, so the safety burden is partially carried there. The description adds useful context that replacement happens 'throughout' the document and frames it as the 'safest way' to avoid index errors. It does not contradict the annotations, and no annotation contradiction is 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 front-loaded with the core behavior and then provides a clear, scannable bullet list of use cases. It is slightly repetitive with 'safest way' and 'without risk of index errors,' but overall each section earns its place and the structure supports quick understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and parameter coverage is complete, the description provides enough context for an agent to select and invoke the tool correctly. It covers scope, use cases, and a relevant alternative workflow. It could be more complete by explicitly noting that all occurrences are replaced or by naming index-based sibling tools, but these are gaps rather than blockers.
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 100%, so the input schema already documents all six parameters. The description adds context around placeholder replacement and content updating, which helps illustrate find_text and replace_text usage, but does not substantially deepen the meaning of individual parameters 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 specific verb and resource: 'Finds and replaces text throughout a Google Doc.' It also adds a distinctive behavioral claim, 'No index calculation required,' which differentiates it from index-based document editing tools. The use-case bullets reinforce what the tool is for.
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 explicit when-to-use scenarios: replacing placeholders, updating words or phrases, and making targeted changes without index errors. It also names an alternative workflow using batch_update_doc for building documents from scratch. However, it does not explicitly contrast itself with sibling tools like modify_doc_text when index-based edits are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format_sheet_rangeFormat 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| range_name | Yes | A1-style range (optionally with sheet name). Required. | |
| background_color | No | Hex background color (e.g., "#FFEECC"). | |
| text_color | No | Hex text color (e.g., "#000000"). | |
| number_format_type | No | Sheets number format type (e.g., "DATE"). | |
| number_format_pattern | No | Custom pattern for the number format. | |
| wrap_strategy | No | 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 | No | Horizontal text alignment - LEFT, CENTER, or RIGHT. | |
| vertical_alignment | No | Vertical text alignment - TOP, MIDDLE, or BOTTOM. | |
| bold | No | Whether to apply bold formatting. | |
| italic | No | Whether to apply italic formatting. | |
| font_size | No | Font size in points. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish that the tool mutates state but is not destructive. The description adds meaningful behavior beyond the schema: colors must be hex strings, number formats follow Sheets types, and an unspecified sheet means the first sheet is used. It does not mention whether existing formatting is overwritten, but the destructiveHint already frames the tool as non-destructive.
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 three sentences with no filler. It front-loads the core purpose, then provides concrete syntax guidance and a default-behavior note, all of which earn their 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 13 parameters, complete schema coverage, an output schema, and annotations, the description provides the essential operating rules without needing to restate every parameter. It could be slightly more explicit about overriding existing formatting, but nothing critical is missing for an agent to call this 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 100%, so the baseline is 3, but the description adds cross-cutting value by explaining the accepted format for colors, the Sheets-specific number format types, and the fallback behavior when range_name omits a sheet name. These details are not fully captured by the schema's per-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 opens with a clear active verb and resource: 'Applies formatting to a range,' then enumerates the kinds of formatting covered. This makes it distinct from value-editing spreadsheet siblings like modify_sheet_values or read_sheet_values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is implied by the formatting-specific vocabulary, but the description never explicitly says when to choose this tool over alternatives such as modify_sheet_values or manage_conditional_formatting. It adds a useful default-sheet note but no 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.
generate_trigger_codeGenerate Trigger CodeARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| trigger_type | Yes | 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 | Yes | The function to run when trigger fires (e.g., "sendDailyReport") | |
| schedule | No | 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 needed |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the API limitation and the code-generation nature of the tool, but does not go beyond that into further behavioral details such as output format or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief, front-loaded with the core purpose, and every sentence adds value. The constraint explanation is essential context and is presented in two compact sentences 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?
Given the tool's moderate complexity, the rich input schema, and the presence of an output schema, the description is complete enough. It explains the key contextual constraint (API cannot directly create triggers) and the tool's role without needing to restate structured details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description does not add parameter-level meaning, meeting the baseline for a fully documented 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 ('Generates') and identifies the exact resource ('Apps Script code for creating triggers'). It clearly distinguishes what the tool does from siblings by focusing on code generation rather than direct trigger creation or script management.
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 when this tool is needed: because the Apps Script API cannot create triggers directly and they must be created from within Apps Script itself. This provides clear context for when to use the tool, though it does not explicitly name alternative tools or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contactGet ContactARead-onlyIdempotent
Get detailed information about a specific contact.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| contact_id | Yes | The contact ID (e.g., "c1234567890" or full resource name "people/c1234567890"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds no extra behavioral context, such as authentication needs or error behavior, but it also does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately states the action and resource. Every word earns its place, and 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 simple read tool, the combination of a complete input schema, a true output schema, and safety annotations covers most of what an agent needs. The description is minimal but sufficient, though it does not mention how to obtain the contact_id (e.g., via list_contacts).
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 100%, so both parameters are already well-documented in the input schema. The description does not add additional semantic meaning beyond the implicit 'specific contact' reference, which aligns with contact_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 'Get detailed information about a specific contact' clearly identifies a read operation for a single contact, using a specific verb and resource. It is distinct from sibling tools like list_contacts or search_contacts because it targets a specific contact, though it does not explicitly name any sibling.
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 'a specific contact' implies this tool should be used when a contact_id is already known, providing minimal usage context. However, it does not mention alternatives or conditions for choosing between get_contact, search_contacts, or list_contacts, so the guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contact_groupGet Contact GroupARead-onlyIdempotent
Get details of a specific contact group including its members.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| group_id | Yes | The contact group ID. | |
| max_members | No | Maximum number of members to return (default: 100, max: 1000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only, idempotent, and non-destructive behavior, so the description does not need to repeat safety traits. It adds the useful detail that members are returned, but it does not describe pagination limits or other behavioral nuances beyond what the schema already conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that delivers the core purpose without filler. It is appropriately sized for a simple read operation and front-loads the key idea.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has full schema coverage, a rich set of annotations, and an output schema, so the description is largely sufficient. The only minor gap is the absence of explicit guidance about how this differs from list_group_members.
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 100%, so the description needs to add little about parameters. The description does not elaborate on group_id, max_members, or user_google_email, but the schema already documents these fully.
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 ('Get details') and the resource ('a specific contact group'), and it explicitly calls out that members are included. This distinguishes it from list_contact_groups and list_group_members in the sibling set, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for retrieving a single group by ID, especially with required 'group_id', but it does not explicitly say when to choose this over list_contact_groups or list_group_members. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_as_markdownGet Doc as MarkdownARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the Google Doc (or full URL) | |
| include_comments | No | Whether to include comments (default: True) | |
| comment_mode | No | 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 | inline |
| include_resolved | No | Whether to include resolved comments (default: False) | |
| suggestions_view_mode | No | How to render suggestions in the returned content: - "DEFAULT_FOR_CURRENT_ACCESS": Default based on user's access level - "SUGGESTIONS_INLINE": Suggested changes appear inline in the document - "PREVIEW_SUGGESTIONS_ACCEPTED": Preview as if all suggestions were accepted - "PREVIEW_WITHOUT_SUGGESTIONS": Preview as if all suggestions were rejected | DEFAULT_FOR_CURRENT_ACCESS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool read-only and idempotent, and the description adds substantial behavioral context beyond that: it preserves formatting, includes comments by default, preserves anchor text, and exposes suggestion rendering behavior. These details meaningfully inform an agent about what the output will contain.
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 into three focused paragraphs, front-loads the core purpose, and uses the second sentence to differentiate from a sibling. Every sentence adds useful information without redundancy or unnecessary 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 tool has a rich input schema and output schema, and the description covers the key behavioral decisions an agent needs: Markdown formatting, comment inclusion, comment modes, and suggestions rendering. No critical calling context is missing given the structured annotations and schema already 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 100%, so the input schema already documents every parameter clearly. The description adds useful high-level context about comment anchor text and Markdown features, but it does not materially deepen the per-parameter semantics beyond what the schema already 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 the tool 'Reads a Google Doc and returns it as clean Markdown' and enumerates the formatting features it preserves. It also explicitly contrasts itself with get_doc_content, making its identity and 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?
The description explicitly names the sibling alternative get_doc_content and states the deciding difference: plain text versus Markdown-preserving output. It also explains comment behavior and modes, so an agent understands when this tool is appropriate and when another tool would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_doc_contentGet Doc ContentARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the Google Doc (or full URL) | |
| suggestions_view_mode | No | How to render suggestions in the returned content: - "DEFAULT_FOR_CURRENT_ACCESS": Default based on user's access level - "SUGGESTIONS_INLINE": Suggested changes appear inline in the document - "PREVIEW_SUGGESTIONS_ACCEPTED": Preview as if all suggestions were accepted - "PREVIEW_WITHOUT_SUGGESTIONS": Preview as if all suggestions were rejected | DEFAULT_FOR_CURRENT_ACCESS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only and non-destructive, and the description adds useful behavioral detail by explaining the two retrieval paths: Docs API for native Google Docs and Drive API download with text extraction for Office files. This clarifies what the agent should expect for .docx and similar files.
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 purpose, and uses a short bulleted breakdown for the two supported file types. Every sentence contributes useful information 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?
Combined with full parameter descriptions, an output schema, and read-only annotations, the description gives an agent enough to invoke the tool correctly. It does not clarify sibling overlap or limitations beyond 'extracts text', but those are secondary for a read-only retrieval 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 coverage is 100%, so the baseline is 3. The description adds important meaning by clarifying that document_id can identify either a native Google Doc or a Drive file such as .docx, which goes beyond the schema's parameter description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieves') and a clear resource ('content of a Google Doc or a Drive file'), so the tool's purpose is immediately understandable. It does not explicitly differentiate itself from overlapping siblings like get_drive_file_content or get_doc_as_markdown, which keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by listing supported file types, but it gives no explicit when-to-use or when-not-to-use guidance and names no alternatives. An agent is left to infer that this is the right tool for Google Docs and Drive office files.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_file_contentGet Drive File ContentARead-onlyIdempotent
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. • PDFs → text extracted with pypdf when possible; scanned/image-only PDFs fall back to a download hint. • Images → returned as base64 with MIME metadata for multimodal clients. • Any other file → downloaded; tries UTF-8 decode, else notes binary.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user’s Google email address. | |
| file_id | Yes | Drive file ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, but the description adds substantial behavioral detail beyond them: per-format export/parsing strategies, PDF fallback behavior, base64/MIME for images, and a binary-note fallback for unknown file types. This is rich disclosure of how the tool behaves in various scenarios.
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 single lead sentence followed by a scannable bullet list where each item covers a distinct file category. No sentence is wasted, and the most important usage information (retrieves content by ID, supports shared drives) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value details are already structured. The description covers all likely input file types, fallback behaviors, and edge cases such as binary files, making it sufficient for an agent to understand what will happen for any file. Combined with the annotations and schema, the description is contextually 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?
Input schema coverage is 100% and both parameters already have reasonable descriptions. The tool description adds little beyond the schema: it mentions 'by ID' and the fact that shared drives are supported, but it does not deepen the meaning of user_google_email or provide guidance on acquiring a file_id. This matches the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb+resource statement: 'Retrieves the content of a specific Google Drive file by ID,' which clearly defines what the tool does. The bulletized format-specific breakdown further distinguishes it from related siblings like get_drive_file_download_url or get_doc_content by showing it returns extracted text/content rather than a URL or a Docs-specific artifact.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: whenever you need the content of a Google Drive file, including shared drives. However, it never explicitly names alternatives such as get_drive_file_download_url or get_doc_content, nor does it state when to prefer one over the other; the guidance is inferred from the format-handling bullets rather than stated.
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_urlGet Drive File Download URLARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The Google Drive file ID to download. | |
| export_format | No | 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). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses mode-dependent return behavior, the 1-hour URL validity, and the per-file-type export rules. It clearly explains what happens for Google native files versus other files, which is exactly the kind of context an agent needs.
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 a clear opening sentence followed by concise mode and format bullets. Every sentence adds necessary behavioral or usage detail, with no filler or repeated schema 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?
Given the tool's complexity, the description covers all essential call-time decisions: mode behavior, native-file export mapping, default formats, and the fact that original formats are used for non-native files. An output schema exists for return values, and annotations cover the safety profile, so 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 coverage is 100%, so the baseline is 3. The description adds value by mapping export_format values to specific source file types (Docs, Sheets, Slides) and clarifying defaults per type, which the schema only partially conveys. This pushes it above baseline without fully re-explaining parameters like file_id and user_google_email.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description immediately states a specific action and resource: 'Downloads a Google Drive file and saves it to local disk.' It then distinguishes its behavior by mode and file type, making it clearly different from siblings 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 gives clear context for when different behaviors apply: stdio mode returns a local path, HTTP mode returns a temporary URL, and file type determines export formats. It does not explicitly name alternative tools or exclusion conditions, but the provided mode and format guidance is enough for an agent to decide when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_drive_file_permissionsGet Drive File PermissionsARead-onlyIdempotent
Gets detailed metadata about a Google Drive file including sharing permissions, parent folder IDs, ownership, and lifecycle timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The ID of the file to check permissions for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context about what metadata categories are returned, but it does not disclose any additional behavioral traits such as auth requirements or rate limits. No contradiction 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 a single, focused sentence that front-loads the action and resource, then lists relevant metadata categories. There is no filler or redundant phrasing.
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 low-complexity, read-only tool with only two documented parameters, rich annotations, and an output schema. The description sufficiently covers what the agent needs to know to select and invoke it correctly. Additional sibling differentiation would improve it, 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 100% and both parameters (file_id, user_google_email) are already documented clearly in the schema. The description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.
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') with a clear resource ('detailed metadata about a Google Drive file') and enumerates concrete content categories: sharing permissions, parent folder IDs, ownership, and lifecycle timestamps. This distinguishes it from siblings like set_drive_file_permissions, which perform writes, and check_drive_file_public_access, which is narrowly scoped.
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 related siblings such as check_drive_file_public_access, get_drive_shareable_link, or manage_drive_access. The usage context is only implied by the description, with 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_eventsGet EventsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| calendar_id | No | 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`. | primary |
| event_id | No | The ID of a specific event to retrieve. If provided, retrieves only this event and ignores time filtering parameters. | |
| time_min | No | 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 | No | 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 | No | The maximum number of events to return. Defaults to 25. Ignored if event_id is provided. | |
| query | No | A keyword to search for within event fields (summary, description, location). Ignored if event_id is provided. | |
| detailed | No | Whether to return detailed event information including description, location, attendees, and attendee details (response status, organizer, optional flags). Defaults to False. | |
| include_attachments | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description explains parameter precedence (event_id overrides time parameters) and default behavior (time_min defaults to current time). Annotations already provide readOnlyHint and idempotentHint, and description is consistent, adding context on parameter interactions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, concise, and every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main use cases and parameter interactions. Output schema exists, so return value details are handled. Could mention pagination limits, but max_results parameter covers that.
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 100% with detailed descriptions for all parameters. Tool description adds context about overall behavior (e.g., retrieval modes) but does not significantly enhance meaning beyond 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 clearly states 'Retrieves events from a specified Google Calendar' and specifies two modes: single event by ID or multiple events within a time range, plus keyword search. This distinguishes it from sibling tools like list_calendars or manage_event.
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?
Describes when to use event_id vs time range vs query, providing clear guidance on parameter usage. Does not explicitly exclude use for writing or modifying events, but annotations already indicate read-only nature.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_formGet FormCRead-onlyIdempotent
Get a form.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| form_id | Yes | The ID of the form to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to restate safety. However, it also adds no behavioral context such as authentication requirements, scope of the returned form, or relationship to Google user email.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short, but this reads as under-specification rather than effective conciseness. It contains only a restatement of the tool name and provides no useful 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 schema covers parameters completely, annotations cover safety semantics, and an output schema exists, so the tool is minimally callable. Still, the description omits any context about the form object versus form responses, which limits completeness for an agent navigating many form-related siblings.
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 fully documents both required parameters (user_google_email and form_id) with clear descriptions, so the description does not need to compensate. It also adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: retrieve a form. It is clear about the core operation, but it does not differentiate from sibling tools like get_form_response or list_form_responses, which also involve forms.
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. There is no mention of prerequisites, when to prefer get_form_response, or what distinguishes retrieving a form definition from retrieving responses.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_form_responseGet Form ResponseBRead-onlyIdempotent
Get one response from the form.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| form_id | Yes | The ID of the form. | |
| response_id | Yes | The ID of the response to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description's minimal 'Get one response' is consistent. However, it adds no behavioral context beyond the annotations—such as account-scoping requirements or the need for prior listing—but there is also no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no redundant words. It front-loads the essential action and object, making it easy to process 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?
Given the simple tool with a fully described schema, clear annotations, and an output schema, the description is mostly adequate. However, it misses the practical context of how response_id is obtained and how this tool relates to list_form_responses, leaving a minor but notable gap for an agent deciding how to retrieve a 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 100%, with all three parameters (form_id, response_id, user_google_email) individually described. The tool description adds no extra meaning to the parameters, so a baseline score of 3 is appropriate given the schema already documents them fully.
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 ('Get'), a specific resource ('one response'), and scope ('from the form'). It distinguishes itself from the sibling list_form_responses through the word 'one', but does not explicitly name the alternative or clarify that a specific response 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 provides no guidance on when to use this tool versus list_form_responses, nor does it mention that response_id must be obtained beforehand (e.g., via listing responses). An agent is left to infer usage entirely from the parameter schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_attachment_contentGet 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.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The ID of the Gmail message containing the attachment. | |
| attachment_id | Yes | The ID of the attachment to download. | |
| user_google_email | Yes | The user's Google email address. Required. | |
| return_base64 | No | When True, includes the full attachment as a standard base64 string in the response (in addition to any file path or download URL). Useful for sandboxed clients that cannot reach localhost download URLs or the MCP server's local file paths (e.g. containerized agents with network allowlists). The returned base64 uses the standard alphabet, so it can be passed directly to tools like ``draft_gmail_message`` that expect standard (not URL-safe) base64. Default False preserves the existing behavior and response size. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: it mentions the local disk side effect, the difference between stdio and HTTP return modes, the one-hour URL validity, and the potential metadata re-fetch. This complements the annotations rather than contradicting them.
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 first sentence states the core action, and the following sentences add only necessary mode-specific and behavioral details. Every sentence earns its place with 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?
Given that the input schema is fully documented and an output schema exists, the description covers all necessary behavioral aspects: side effects, mode-dependent returns, and metadata re-fetching. The agent has enough information to invoke the tool correctly and interpret the expected outcome.
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 100%, so the input schema already fully documents message_id, attachment_id, user_google_email, and return_base64. The description does not add parameter-level detail, but the schema carries that burden, so a baseline score of 3 is appropriate.
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: 'Downloads an email attachment and saves it to local disk.' It clearly identifies what the tool does and distinguishes it from sibling tools that retrieve message content or thread content, since it focuses specifically on attachment download.
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 mode-specific behavior (stdio vs HTTP) but provides no explicit guidance on when to choose this tool over alternatives such as get_gmail_message_content, get_gmail_messages_content_batch, or download_chat_attachment. There are no exclusions, prerequisites, or sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_message_contentGet Gmail Message ContentARead-onlyIdempotent
Retrieves the full content (subject, sender, recipients, body) of a specific Gmail message.
| Name | Required | Description | Default |
|---|---|---|---|
| message_id | Yes | The unique ID of the Gmail message to retrieve. | |
| user_google_email | Yes | The user's Google email address. Required. | |
| body_format | No | Body output format. 'text' (default) returns plaintext (HTML converted to text as fallback). 'html' returns the raw HTML body as-is without conversion. 'raw' fetches the full raw MIME message and returns the base64url-decoded content. | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds detail on returned fields (subject, sender, recipients, body) but no further behavioral traits like rate limits or side effects. With strong annotations, this is adequate but not enhanced.
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?
Single, front-loaded sentence with no extraneous words. Every element is essential and directly informs the agent's decision.
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 simple tool with output schema present, the description sufficiently covers the return structure. It could mention required parameters but schema already handles that. Overall, complete for a read 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 coverage is 100% and description adds no extra meaning beyond what the input schema provides. Baseline of 3 is appropriate as schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves the full content of a specific Gmail message, using specific verbs and resources. It distinguishes well from sibling tools like get_gmail_attachment_content or batch variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a single message's content, providing clear context. However, it lacks explicit when-not-to-use guidance or alternatives, though the sibling list suggests other tools for different scopes.
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_batchGet Gmail Messages Content BatchARead-onlyIdempotent
Retrieves the content of multiple Gmail messages in a single batch request. Supports up to 25 messages per batch to prevent SSL connection exhaustion.
| Name | Required | Description | Default |
|---|---|---|---|
| message_ids | Yes | List of Gmail message IDs to retrieve (max 25 per batch). | |
| user_google_email | Yes | The user's Google email address. Required. | |
| format | No | Message format. "full" includes body, "metadata" only headers. | full |
| body_format | No | Body output format (only applies when format='full'). 'text' (default) returns plaintext (HTML converted to text as fallback). 'html' returns the raw HTML body as-is without conversion. 'raw' fetches the full raw MIME message and returns the base64url-decoded content. | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: the batch limit and the reason for it, which helps the agent understand the tool's operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The first sentence states the action and resource immediately; the second provides the key constraint and rationale. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema supplies return-shape details and the annotations cover safety, so the description only needs to convey scope and constraints, which it does. It could have explicitly pointed to get_gmail_message_content for single-message needs, but the clear naming and sibling list make that omission minor.
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 100%: all four parameters have meaningful descriptions and enums. The tool description only reinforces the 25-message limit already present in message_ids, adding no significant new parameter-level meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Retrieves'), names the resource ('content of multiple Gmail messages'), and clearly marks the batch scope, distinguishing it from the singular get_gmail_message_content sibling. 'Single batch request' reinforces the unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the appropriate context: fetching multiple messages in one batch, with a 25-message cap and the rationale (preventing SSL connection exhaustion). It does not explicitly name alternatives like the singular get_gmail_message_content, but the context is clear enough for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gmail_thread_contentGet Gmail Thread ContentARead-onlyIdempotent
Retrieves the complete content of a Gmail conversation thread, including all messages.
Optionally also returns structured ownership analysis so a caller can determine who sent the last message and who owes whom a response without re-parsing the formatted string or making a second tool call.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_id | Yes | The unique ID of the Gmail thread to retrieve. | |
| user_google_email | Yes | The user's Google email address. Required. | |
| body_format | No | Body output format. 'text' (default) returns plaintext (HTML converted to text as fallback). 'html' returns the raw HTML body as-is without conversion. 'raw' fetches each message's full raw MIME content and returns the base64url-decoded body. | text |
| include_analysis | No | When True, the return value is a dict with both the formatted thread content AND structured ownership analysis (last sender, ball-in-court verdict, per-sender message counts, participants). Defaults to False, in which case the existing string return shape is preserved. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safety profile (readOnlyHint, idempotentHint, non-destructive, openWorld), so the bar for the description is lower. The description adds meaningful behavioral context beyond annotations: the tool returns ALL messages in the thread, and the include_analysis flag flips the return shape from a formatted string to a structured dict containing last sender, ball-in-court verdict, per-sender counts, and participants. This explains behavior the annotations cannot convey and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: the first states the core function, the second explains the optional value-add and its benefit. The efficiency framing ('without re-parsing the formatted string or making a second tool call') earns its place by clarifying why the optional feature exists. Front-loaded, appropriately sized, 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?
With an output schema present, return-value documentation is handled elsewhere; annotations cover the read-only/idempotent profile; and the schema covers all parameters at 100%. The description is complete for the core task. The only meaningful gap is explicit routing to sibling alternatives (batch vs. single vs. message-level), which would round out the contextual picture but is not critical given the clear thread-scoped purpose.
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 100%, so the schema already documents all four parameters thoroughly, including defaults and enum semantics for body_format and include_analysis. Per the baseline rule, the description needn't repeat this. It adds marginal value by explaining the intent behind include_analysis ('who owes whom a response') but provides no additional meaning for thread_id, body_format, or user_google_email beyond what the schema already states.
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: 'Retrieves the complete content of a Gmail conversation thread, including all messages.' This clearly distinguishes it from siblings like get_gmail_message_content (single message) and search_gmail_messages (search), and the second sentence's ownership-analysis feature further differentiates it 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 implies a use case — 'so a caller can determine who sent the last message and who owes whom a response... without making a second tool call' — which tells the agent when the optional analysis is valuable. However, it never explicitly addresses when NOT to use this tool or names alternatives (e.g., use get_gmail_threads_content_batch for multiple threads, get_gmail_message_content for one message). The guidance is implied, not stated.
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_batchGet Gmail Threads Content BatchARead-onlyIdempotent
Retrieves the content of multiple Gmail threads in a single batch request. Supports up to 25 threads per batch to prevent SSL connection exhaustion.
| Name | Required | Description | Default |
|---|---|---|---|
| thread_ids | Yes | A list of Gmail thread IDs to retrieve. The function will automatically batch requests in chunks of 25. | |
| user_google_email | Yes | The user's Google email address. Required. | |
| body_format | No | Body output format. 'text' (default) returns plaintext (HTML converted to text as fallback). 'html' returns the raw HTML body as-is without conversion. 'raw' fetches each message's full raw MIME content and returns the base64url-decoded body. | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds meaningful context about the 25-thread batch limit and the underlying reason (preventing SSL connection exhaustion), which is not present in annotations and helps the agent respect rate/connection constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: the first states the core purpose, the second states the key limit and rationale. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, an output schema present, and annotations covering side-effect safety, the call context is largely complete. The only notable gap is explicit guidance on when to use this tool versus related single/batch thread or message 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?
Input schema coverage is 100%, including descriptions of thread_ids, body_format, and user_google_email. The description adds no parameter-level semantics beyond what the schema already provides, so it stays at 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 description states a specific verb ('Retrieves'), a specific resource ('multiple Gmail threads'), and the batching scope ('in a single batch request'). This clearly differentiates it from single-thread retrieval and message-batch retrieval by resource type and batch behavior.
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 a constraint (up to 25 threads per batch) but no explicit guidance on when to choose this tool over get_gmail_thread_content or get_gmail_messages_content_batch. It leaves usage selection to inference from the tool name rather than stating conditions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_messagesGet MessagesBRead-onlyIdempotent
Retrieves messages from a Google Chat space.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| space_id | Yes | ||
| page_size | No | ||
| order_by | No | createTime desc | |
| message_filter | No | Optional filter string using the Chat API filter syntax. Supports createTime and thread.name. Examples: 'createTime > "2026-03-18T00:00:00-03:00"' 'createTime > "2026-03-18T00:00:00-03:00" AND createTime < "2026-03-19T00:00:00-03:00"' 'thread.name = spaces/X/threads/Y' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read. The description adds little beyond the annotations; it says 'retrieves messages' but doesn't describe pagination behavior, default ordering, or that it may return only messages not yet deleted. No contradiction found.
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—one short sentence—and the parameter filter examples are helpful and well-structured. It is front-loaded with the core purpose. It could be slightly more informative, but it earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and rich annotations, the description doesn't need to explain return values. However, it lacks explicit guidance on how the message_filter syntax interacts with other parameters, pagination behavior, and required parameter semantics. It is minimally viable but not fully complete for an agent to call it with confidence in edge 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 only 20%, so the description carries some burden, and it lists the main filter field and its supported syntax in detail (createTime and thread.name examples). However, it does not explain required parameters like user_google_email or space_id beyond their names, nor the order_by and page_size defaults. The filter details add real value over the schema, but gaps remain.
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 'Retrieves messages from a Google Chat space' uses a specific verb + resource and communicates the primary scope. It distinguishes itself from Gmail siblings by explicitly naming Google Chat, but does not differentiate from sibling tools like send_message, search_messages, or list_spaces, though the list verb is 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?
No guidance on when to use this tool vs alternatives such as search_messages or get_gmail_messages_content. It doesn't state exclusions, prerequisites, or conditions. The only context is that it is Chat-specific, which is implied but not explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pageGet PageARead-onlyIdempotent
Get details about a specific page (slide) in a presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| presentation_id | Yes | The ID of the presentation. | |
| page_object_id | Yes | The object ID of the page/slide to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds no behavioral nuance beyond labeling the operation as a 'get,' but it does not contradict the annotations either.
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. The parenthetical '(slide)' adds useful disambiguation without unnecessary 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?
Given the low complexity, a complete output schema, fully documented parameters, and strong annotations, the description is sufficient for an agent to select and invoke the tool correctly. It does not need to explain return values because the output schema covers them.
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 100%, with all three parameters documented in the input schema. The description adds no parameter-specific details, so it does not compensate beyond the schema's baseline coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('details about a specific page (slide) in a presentation'), making the tool's purpose immediately clear. It naturally distinguishes itself from presentation-level siblings like get_presentation and thumbnail-oriented get_page_thumbnail by specifying 'details' about a 'specific page.'
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: this tool is for retrieving a single page/slide's details rather than the whole presentation. It does not explicitly name alternatives or say when not to use it, so it lacks explicit exclusion guidance, but the scope is unambiguous enough for a simple getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_thumbnailGet Page ThumbnailARead-onlyIdempotent
Generate a thumbnail URL for a specific page (slide) in a presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| presentation_id | Yes | The ID of the presentation. | |
| page_object_id | Yes | The object ID of the page/slide. | |
| thumbnail_size | No | Size of thumbnail ("LARGE", "MEDIUM", "SMALL"). Defaults to "MEDIUM". | MEDIUM |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already supply the safety profile (readOnlyHint, idempotentHint, non-destructive). The description adds that the result is a URL and that it targets a single slide, but it does not disclose authentication prerequisites, URL lifetime, or other behavioral details. 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?
A single sentence with no filler. The action and target are front-loaded, and every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent thumbnail-URL tool with full parameter documentation, strong annotations, and an output schema, the description is sufficient. Nothing critical for invoking 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 100%, so each parameter is already documented with a useful description. The tool description only reinforces that page_object_id refers to a slide and does not add meaningful parameter-level semantics 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 uses a specific verb ('Generate') and a precise resource ('thumbnail URL for a specific page (slide) in a presentation'). It clearly distinguishes this tool from siblings like get_page, which would return slide content rather than a thumbnail URL.
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 purpose is clear from the description, but it does not explicitly state when to use this tool over alternatives such as get_page, nor does it mention prerequisites or exclusions. Usage context is implied by the resource targeted, not explicitly spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_presentationGet PresentationBRead-onlyIdempotent
Get details about a Google Slides presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| presentation_id | Yes | The ID of the presentation to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond what annotations already provide. It only repeats the read-only nature (readOnlyHint=true) and offers no additional context such as permissions, rate limits, or data scope. The description is essentially redundant with the annotations and name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that communicates the core purpose without wasted words. It is appropriately sized for a simple retrieval tool and is front-loaded with the key verb and resource.
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 rich annotations (readOnlyHint, idempotentHint, destructiveHint) and the presence of an output schema, the minimal description is largely sufficient. The tool is straightforward and the schema/annotations cover most contextual needs. The only missing piece is guidance on appropriate use cases, but that is already accounted for in the usage guidelines score.
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 100% parameter description coverage, so the parameters are already well-documented. The description does not mention or elaborate on any parameters. Baseline 3 is appropriate as the schema carries the full burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get details about a Google Slides presentation.' The verb 'Get' and resource 'Google Slides presentation' are specific. However, it does not differentiate from sibling tools like get_page or get_drive_file_content, which also retrieve presentation-related 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 description provides no guidance on when to use this tool versus alternatives. It does not mention any context, prerequisites, or exclusions. For a tool with many sibling tools, the absence of usage guidance is a notable gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_contentGet Script ContentBRead-onlyIdempotent
Retrieves content of a specific file within a project.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| file_name | Yes | Name of the file to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations fully cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), and the description's 'Retrieves' aligns with these without contradiction. However, the description adds no behavioral context beyond the annotations: it doesn't clarify what kind of content is returned (source code, file size limits, raw vs rendered), whether the file must belong to the given script project, or if authentication flows through user_google_email. Since annotations carry the burden and no contradiction exists, a mid-range score is appropriate.
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 tight sentence of eleven words, front-loaded with the action verb and resource. There is zero filler, and every word contributes to meaning. This is appropriately sized for a simple read operation.
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 an output schema exists (so return format is defined elsewhere), annotations fully declare the safety semantics, and the input schema covers all parameters at 100%, the description is nearly sufficient. The only minor gap is that it doesn't explicitly scope the tool to Apps Script project files or note that file_name refers to files within the script project. For a simple read-only tool with rich structured context, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters (user_google_email, script_id, file_name) already documented in the input schema. The description adds no parameter-level meaning, but the baseline of 3 applies because the schema does the heavy lifting and no compensation is needed.
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 ('Retrieves content of a specific file within a project') that naturally distinguishes it from siblings like get_script_project (metadata), list_script_projects (listing), update_script_content (mutation), and run_script_function (execution). It stops short of 5 because it doesn't explicitly state this concerns Apps Script source files (e.g., .gs/.html), which the agent must infer from the tool name and script_id parameter.
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. Given a large sibling set including get_script_project, get_drive_file_content, get_doc_content, and run_script_function, the description provides no exclusions, prerequisites, or conditions for selection. An agent receives zero direction on choosing this over similar content-retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_metricsGet Script MetricsBRead-onlyIdempotent
Gets execution metrics for a script project.
Returns analytics data including active users, total executions, and failed executions over time.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| metrics_granularity | No | Granularity of metrics - "DAILY" or "WEEKLY" | DAILY |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context that the tool returns time-bucketed analytics, which is useful, but it does not disclose behavioral traits like what time range 'over time' spans, whether results are paginated, or whether prior authentication is 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?
Two sentences with zero wasted words. The main action is front-loaded ('Gets execution metrics for a script project'), and the second sentence justifies its place by describing what data the agent can expect, which aids tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool, structured context is rich: an output schema exists, annotations cover the safety profile, and the schema fully documents parameters. The description adequately states purpose and return types; the only ambiguity is the unbounded 'over time' range, since no date-range parameter 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?
Schema description coverage is 100%, with all three parameters (script_id, user_google_email, metrics_granularity) already documented in the input schema. The description adds no parameter-level semantics beyond the schema, so the baseline 3 applies.
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 ('Gets execution metrics for a script project') and enumerates the returned data (active users, total executions, failed executions), making the tool's purpose unambiguous. Among the script-related siblings (get_script_project, list_script_processes), it is clearly the only analytics/metrics tool, though it never names a sibling explicitly to differentiate itself.
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. With over 130 siblings including overlapping Apps Script tools like list_script_processes and get_script_project, the description offers no routing criteria, no exclusions, and no contextual trigger for when an agent should choose metrics over a process list or project details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_script_projectGet Script ProjectBRead-onlyIdempotent
Retrieves complete project details including all source files.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so the description does not need to repeat safety details. It adds useful context by specifying that it fetches complete details including all source files. No contradiction with 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?
A single, front-loaded sentence with no filler. Every phrase ('complete project details', 'all source files') adds meaningful scope 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 straightforward read operation with rich annotations, a full output schema, and fully described parameters, the definition is mostly complete. The main gap is explicit disambiguation from get_script_content and related script 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?
Both parameters have descriptive entries in the schema, and schema description coverage is 100%. The description itself adds no additional parameter-level meaning, so the baseline of 3 applies.
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 ('Retrieves') and a clear resource ('complete project details including all source files'), going beyond the tool name. It clearly conveys the basic function, though it does not explicitly differentiate itself from the similar sibling get_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?
No guidance is provided about when to choose this tool over get_script_content, list_script_projects, or other script-related siblings. The description only states what it returns, leaving the agent to infer the appropriate selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_engine_infoGet Search Engine InfoBRead-onlyIdempotent
Retrieves metadata about a Programmable Search Engine.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the tool returns metadata rather than content, which is mildly informative, but it does not discuss auth needs, rate limits, or which specific search engine is being referenced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no redundant wording, filler, or repeated annotation content. It is front-loaded with the action verb and direct object.
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 one-parameter read-only tool with an output schema and strong annotations, so the description only needs to be minimally complete. However, it leaves ambiguity about how the email parameter identifies the search engine and does not mention auth context, which slightly weakens completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully describes user_google_email as the user's Google email address and marks it required, so schema coverage is 100%. The description adds no additional meaning about how this email maps to a specific Programmable Search Engine, so the baseline of 3 applies.
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 ('Retrieves metadata') on a specific resource ('a Programmable Search Engine'), making the tool's basic function obvious. It is not a tautology and does not appear to overlap with content-returning siblings, but it does not explicitly differentiate itself from related tools like search_custom.
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, and it does not mention prerequisites such as completing Google authentication or whether this should be called before search_custom. Usage context is left entirely to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spreadsheet_infoGet Spreadsheet InfoARead-onlyIdempotent
Gets information about a specific spreadsheet including its sheets.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet to get info for. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the operation's safety profile. The description adds minimal contextual value beyond 'including its sheets'; it does not disclose auth requirements, error conditions, or other behavioral traits, though none are strongly needed given the simple read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single direct sentence contains all essential information with no filler. The key scoping detail ('specific spreadsheet') is front-loaded, and the additional 'including its sheets' detail is valuable without adding clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only metadata lookup, the description combined with complete parameter schemas, strong annotations, and an output schema provides enough context for an agent to select and invoke the tool correctly. No critical missing information is apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already self-documented. The description provides no additional semantic detail about parameters, which is acceptable because the schema fully carries the load.
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 ('Gets information') and a specific resource ('a specific spreadsheet'), and notes the included 'sheets' detail. This distinguishes it from sibling tools like list_spreadsheets, which would return a collection rather than a single spreadsheet's metadata.
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 you need information about one identified spreadsheet. However, it does not explicitly state when not to use it or mention alternatives such as list_spreadsheets or read_sheet_values, so the 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.
get_taskGet TaskBRead-onlyIdempotent
Get details of a specific task.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| task_list_id | Yes | The ID of the task list containing the task. | |
| task_id | Yes | The ID of the task to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description is consistent with these and adds no additional behavioral context beyond what annotations convey.
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 or redundancy. It is appropriately sized for a simple read-by-ID tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple single-resource read operation, and the output schema plus annotations cover most operational concerns. However, it does not mention how task_id is obtained or note any auth dependency, so completeness is strong but not maximal.
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 100%, so all three parameters are already documented in the schema. The description adds no parameter-level meaning or 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 clear verb and resource: 'Get details of a specific task.' The word 'specific' implies retrieval of a single task, distinguishing it from list_tasks, though it does not 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 given about when to use this tool versus list_tasks, manage_task, or get_task_list. There are no prerequisites, exclusions, or explicit routing to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_listGet Task ListBRead-onlyIdempotent
Get details of a specific task list.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| task_list_id | Yes | The ID of the task list to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as read-only, idempotent, non-destructive, and open-world, so the safety profile is covered. However, the description itself adds no behavioral context beyond 'get details,' such as scope limitations, authentication requirements, or response characteristics. It neither contradicts the annotations nor contributes meaningful behavioral disclosure beyond them.
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, efficient sentence that immediately states the action and object. There is no filler, repetition, or unnecessary 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?
For a simple read operation with two fully documented required parameters, an output schema, and strong annotations, the description is largely complete. It lacks a brief pointer to list_task_lists for ID discovery, but the core invocation needs are satisfied by the schema and 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 100%, with both parameters clearly documented in the input schema. The description does not add further semantic detail about the parameters, but the schema already carries the burden, so the baseline 3 is appropriate.
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 details of a specific task list.' It clearly identifies the operation as retrieving one list by ID, and the required task_list_id parameter reinforces this. It does not explicitly contrast with sibling tools like list_task_lists or get_task, but the resource and scope are unambiguous enough.
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 is provided. The description does not mention that list_task_lists should be used first to discover task_list_id, nor does it explain when get_task_list is preferred over list_task_lists or how it differs from get_task. The 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_versionGet VersionBRead-onlyIdempotent
Gets details of a specific version.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| version_number | Yes | The version number to retrieve (1, 2, 3, etc.) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond those annotations—no mention of error behavior, existence requirements, authentication needs, or how a missing version is handled.
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 six words and front-loaded with the key verb and resource. There is no filler, repetition of the title, or unnecessary detail that would dilute the message.
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-identifier tool with a fully described input schema, comprehensive annotations, and an output schema present, the description is sufficient. The only minor gap is the lack of a pointer to list_versions for discovering version numbers, but this is not essential for correct invocation when the caller already knows the version.
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 100%, with all three parameters already described clearly (script_id, version_number, user_google_email). The description does not add extra parameter semantics, so the baseline score of 3 is appropriate since the schema carries the burden.
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 ('Gets details') and the resource ('a specific version'), which is more specific than a generic 'get version'. It does not explicitly differentiate itself from sibling tools like list_versions or create_version, but the phrase 'specific version' implies a single-object retrieval rather than enumeration or creation.
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: retrieve details for one known version using its version_number. However, the description provides no explicit when-to-use guidance, no exclusions, and does not mention that list_versions should be used when version numbers need to be enumerated or when all versions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_to_google_docImport 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. For batch operations, prefer file_path for files on disk so callers do not need to load full file contents into their context.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_name | Yes | The name for the new Google Doc (extension will be ignored). | |
| content | No | Text content for text-based formats. Use only for short snippets or content already in memory. | |
| file_path | No | Local file path or file:// URL for any supported format (MD, TXT, HTML, DOCX, ODT, RTF). Appropriate for larger files than content, but file_path may still load the file into memory or perform non-streaming reads. Avoid very large files that could exceed memory or time limits; use streaming/chunked uploads or an alternative API for huge files. | |
| file_url | No | Remote URL to fetch the file from (http/https). | |
| source_format | No | Source format hint ('md', 'markdown', 'docx', 'txt', 'html', 'rtf', 'odt'). Auto-detected from file_name extension if not provided. | |
| folder_id | No | The ID of the parent folder. Defaults to 'root'. | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavioral details such as automatic conversion and preservation of formatting, which are not in the annotations. It also warns about file_path memory limitations and recommends avoiding very large files. However, it does not explicitly state that a new file is created (vs. updating an existing one), though that is implied. Overall, it adds meaningful context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three short sentences. It conveys all essential information without redundancy or unnecessary detail. The structure is efficient, with the main action stated first and operational hints provided afterward.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (7 parameters) and the presence of an output schema, the description is quite complete. It covers the core function, supported formats, and important caveats about file handling. It does not mention the return value, but that is presumably documented in the output schema. The description sufficiently contextualizes the tool for an agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for each parameter, including specific guidance for file_path and source_format. The tool description adds an extra hint about preferring file_path for batch operations, which is not in the schema. This supplementary guidance improves parameter understanding beyond the baseline, though the schema is already quite thorough.
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 ('imports a file') with specific formats (Markdown, DOCX, TXT, HTML, RTF, ODT) and the result (into Google Docs format with automatic conversion). It distinguishes the tool by its conversion capability, which is directly relevant to the tool's 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 provides some guidance on parameter choice ('For batch operations, prefer file_path') but does not explicitly compare this tool to alternatives like create_drive_file or import_to_google_slides. It lacks clear when-to-use vs when-not-to-use guidance beyond a single hint, so it is not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_to_google_sheetsImport to Google SheetsA
Imports a spreadsheet (XLSX, XLS, ODS, CSV, TSV) into Google Sheets format with automatic conversion.
Google Drive automatically converts the source spreadsheet to native Google Sheets format, preserving rows, columns, sheets, and values. For batch operations, prefer file_path for files on disk so callers do not need to load full file contents into their context.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_name | Yes | The name for the new Google Sheets spreadsheet (extension will be ignored). | |
| content | No | Text content for text-based formats (CSV, TSV). Use only for short snippets or content already in memory. | |
| file_path | No | Local file path or file:// URL for any supported format (XLSX, XLS, ODS, CSV, TSV). Appropriate for larger files than content, but file_path may still load the file into memory or perform non-streaming reads. Avoid very large files that could exceed memory or time limits; use streaming/chunked uploads or an alternative API for huge files. | |
| file_url | No | Remote URL to fetch the spreadsheet from (http/https). | |
| source_format | No | Source format hint ('xlsx', 'xls', 'ods', 'csv', 'tsv'). Auto-detected from file_name extension if not provided. | |
| folder_id | No | The ID of the parent folder. Defaults to 'root'. | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as non-read-only, non-idempotent, and non-destructive. The description adds relevant behavioral context beyond that: automatic conversion to native Google Sheets, preservation of rows, columns, sheets, and values, and a note that file_path avoids loading file contents into context. There is no contradiction with 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 compact and front-loaded: the first sentence states the core operation, the second clarifies conversion behavior, and the third gives targeted file_path guidance. Every sentence earns its place and there is no redundant restatement of schema fields.
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 output schema and fully documented input schema, the description covers the essential behavior and a key performance/context decision (file_path for large/batch imports). It does not explicitly contrast with create_spreadsheet or mention authentication prerequisites, but the missing guidance is minor and inferable from the sibling set.
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 100% schema coverage, the baseline is 3, and the description adds extra decision value by advising file_path for disk files and for batch operations. It also explains what conversion preserves, which helps callers interpret the results associated with file_name and source_format.
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: 'Imports a spreadsheet (XLSX, XLS, ODS, CSV, TSV) into Google Sheets format with automatic conversion.' This clearly separates it from sibling importers like import_to_google_doc and import_to_google_slides by naming the target format and source types.
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 parameter-level guidance ('For batch operations, prefer file_path for files on disk so callers do not need to load full file contents into their context'), but it does not state when to use this tool versus alternatives such as create_spreadsheet or create_drive_file. Usage is implied rather than explicitly scoped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_to_google_slidesImport to Google SlidesA
Imports a presentation (PPTX, PPT, ODP) into Google Slides format with automatic conversion.
Google Drive automatically converts the source presentation to native Google Slides format, preserving slides, layouts, text, and images. For batch operations, prefer file_path for files on disk so callers do not need to load full file contents into their context.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_name | Yes | The name for the new Google Slides presentation (extension will be ignored). | |
| file_path | No | Local file path or file:// URL for any supported format (PPTX, PPT, ODP). Appropriate for larger files than content, but file_path may still load the file into memory or perform non-streaming reads. Avoid very large files that could exceed memory or time limits; use streaming/chunked uploads or an alternative API for huge files. | |
| file_url | No | Remote URL to fetch the presentation from (http/https). | |
| source_format | No | Source format hint ('pptx', 'ppt', 'odp'). Auto-detected from file_name extension if not provided. | |
| folder_id | No | The ID of the parent folder. Defaults to 'root'. | root |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses meaningful behavior beyond annotations: Google Drive converts the file automatically and preserves slides, layouts, text, and images. It also notes that file_path is preferable for batch operations to reduce context loading. This is consistent with readOnlyHint=false and adds useful operational context, even if it does not mention duplicate creation or ownership side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the first sentence states the core action, the second explains the conversion behavior, and the third gives a practical usage tip. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete enough for an import tool: it explains supported formats, conversion behavior, preservation guarantees, and provides batch guidance. With an output schema present and detailed parameter descriptions, nothing critical is missing. A small gap is the lack of explicit mention that repeated imports may create duplicate presentations, though idempotentHint=false already signals this.
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 100%, so a baseline of 3 applies. The description adds value beyond the schema by recommending file_path for batch operations to avoid loading full file contents, which helps the agent select between parameters. It does not deeply explain all parameters, but the schema already handles that.
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 imports PPTX, PPT, and ODP files into Google Slides format with automatic conversion. It is specific about verb and resource, but does not explicitly distinguish itself from sibling tools like import_to_google_doc or import_to_google_sheets, though the Google Slides resource makes the intent fairly obvious.
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 a concrete usage guideline: for batch operations, prefer file_path so callers avoid loading full file contents into context. It provides clear context for when to use this parameter/approach, though it does not explicitly state alternatives or exclusions relative to other import/sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_elementsInsert Doc ElementsC
Inserts structural elements like tables, lists, or page breaks into a Google Doc.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| element_type | Yes | Type of element to insert ("table", "list", "page_break") | |
| index | Yes | Position to insert element (0-based) | |
| rows | No | Number of rows for table (required for table) | |
| columns | No | Number of columns for table (required for table) | |
| list_type | No | Type of list ("UNORDERED", "ORDERED") (required for list) | |
| text | No | Initial text content for list items |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the description's 'inserts' adds little beyond confirming a write operation. It does not disclose behaviors like index validity constraints, whether insertion shifts existing content, or side effects of repeated calls at the same index — meaningful gaps for a mutation tool flagged openWorldHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; every word earns its place. It is slightly under-structured in that a brief clause pointing to an alternative sibling would have made it near-optimal, but as written it is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema (100% coverage) and output schema carry parameter and return semantics, and annotations carry the safety profile, so the description is not obliged to repeat those. However, for an 8-parameter mutation tool with openWorldHint=true, the missing usage differentiation and insertion-behavior context leave noticeable gaps in what an agent needs 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 100%, so every parameter (element_type, index, rows, columns, list_type, text, etc.) is already documented in the schema. The description's mention of tables/lists/page breaks mirrors the element_type enum values and adds no new semantic meaning, warranting the baseline 3.
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 ('Inserts') and names the resource (Google Doc) plus concrete element types (tables, lists, page breaks), which distinguishes it from obvious text/image siblings like modify_doc_text and insert_doc_image. It does not, however, differentiate from overlapping doc siblings such as create_table_with_data and batch_update_doc, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use/when-not-to-use guidance or alternatives are given. Given the dense sibling list with overlapping capabilities (create_table_with_data for tables, batch_update_doc for arbitrary doc updates), an agent gets no criteria for choosing this tool over those. Usage is only weakly implied by the description's purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_doc_imageInsert Doc ImageA
Inserts an image into a Google Doc from Drive or a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| image_source | Yes | Drive file ID or public image URL | |
| index | Yes | Position to insert image (0-based) | |
| width | No | Image width in points (optional) | |
| height | No | Image height in points (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a mutating operation (readOnlyHint=false), and the description clarifies insertion of an image from Drive/URL without contradicting the annotations. It does not add deeper behavioral context such as content shifting at the insertion index or authentication dependences on user_google_email.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler, and it conveys the essential purpose and accepted source types efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple insertion tool this is close to adequate: schema covers parameters and an output schema is present. However, it omits guidance on choosing this over insert_doc_elements and any preconditions around Drive/URL access, so an agent relying solely on the description could still choose or invoke it incorrectly.
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 100%, so the schema already explains all six parameters. The description adds no parameter-level meaning beyond restating the image source types already covered by image_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?
Description names a specific action, object, destination, and source: 'Inserts an image into a Google Doc from Drive or a URL.' This clearly distinguishes it from text-modification tools like modify_doc_text and broader element tools like insert_doc_elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is implied by the verb ('inserts an image') and the schema's document/image parameters, but the description gives no explicit when-to-use or when-not-to-use guidance. It does not compare against insert_doc_elements or state prerequisites like Drive sharing permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_doc_structureInspect Doc StructureARead-onlyIdempotent
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
headers / footers: Real segment IDs and previews for header/footer editing
tabs: List of available tabs in the document (if no tab_id specified)
WORKFLOW FOR TABLE INSERTION: 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
FORMATTING WORKFLOW: After inserting all text via batch_update_doc with end_of_segment=true, call this tool with detailed=true to get exact start_index and end_index for every paragraph. Use those indices directly in format_text and update_paragraph_style operations in a second batch_update_doc call.
HEADER/FOOTER WORKFLOW: For ordinary header/footer text, use update_doc_headers_footers. If you need low-level segment editing, call this tool first and use the real segment_id values returned under headers/footers. Do not invent IDs.
The detailed output includes elements[].start_index and elements[].end_index with text_preview for each paragraph, making it easy to identify which ranges to format.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to inspect | |
| detailed | No | Whether to return detailed structure information | |
| tab_id | No | Optional ID of the tab to inspect. If not provided, inspects main document. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as readOnly, idempotent, and non-destructive. The description adds substantive behavioral context beyond those hints: it defines total_length as the maximum safe insertion index, warns against inventing segment IDs, and explains the conditional behavior of tabs in the output. It makes the tool's inspection semantics and safe usage bounds 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 description is lengthy but well-organized into labeled sections, bullets, and numbered steps, which makes the complexity navigable. It front-loads the core purpose and critical usage warning, and most sections earn their place by conveying actionable workflow detail. Some redundancy exists between the 'CRITICAL FOR TABLE OPERATIONS' callout and the repeated workflow steps, but it does not become 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?
Given the tool's complexity and the presence of an output schema, the description is exceptionally complete. It covers not just what the tool returns but how to consume those outputs in real workflows (table insertion indices, formatting ranges, header/footer segment IDs). Nothing an agent needs to call this 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?
Input schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds extra meaning by explaining how the detailed parameter changes the output (elements with start_index/end_index and text_preview) and that tab_id controls whether a list of tabs is returned. This goes beyond the schema's minimal 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 uses a clear verb+resource combination: 'inspect' + 'document structure', and goes further to state the primary purpose: finding safe insertion points and understanding layout. It differentiates itself from siblings like debug_table_structure by emphasizing safe index discovery and document-wide structure inspection, not low-level table debugging.
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?
Explicit usage guidance is provided in multiple forms: a 'USE THIS FOR' list, a 'CRITICAL FOR TABLE OPERATIONS' mandate to call before creating tables, and workflow steps for table insertion, formatting, and header/footer editing. It also names an alternative (update_doc_headers_footers) for ordinary header/footer text, drawing a clear when-to-use versus when-not-to-use boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_calendarsList CalendarsARead-onlyIdempotent
Retrieves a list of calendars accessible to the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior, so the description does not need to restate safety. It adds value by clarifying that the listing is scoped to the authenticated user, which is meaningful context beyond the structured annotations. The output schema covers return details, reducing the need for further 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 a single concise sentence that directly states the tool's function without any filler. It is front-loaded with the action and resource, making it easy for an agent to quickly grasp the purpose. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one required parameter, full schema coverage, and an output schema, the description is largely sufficient. It correctly identifies the resource and the scope of results. It could be slightly more complete by noting any pagination or ordering behavior, but given the strong annotations and schema support, no critical information 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?
The input schema has 100% parameter description coverage, with user_google_email clearly described as the user's Google email address and required. The tool description adds no additional semantic detail about the parameter beyond what the schema already provides. The baseline score of 3 is appropriate when the schema carries the full documentation load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Retrieves a list') and resource ('calendars'), using a specific verb and object. It also adds a scoping detail ('accessible to the authenticated user'). However, it does not explicitly differentiate itself from sibling tools like create_calendar, though the verb and noun make the distinction reasonably 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 that this tool is for listing existing calendars, which indirectly distinguishes it from create_calendar and event-focused tools. There is no explicit guidance on when to choose this over alternatives, nor any mention of prerequisites like authentication state. The usage context is only implied by the nature of the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contact_groupsList Contact GroupsARead-onlyIdempotent
List contact groups (labels) for the user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| page_size | No | Maximum number of groups to return (default: 100, max: 1000). | |
| page_token | No | Token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'labels' terminology and user scoping, but does not describe pagination or response behavior beyond the schema's own field descriptions.
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 efficient sentence that conveys the action, resource, and scope without wasted words. Every element 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, read-only list operation, the description plus rich annotations and fully documented schema provide everything an agent needs to select and invoke the tool correctly. An output schema is present, so return-value details are covered elsewhere.
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?
Input schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
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 resource ('contact groups'), with a clarifying parenthetical 'labels' and a clear user scope ('for the user'). It is immediately distinguishable from siblings like get_contact_group and manage_contact_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: to enumerate a user's contact groups. It does not explicitly name alternatives or exclusion conditions, but the list-vs-get/manage distinction among sibling tools makes the usage context reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_contactsList ContactsARead-onlyIdempotent
List contacts for the authenticated user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| page_size | No | Maximum number of contacts to return (default: 100, max: 1000). | |
| page_token | No | Token for pagination. | |
| sort_order | No | Sort order: "LAST_MODIFIED_ASCENDING", "LAST_MODIFIED_DESCENDING", "FIRST_NAME_ASCENDING", or "LAST_NAME_ASCENDING". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is fully covered. The description adds a useful scope constraint ('for the authenticated user') but does not disclose behavioral details such as pagination iteration or whether all contact groups are included. No contradiction with 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?
A single seven-word sentence that front-loads the verb and resource and contains zero filler. Nothing is repeated from the schema or annotations, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool, the structured data covers a lot: the output schema explains return values, the schema covers parameters, and the annotations cover safety. The main gap is that with search_contacts, get_contact, and list_contact_groups as siblings, the description does not clarify exactly what subset of contacts is returned or when listing should be chosen over searching.
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 100%, so the schema fully documents all four parameters (page_size, page_token, sort_order, user_google_email). The description's phrase 'authenticated user' slightly reinforces that user_google_email is the token holder's email, but this is marginal value beyond what the schema already states. Baseline 3 applies.
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 a clear resource ('contacts'), scoped to 'the authenticated user.' This distinguishes it from mutating tools like manage_contact and single-item tools like get_contact, though it does not explicitly name or contrast any sibling such as search_contacts.
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: call this when you need the authenticated user's own contact list. However, there is no explicit guidance on when to prefer it over search_contacts (broader search) or get_contact (single contact), and no exclusions or alternative conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deploymentsList DeploymentsARead-onlyIdempotent
Lists all deployments for a script project.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only the scope ('all deployments for a script project') and does not disclose additional behavioral details such as pagination, ordering, or authentication requirements. This adds some value but is minimal beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It front-loads the action ('Lists') and clearly identifies the resource and scope, 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 read-only listing tool, the description combined with the rich annotations and output schema provides sufficient context. The two required parameters are covered by the schema, and the annotations handle safety expectations. Nothing essential is missing for an agent to invoke this 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 100%, so both required parameters are already documented in the input schema. The description adds no extra meaning about parameter formats, defaults, or relationships. Baseline 3 is appropriate since the schema carries the full parameter documentation burden.
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 ('Lists'), a specific resource ('deployments'), and a clear scope ('for a script project'). This distinguishes it from related sibling tools like manage_deployment and list_versions without ambiguity.
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 it clear this is a listing operation, which implies when to use it, but it does not explicitly state when not to use it or mention alternatives such as manage_deployment. There is no exclusion or routing guidance beyond the verb 'Lists'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_docs_in_folderList Docs in FolderBRead-onlyIdempotent
Lists Google Docs within a specific Drive folder.
Returns: str: A formatted list of Google Docs in the specified folder.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| folder_id | No | root | |
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive). The description adds minimal behavioral context by stating it returns a formatted list, but it does not disclose recursion behavior, auth requirements, or pagination 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 brief and front-loaded with the core purpose. The Returns line is a slight redundancy given an output schema exists, 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?
This is a low-complexity read-only tool with rich annotations and an output schema, so the missing return details are not critical. However, the complete absence of parameter explanation and any usage routing leaves the definition only minimally viable.
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 does not explain user_google_email, folder_id, or page_size. Even the folder concept is only implied by the tool name and one phrase, not by any parameter-level 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 uses a specific verb and resource: 'Lists Google Docs within a specific Drive folder.' This clearly distinguishes it from sibling tools like list_drive_items (all items) and search_drive_files (search across Drive).
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_docs. The description states what it does but offers no context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_document_commentsList Document CommentsBRead-onlyIdempotent
List all comments from a Google Document.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| document_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds minimal context beyond 'list all comments', which is consistent but not extensive.
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?
Single sentence, front-loaded with purpose, no filler. Could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description is too minimal. It omits parameter details and usage context, making it insufficient for an agent unfamiliar with the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no information about the two required parameters (user_google_email, document_id). With 0% schema description coverage, the description should compensate but fails to do so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'all comments from a Google Document', which distinguishes it from sibling tools like list_spreadsheet_comments or list_presentation_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like manage_document_comment or the other list comment tools. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drive_itemsList Drive ItemsARead-onlyIdempotent
Lists files/folders or shared drive containers, 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).
Set resource_type to "shared_drives" to list shared drive containers instead of folder contents.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| folder_id | No | 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. | root |
| page_size | No | The maximum number of items to return. Defaults to 100. | |
| page_token | No | Page token from a previous response's nextPageToken to retrieve the next page of results. | |
| drive_id | No | ID of the shared drive. If provided, the listing is scoped to this drive. | |
| include_items_from_all_drives | No | Whether items from all accessible shared drives should be included if `drive_id` is not set. Defaults to True. | |
| corpora | No | 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 | No | 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 | No | Whether to include size, modified time, and link in results. Defaults to True. | |
| order_by | No | Sort order. Comma-separated list of sort keys with optional 'desc' modifier. Valid keys: 'createdTime', 'folder', 'modifiedByMeTime', 'modifiedTime', 'name', 'name_natural', 'quotaBytesUsed', 'recency', 'sharedWithMeTime', 'starred', 'viewedByMeTime'. Example: 'modifiedTime desc' or 'folder,modifiedTime desc,name'. Defaults to None (Drive API default ordering). | |
| resource_type | No | What to list. Use "items" for folder contents or "shared_drives" for shared drive containers. Defaults to "items". | items |
| query | No | Shared drive query used only when resource_type="shared_drives", e.g. "name contains 'Engineering'". | |
| include_organizers | No | When resource_type="shared_drives", include principals with the organizer role. This costs one extra permissions.list API call per shared drive returned. Defaults to False. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the read-only, idempotent, non-destructive profile. The description adds meaningful behavioral context about drive_id scoping, folder_id relativity, include_items_from_all_drives behavior, and the shared drive container mode. It does not contradict annotations; minor omission is listing depth (immediate vs recursive).
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?
Four dense sentences with no filler. The main action is front-loaded, and the conditional branches are expressed compactly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count and two distinct modes, the description covers the primary scenarios and parameter relationships. Minor gaps like pagination behavior and non-recursive listing are largely handled by the schema and output schema, making it fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 13 parameters with 100% description coverage, so baseline is 3. The description adds cross-parameter semantics: it explains how drive_id, folder_id, resource_type, and include_items_from_all_drives interact based on whether drive_id is set, which is more than the sum of individual 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?
Description states a clear verb ('Lists') and distinguishes two modes: files/folders vs shared drive containers. It also explains drive scoping behavior, which differentiates it from siblings like 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?
Provides conditional guidance: if drive_id is specified, list within that drive; if not, list My Drive and accessible shared drives; set resource_type to 'shared_drives' for containers. However, it does not explicitly contrast with search_drive_files or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_form_responsesList Form ResponsesBRead-onlyIdempotent
List a form's responses.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| form_id | Yes | The ID of the form. | |
| page_size | No | Maximum number of responses to return. Defaults to 10. | |
| page_token | No | Token for retrieving next page of results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, so the description adds no new behavioral context. It does not mention pagination behavior, response ordering, or any other trait beyond what annotations and schema already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence with no filler or unnecessary detail. It is concise, though it largely restates the title and provides no additional structural 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 list operation with a full output schema, rich annotations, and complete parameter documentation, the description is sufficient to call the tool correctly. The main gap is usage guidance relative to sibling tools, which is already accounted for in that 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?
All four parameters are fully described in the input schema (100% coverage), so no compensation is needed from the description. The description itself adds no parameter-level meaning, which is acceptable given the complete 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 ('List') and resource ('a form's responses'), making the operation clear. It does not explicitly mention sibling tools like get_form_response, so the agent must infer the collection-versus-single distinction from the plural noun and tool name.
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 is a single clause with no guidance on when to use this tool versus alternatives such as get_form_response or get_form. There are no stated conditions, exclusions, or routing hints for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gmail_filtersList Gmail FiltersARead-onlyIdempotent
Lists all Gmail filters configured in the user's mailbox.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds the scope 'all filters in the user's mailbox' but does not provide extra behavioral context such as pagination, ordering, or auth prerequisites.
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, focused sentence with no filler. It is front-loaded with the verb and resource and does not waste tokens.
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 simple one-parameter schema, the presence of an output schema, and rich annotations, the description is largely complete for correct invocation. It could be more complete by noting any required auth prerequisite, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so user_google_email is already well documented in the schema. The tool description adds no additional parameter meaning, which is acceptable per baseline but not enhancing.
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') and a clear resource ('all Gmail filters configured in the user's mailbox'). It cleanly distinguishes this from sibling tools like list_gmail_labels and manage_gmail_filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied: call this tool when you need to see the Gmail filters for a user. However, it does not explicitly state when to avoid it or mention any alternative, such as using manage_gmail_filter to create/update filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gmail_labelsList Gmail LabelsARead-onlyIdempotent
Lists all labels in the user's Gmail account.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the scoping detail that all labels are returned, but does not mention auth prerequisites or return behavior beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of eight words with no wasted verbiage. The essential information is front-loaded and every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one required parameter, an output schema, and annotations that cover safety. The description adequately states the operation scope; only sibling differentiation is omitted, which is more a usage-guideline concern than a 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 100%; the parameter user_google_email is fully described in the schema with its type and required status. The tool description adds no additional parameter-level meaning, so the baseline of 3 applies.
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 the specific verb 'Lists,' the resource 'all labels,' and the scope 'in the user's Gmail account.' This clearly differentiates it from message search tools and label-management tools like manage_gmail_label.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as list_gmail_filters or manage_gmail_label. Usage is only implied by the tool's name and basic purpose, not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presentation_commentsList Presentation CommentsBRead-onlyIdempotent
List all comments from a Google Presentation.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| presentation_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description adds little beyond stating 'List all comments', which aligns with these hints. The description does not elaborate on behavioral specifics such as pagination or rate limits, but given the annotations, the bar is lower.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately communicates the tool's purpose. No wasted words 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?
Given the rich annotations and an existing output schema, the description is adequate but minimal. It does not clarify whether comments are from all slides or just top-level, nor does it mention any scope limitations. It is acceptable but not fully complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has two required parameters with 0% description coverage. The description does not explain what user_google_email or presentation_id represent, nor how to obtain them. Since schema coverage is low, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List', the resource 'comments', and the scope 'from a Google Presentation'. It distinguishes from sibling tools like list_document_comments and list_spreadsheet_comments, which target different document types.
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 guidelines are provided about when to use this tool versus alternatives like list_document_comments or manage_presentation_comment. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_script_processesList Script ProcessesBRead-onlyIdempotent
Lists recent execution processes for user's scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| page_size | No | Number of results (default: 50) | |
| script_id | No | Optional filter by script ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds only the vague qualifier 'recent' and does not clarify what timeframe that implies, whether processes include running vs. completed ones, or how pagination behaves. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single, front-loaded sentence with no filler. It efficiently communicates the action and resource, though its brevity contributes to the lack of usage and behavioral context. Strong on conciseness, slightly weak on completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a list operation with full schema coverage, safety annotations, and an output schema, the description is nearly enough. However, it does not define what qualifies as a 'process', what 'recent' means, or how this relates to get_script_metrics. These gaps keep it from being 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 100%, so all three parameters are already documented with meaningful descriptions. The tool description's phrase 'user's scripts' loosely reflects user_google_email but adds no new semantic detail beyond the schema. The baseline of 3 applies.
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 ('Lists') and a specific resource ('recent execution processes for user's scripts'). It is clearly distinguishable from obvious siblings like list_script_projects and run_script_function, though it does not explicitly separate itself from get_script_metrics, which could also relate to executions. Overall the core purpose is 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 provides no guidance on when to use this tool versus alternatives such as get_script_metrics or list_script_projects. There are no stated prerequisites, conditions, or exclusions. An agent is left to infer the correct context from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_script_projectsList Script ProjectsARead-onlyIdempotent
Lists Google Apps Script projects accessible to the user.
Uses Drive API to find Apps Script files.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| page_size | No | Number of results per page (default: 50) | |
| page_token | No | Token for pagination (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint, and destructiveHint. The description adds the implementation detail 'Uses Drive API to find Apps Script files' and the scope 'accessible to the user,' but nothing beyond that. No contradiction with 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?
Two short sentences, front-loaded with the core purpose and followed by a one-line implementation note. No unnecessary detail, perfectly sized for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full parameter descriptions, robust annotations, and an output schema, the description covers the essential purpose and scope. Pagination is implied by page_token/page_size, so no critical information is missing, though a brief note on result ordering or returned fields would make it 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 100% and all three parameters (page_size, page_token, user_google_email) are well-described. The tool description adds no parameter-specific meaning beyond what the schema already provides, so baseline 3 is appropriate.
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 specific action and resource: 'Lists Google Apps Script projects accessible to the user.' This distinguishes it from sibling tools like list_drive_items, list_script_processes, and get_script_project without requiring the reader to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to enumerate Apps Script projects) but does not explicitly state when to prefer alternatives or when not to use it. No guidance on exclusions or comparison with related list tools like list_drive_items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sheet_tablesList Sheet TablesARead-onlyIdempotent
Lists all structured tables in a spreadsheet with their IDs, names, ranges, and column details. Use this to find table IDs for append_table_rows.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful scope information ('all structured tables') and return contents, but does not disclose potential pagination, rate limits, or authorization nuances. No contradiction with 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?
Two concise sentences with zero waste. The primary behavior and return contents are front-loaded, followed immediately by the practical purpose. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity, two required parameters, full schema coverage, rich annotations, and an output schema, this description is complete. An agent can correctly invoke it and understand why the result matters for append_table_rows.
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 100%, and both parameters are described clearly ('The ID of the spreadsheet', 'The user's Google email address'). The description adds no additional parameter-level meaning, which is acceptable since the schema already carries the full burden.
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: 'Lists all structured tables in a spreadsheet' with the exact outputs (IDs, names, ranges, column details). This clearly distinguishes it from siblings like list_spreadsheets, read_sheet_values, and 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?
Gives explicit context: 'Use this to find table IDs for append_table_rows.' This tells the agent when to call it. It does not explicitly mention when not to use it or name alternative tools for reading sheet values, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spacesList SpacesBRead-onlyIdempotent
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 |
|---|---|---|---|
| user_google_email | Yes | ||
| page_size | No | ||
| space_type | No | all |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds that the result is a formatted string of spaces accessible to the user, but does not disclose pagination, ordering, or space-type filtering behavior beyond the schema's default. There is no contradiction with 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 and front-loaded with the action in the first sentence. The second 'Returns' line is somewhat redundant but concisely specifies the return format. No rambling 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 list tool with strong annotations, the description is still incomplete because it omits any explanation of required parameter semantics and does not offer usage context such as discovering spaces before sending messages. With 0% schema coverage and no output schema details visible beyond 'str', the agent lacks enough guidance to filter spaces or understand the required email. The annotations cover safety, but not invocation 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?
The description provides no information about the three parameters. With schema description coverage at 0%, it does not compensate by explaining why 'user_google_email' is required or what 'space_type' and 'page_size' mean. The agent must rely solely on parameter names, which is insufficient for correctly invoking the tool.
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 ('Lists Google Chat spaces') and clarifies scope ('rooms and direct messages') and access ('accessible to the user'). It is clearly distinct from sibling tools like get_messages or search_messages, which handle message content rather than spaces.
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 needing to enumerate the user's spaces but gives no explicit when-to-use or alternative guidance. It does not mention that list_spaces is a prerequisite for messaging tools or contrast it with search_messages. Sibling differentiation is left mostly to the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spreadsheet_commentsList Spreadsheet CommentsBRead-onlyIdempotent
List all comments from a Google Spreadsheet.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| spreadsheet_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, and openWorldHint. The description adds minimal behavioral context beyond 'list all'. It does not detail pagination, rate limits, or scope of comments (e.g., across all sheets).
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, well-formed sentence that conveys the core functionality without any extraneous information. It is appropriately front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While an output schema exists (so return structure is defined elsewhere), the description does not outline what 'comments' includes (e.g., author, text, timestamp). It also lacks context on whether the list is limited to the user's comments or all comments on the spreadsheet, which could affect interpretation.
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%, meaning the input schema lacks parameter descriptions. The tool description does not elaborate on the purpose or format of 'user_google_email' or 'spreadsheet_id'. For instance, 'user_google_email' might be ambiguous (is it the authenticated user's email?), and this gap forces the agent to infer or hardcode.
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'), the resource ('comments'), and the scope ('from a Google Spreadsheet'). It differentiates from sibling tools like 'manage_spreadsheet_comment' (which modifies comments) and 'list_document_comments' (which targets documents).
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 provided. There is no mention of when to use this tool versus alternatives (e.g., 'manage_spreadsheet_comment' for modifications), prerequisites, or scenarios where it should be avoided. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spreadsheetsList SpreadsheetsBRead-onlyIdempotent
Lists spreadsheets from Google Drive that the user has access to.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| max_results | No | Maximum number of spreadsheets to return. Defaults to 25. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the access-based scoping (spreadsheets the user can access, not merely owns), which is useful beyond the annotations. It does not mention pagination or ordering, but with annotation coverage the bar is met at a basic level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 12-word sentence that front-loads the verb and resource with zero filler. Every word earns its place and the core scope ('spreadsheets from Google Drive that the user has access to') is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no description; annotations cover the safety profile; and both parameters are fully documented. The real gap is tool-selection context: nothing distinguishes this from search_drive_files or list_drive_items, which matters in a sibling set this large. For a simple list operation, the definition is otherwise adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both user_google_email and max_results are already fully described in the input schema, including the default of 25. The description adds no parameter-specific meaning, so the baseline of 3 applies.
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') and a specific resource ('spreadsheets from Google Drive that the user has access to'), so an agent can tell this enumerates accessible spreadsheets. It implicitly distinguishes from siblings like list_drive_items (all files) and get_spreadsheet_info (single spreadsheet metadata), but it does not name any alternative sibling, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no alternatives named. With roughly 90 siblings including search_drive_files, list_drive_items, and get_spreadsheet_info, the description gives the agent no textual basis for selecting this tool over those that could also surface spreadsheet data. The phrase 'that the user has access to' supplies minor scope context but no routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_task_listsList Task ListsBRead-onlyIdempotent
List all task lists for the user.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| max_results | No | Maximum number of task lists to return (default: 1000, max: 1000). | |
| page_token | No | Token for pagination. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'for the user' scoping, which is useful context. It does not disclose whether shared/delegated lists are included or how the 1000-item cap affects results, but with rich annotations the bar is lower and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 8-word sentence with zero filler, and the key scope ('all', 'for the user') is front-loaded. It is efficient, though it borders on under-specification since it carries no usage or differentiation context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool, the schema covers parameters, annotations cover safety, and an output schema exists. The clear gap is routing: nothing tells the agent to prefer this over get_task_list or list_tasks, nor clarifies whether the result includes only the user's own lists. Adequate but not 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 100%, with all three parameters (page_token, max_results, user_google_email) already documented including defaults and the 1000 maximum. The description adds no parameter-level meaning, so the baseline 3 applies.
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), resource (task lists), and scope (all, for the user), so it is not a tautology. However, it does not explicitly differentiate itself from the sibling get_task_list, leaving the agent to infer the single-vs-collection distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus close siblings such as get_task_list, manage_task_list, or list_tasks. No alternatives, exclusions, or selection conditions are mentioned, so the agent must infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksList TasksBRead-onlyIdempotent
List all tasks in a specific task list.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| task_list_id | Yes | The ID of the task list to retrieve tasks from. | |
| max_results | No | Maximum number of tasks to return. (default: 20, max: 10000). | |
| page_token | No | Token for pagination. | |
| show_completed | No | 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 | No | Whether to include deleted tasks (default: False). | |
| show_hidden | No | Whether to include hidden tasks (default: False). | |
| show_assigned | No | Whether to include assigned tasks (default: False). | |
| completed_max | No | Upper bound for completion date (RFC 3339 timestamp). | |
| completed_min | No | Lower bound for completion date (RFC 3339 timestamp). | |
| due_max | No | Upper bound for due date (RFC 3339 timestamp). | |
| due_min | No | Lower bound for due date (RFC 3339 timestamp). | |
| updated_min | No | Lower bound for last modification time (RFC 3339 timestamp). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description does not need to restate safety. The description adds the scoping to a single task list but does not mention filtering defaults, pagination, or that hidden/deleted tasks are excluded by default; saying 'all tasks' is slightly overstated relative to the default parameters.
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, direct, front-loaded sentence with no filler or redundant wording. It is appropriately concise for a read-only list operation, though it could have used an additional sentence to clarify filters or sibling relationships.
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 13 parameters, 2 required, and many task-related siblings, so a one-line generic description is thin. The output schema and rich parameter descriptions compensate partially, but the description still lacks guidance on when to choose this tool and what the default visibility/filter behavior is.
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 100% description coverage for all 13 parameters, so the schema already carries the semantic burden. The description only adds the notion of 'specific task list', which maps to task_list_id, but it does not enhance understanding of filters, pagination, or default behaviors 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 uses a specific verb ('List') and resource ('tasks in a specific task list'), clearly identifying what the tool returns. It does not explicitly differentiate from sibling tools like list_task_lists or get_task, but the 'specific task list' phrasing helps disambiguate it from operations that manage task lists or individual 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?
No guidance is given on when to use this tool versus alternatives such as list_task_lists, get_task, or manage_task. The description only states what it does, with no mention of exclusions, prerequisites, or when a different task-related tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsList VersionsARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds valuable context that versions are immutable snapshots created by deployments or explicit creation, which clarifies the data scope and reinforces the non-mutating nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core action front-loaded and the supporting snapshot context in a compact second sentence. 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 simple two-parameter read-only listing tool with full schema coverage and an output schema, the description covers what the tool does and the domain context. It does not mention pagination or ordering, but that is reasonably left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the two parameters (script_id, user_google_email) are already documented. The description adds no further parameter-level detail, so it meets the baseline for schema-covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Lists all versions of a script project.' It clearly distinguishes from sibling tools like get_version (single version) and create_version (write operation) by emphasizing 'all versions' and the snapshot nature.
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 alternatives are named or exclusions given, but the immutability and creation context implies this is for enumerating historical script snapshots. It does not explicitly say when to prefer list_versions over get_version or list_deployments, leaving usage mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_conditional_formattingManage Conditional FormattingADestructive
Manages conditional formatting rules on a Google Sheet. Supports adding, updating, and deleting conditional formatting rules via a single tool.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| action | Yes | The operation to perform. Must be one of "add", "update", or "delete". | |
| range_name | No | A1-style range (optionally with sheet name). Required for "add". Optional for "update" (preserves existing ranges if omitted). Not used for "delete". | |
| condition_type | No | 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 | No | 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 | No | Hex background color to apply when condition matches. Used by "add" and "update". | |
| text_color | No | Hex text color to apply when condition matches. Used by "add" and "update". | |
| rule_index | No | 0-based index of the rule. For "add", optionally specifies insertion position. Required for "update" and "delete". | |
| gradient_points | No | 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 | No | Sheet name to locate the rule when range_name is omitted. Defaults to the first sheet. Used by "update" and "delete". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and non-read-only behavior. The description adds that deletion is supported and that the tool consolidates add/update/delete operations, but it does not disclose side effects, auth requirements, or action-specific consequences beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The first sentence establishes the resource and the second enumerates the operations, making the purpose immediately 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?
For a tool with 11 parameters and three distinct actions, the schema carries the detailed operational load very well, and an output schema exists so return-value explanation is unnecessary. The description could add a brief usage-selection note, but combined with the rich schema it is largely sufficient 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 100%, and each parameter description already documents action-specific requirements such as rule_index being required for update/delete and range_name being required for add. The tool description itself adds no parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource—conditional formatting rules on a Google Sheet—and clearly enumerates the supported operations: adding, updating, and deleting. This distinguishes it from general formatting tools like format_sheet_range and avoids being a mere restatement of the tool name.
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 by focusing on conditional formatting rules, but it never explicitly says when to prefer this tool over alternatives or when not to use it. It states what the tool does but provides no exclusions or sibling-tool comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contactManage ContactADestructive
Create, update, or delete a contact. Consolidated tool replacing create_contact, update_contact, and delete_contact.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform: "create", "update", or "delete". | |
| contact_id | No | The contact ID. Required for "update" and "delete" actions. | |
| given_name | No | First name (for create/update). | |
| family_name | No | Last name (for create/update). | |
| phones | No | List of phone dicts {number, type?}. Supported types: mobile, work, home, main, workMobile, internal, other, etc. Use type="internal" for internal PBX/ATS short numbers (e.g. 250, 301) — stored as a standalone number without + prefix, displayed as "Internal: 250". | |
| emails | No | List of email dicts {address, type?}. | |
| organizations | No | List of org dicts {name?, title?, department?, jobDescription?, type?}. | |
| nicknames | No | List of nickname dicts {value, type?}. Useful for bilingual contacts (e.g. Hebrew/English alternative forms). Android dialer and WhatsApp search both index nicknames, enabling cross-script lookup. Supported types: default, alternate_name, maiden_name, initials, other, etc. | |
| urls | No | List of URL dicts {value, type?}. Supported types: homepage, blog, profile, work, ftp, reservations, other, etc. | |
| user_defined | No | List of custom field dicts {key, value}. Useful for structured data like account numbers, IDs, or custom dates. | |
| relations | No | List of relation dicts {person, type?}. Supported types: spouse, child, parent, friend, manager, assistant, etc. | |
| notes | No | Additional notes (for create/update). | |
| address | No | Street address (for create/update). | |
| birthday | No | Birthday as 'YYYY-MM-DD', 'MM-DD' (no year), or 'clear'/'' to remove. | |
| phones_mode | No | How to update phones on "update": "merge" (default), "replace", or "remove". merge = read-modify-write with dedup by canonicalForm/normalized value. replace = overwrite all phones with provided list. remove = delete phones matching provided numbers. | merge |
| emails_mode | No | How to update emails on "update": "merge" (default), "replace", or "remove". | merge |
| organizations_mode | No | How to update orgs on "update": "merge" (default), "replace", or "remove". | merge |
| nicknames_mode | No | How to update nicknames on "update": "merge" (default), "replace", or "remove". | merge |
| urls_mode | No | How to update urls on "update": "merge" (default), "replace", or "remove". merge dedups by normalized URL (lowercased, trailing slash stripped). | merge |
| user_defined_mode | No | How to update custom fields on "update": "merge" (default), "replace", or "remove". merge overrides value on matching key; new keys appended. | merge |
| relations_mode | No | How to update relations on "update": "merge" (default), "replace", or "remove". | merge |
| phone | No | [DEPRECATED] Single phone number. Use phones=[{"number":..., "type":"mobile"}]. | |
| No | [DEPRECATED] Email address. Use emails=[{"address":..., "type":"other"}]. | ||
| organization | No | [DEPRECATED] Company name. Use organizations=[{"name":...}]. | |
| job_title | No | [DEPRECATED] Job title. Use organizations=[{"title":...}]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, readOnly=false, and idempotent=false, and the description's create/update/delete verbs are consistent with those hints. The description adds no deeper behavioral detail such as merge semantics, read-modify-write behavior, or prerequisites for update/delete, but it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. The first clause states the core action, and the second clause justifies why this tool exists, earning its place without bloating the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the very rich input schema, output schema presence, and annotations, the description does not need to enumerate parameters or return behavior. The only minor gap is the lack of an explicit pointer to manage_contacts_batch for multi-contact operations, but the schema and annotations otherwise make the tool sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all 26 parameters in detail, including action-specific requirements and mode semantics. The description itself contributes no additional parameter-level meaning, so it stays at the coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb-resource scope: 'Create, update, or delete a contact.' It also frames the tool as a consolidated replacement for three legacy tools, making its role in the API unambiguous and easy to distinguish from read-only or batch-oriented 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 gives useful context by naming the three tools it replaces, which implies this is the single-contact CRUD entry point. However, it does not explicitly address when to use this tool versus sibling manage_contacts_batch or other contact-related tools, leaving the batch-vs-single decision implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contact_groupManage Contact GroupADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform: "create", "update", "delete", or "modify_members". | |
| group_id | No | The contact group ID. Required for "update", "delete", and "modify_members" actions. | |
| name | No | The group name. Required for "create" and "update" actions. | |
| delete_contacts | No | If True and action is "delete", also delete contacts in the group (default: False). | |
| add_contact_ids | No | Contact IDs to add (for "modify_members"). | |
| remove_contact_ids | No | Contact IDs to remove (for "modify_members"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate that the tool is destructive, non-read-only, and non-idempotent, so the description need not repeat that. It does not add extra behavioral context beyond the listed actions, such as the cascading delete_contacts side effect, which is left to the parameter 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 two sentences with no filler. The core operations are front-loaded, and the consolidation rationale is stated in one short follow-up sentence.
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 full schema coverage and an output schema, an agent has enough structured detail to invoke the tool correctly. It could be improved by explicitly routing users to read-only group tools or highlighting the delete_contacts cascade, but the core consolidation intent is clear.
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 100%, so the baseline applies. The description's action list maps directly onto the action parameter values, but it does not add dependency or relationship details beyond what the schema already 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 clear set of actions—create, update, delete, or modify members—tied to a specific resource: contact groups. It also distinguishes itself by explicitly noting it is a consolidated replacement for several older 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?
The description clearly establishes this as the tool to use for contact group mutations, replacing four dedicated tools. However, it does not explicitly state when to prefer read-only siblings like list_contact_groups or get_contact_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_contacts_batchManage Contacts BatchCDestructive
Batch create, update, or delete contacts. Consolidated tool replacing batch_create_contacts, batch_update_contacts, and batch_delete_contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform: "create", "update", or "delete". | |
| contacts | No | List of contact dicts for "create" action. Each dict may contain: given_name, family_name, phones, emails, organizations, notes, address. Deprecated: phone, email, organization, job_title. | |
| updates | No | List of update dicts for "update" action. Each dict must contain contact_id and may contain the same fields as contacts. | |
| contact_ids | No | List of contact IDs for "delete" action. | |
| field | No | For "update" action — the single People API field to update across all contacts in this batch. Required. Must be one of: names, phoneNumbers, emailAddresses, organizations, nicknames, urls, userDefined, relations, biographies, addresses, birthdays. Using a single field per batch call prevents unintentional data loss from a union updateMask overwriting unrelated fields. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the destructive, non-read-only, non-idempotent nature, and the description adds no behavioral context beyond the bare operations. Important caveats about update overwrite risk and field-specific behavior appear only in the schema, not in the 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?
Two concise sentences with no filler. It front-loads the core action and provides consolidation context, though it is slightly terse for a complex batch mutation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema and annotations carry most of the necessary context, including per-parameter semantics and destructive behavior. However, the description does not provide a high-level overview connecting actions to their required inputs (contacts vs updates vs contact_ids), which would help an agent plan a batch operation safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter has detailed descriptions, including action enums, field constraints, and which parameter applies to which action. The description adds no parameter information, but none is needed given the thorough 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 ('Batch create, update, or delete contacts') and a resource, clearly indicating the tool's consolidated purpose. It distinguishes itself from the replaced batch_* tools, though it does not explicitly contrast with current siblings like manage_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?
No guidance is given on when to use this batch tool versus the singular manage_contact, nor which action requires which parameter set. The phrase 'Consolidated tool replacing...' references tools that are no longer in the sibling list, so it provides little actionable routing for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_deploymentManage DeploymentCDestructive
Manages Apps Script deployments. Supports creating, updating, and deleting deployments.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| action | Yes | Action to perform - "create", "update", or "delete" | |
| script_id | Yes | The script project ID | |
| deployment_id | No | The deployment ID (required for update and delete) | |
| description | No | Deployment description (required for create and update) | |
| version_description | No | Optional version description (for create only) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds minimal behavioral context beyond 'creating, updating, and deleting deployments'. It does not disclose side effects or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero wasted words. Highly concise 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?
Given the tool has 6 parameters, an output schema, and many siblings, the description is too brief. It lacks mention of prerequisites, return values, or distinctions from similar 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 coverage is 100% with parameter descriptions. The general description does not add significant meaning beyond the schema. Baseline 3 is appropriate.
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 manages Apps Script deployments and supports creating, updating, and deleting. The verb 'manages' is slightly broad but the second sentence specifies the actions, making the purpose clear. However, it does not differentiate from sibling tools like list_deployments, so not 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 use this tool versus alternatives (e.g., list_deployments for listing). The description only states what it does, without specifying context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_doc_tabManage Doc TabADestructive
Manage document tabs: create, rename, delete, or populate from Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document | |
| action | Yes | Action to perform - "create", "rename", "delete", or "populate_from_markdown" | |
| tab_id | No | Tab ID (required for rename, delete, populate_from_markdown; use inspect_doc_structure to find IDs) | |
| title | No | Tab title (required for create; used by rename) | |
| index | No | Position index for new tab, 0-based among siblings (required for create) | |
| parent_tab_id | No | Optional parent tab ID to nest under (create only) | |
| markdown_text | No | Markdown source to render (populate_from_markdown only) | |
| replace_existing | No | Clear tab body before inserting markdown (default True) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description is consistent with them. The description adds that deletion is one of the operations, which helps identify a destructive path, but it does not disclose effects such as tab-content replacement or the irreversibility of deletion beyond what the schema's replace_existing parameter already says. This is moderate disclosure beyond annotations but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the resource and then lists all supported operations with zero filler. Every word contributes to understanding the tool's scope.
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 a rich schema covering 100% of parameters, an output schema, and annotations signaling destructive behavior, the tool is adequately specified for invocation. The description could still add a sentence about when to choose this tool over other document-manipulation siblings, which prevents a perfect score.
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 100%, so the baseline of 3 applies; all nine parameters have descriptions, including per-action requirements and the action enum. The description adds only the high-level 'populate from Markdown' concept, which maps to markdown_text but adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies document tabs as the resource and enumerates the four supported operations: create, rename, delete, and populate from Markdown. This is more specific than the generic title. It does not explicitly differentiate from sibling doc-editing tools, but the tab-specific resource and 'populate from Markdown' make 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 action list implies the tool is for document-tab lifecycle operations, and the schema directs agents to use inspect_doc_structure for tab IDs. However, the description itself provides no explicit when-to-use or when-not-to-use guidance and names no alternative tools. The intended scope is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_document_commentManage Document CommentA
Manage comments on a Google Document.
Actions:
create: Create a new document-level comment. Requires comment_content. Note: The Drive API cannot anchor comments to specific text; only the Google Docs UI can do that.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| document_id | Yes | ||
| action | Yes | ||
| comment_content | No | ||
| comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond the annotations: comments are document-level, and the Drive API cannot anchor comments to specific text, only the Google Docs UI can. This limitation is important and helps set expectations. The annotations already signal mutation (readOnlyHint false), so the description does not need to restate that.
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-line overview, then a bulleted action list, then a single note that prevents a common misuse. Every sentence contributes information, and the most important scoping/limitation information is front-loaded near its relevant action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a composite mutation tool, the description covers the action-dependent parameter requirements and the key API limitation, while the output schema covers return values. It could be slightly more explicit about not using comment_id when creating and about using list_document_comments to fetch comment IDs, but overall it gives an agent enough to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description carries the load by mapping each action to its required parameters: create needs comment_content, reply needs comment_id and comment_content, and resolve needs comment_id. This is essential because the schema only lists the parameters without relationships. It does not elaborate on user_google_email or document_id, but those are self-explanatory from their names and the required list.
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 'Manage comments on a Google Document' and then enumerates three specific operations (create, reply, resolve), so an agent knows exactly what the tool does. The resource scope (Google Document comments) distinguishes it from sibling tools managing spreadsheet or presentation comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list makes the intended use fairly clear and each bullet states which parameters the action requires. However, it does not explicitly state when to prefer list_document_comments for reading comments or mention that comment_id should be obtained beforehand, so the guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_drive_accessManage Drive AccessADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The ID of the file or folder. Required. | |
| action | Yes | 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 | No | Email address (user/group), domain name (domain), or omit for 'anyone'. Used by "grant". | |
| role | No | Permission role -- 'reader', 'commenter', or 'writer'. Used by "grant" (defaults to 'reader') and "update". | |
| share_type | No | Type of sharing -- 'user', 'group', 'domain', or 'anyone'. Used by "grant". Defaults to 'user'. | user |
| permission_id | No | The permission ID to modify or remove. Required for "update" and "revoke" actions. | |
| recipients | No | 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 | No | Whether to send notification emails. Defaults to True. Used by "grant" and "grant_batch". | |
| email_message | No | Custom notification email message. Used by "grant" and "grant_batch". | |
| expiration_time | No | Expiration in RFC 3339 format (e.g., "2025-01-15T00:00:00Z"). Used by "grant" and "update". | |
| allow_file_discovery | No | For 'domain'/'anyone' shares, whether the file appears in search. Used by "grant". | |
| new_owner_email | No | Email of the new owner. Required for "transfer_owner". | |
| move_to_new_owners_root | No | Move file to the new owner's My Drive root. Defaults to False. Used by "transfer_owner". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey that this is a mutating, destructive operation. The description adds specificity by naming revoke and transfer_owner, which are the destructive actions, but it does not disclose side effects, reversibility, or notification behavior beyond what the schema already documents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the tool's purpose, and contains no filler. Every sentence contributes to understanding what the tool does.
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 14-parameter tool with five action branches, the description is somewhat lean, but the input schema richly documents each parameter and the output schema handles return values. The main gap is unresolved overlap with the sibling set_drive_file_permissions tool, which prevents a higher completeness score.
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 100%, with each parameter individually documented in the input schema. The description adds no parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.
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 resource (Google Drive file and folder access permissions) and enumerates the supported operations: granting, batch-granting, updating, revoking permissions, and transferring ownership. It is specific about scope, though it does not explicitly differentiate from the sibling set_drive_file_permissions 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 phrasing 'Consolidated tool' and 'all through a single entry point' gives clear context that this is the intended hub for permission management. However, it does not name alternatives or state when to use get_drive_file_permissions or set_drive_file_permissions instead, 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.
manage_eventManage EventBDestructive
Manages calendar events. Supports creating, updating, deleting, and RSVP.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | Action to perform - "create", "update", "delete", or "rsvp". | |
| summary | No | Event title (required for create). | |
| start_time | No | Start time in RFC3339 format (required for create). | |
| end_time | No | End time in RFC3339 format (required for create). | |
| event_id | No | Event ID (required for update and delete). | |
| calendar_id | No | Calendar ID (default: 'primary'). | primary |
| description | No | Event description. | |
| location | No | Event location. | |
| attendees | No | Attendee email addresses or objects. | |
| timezone | No | Timezone (e.g., "America/New_York"). | |
| attachments | No | List of Google Drive file URLs or IDs to attach. | |
| add_google_meet | No | Whether to add/remove Google Meet. | |
| reminders | No | Custom reminder objects. | |
| use_default_reminders | No | Whether to use default reminders. | |
| transparency | No | "opaque" (busy) or "transparent" (free). | |
| visibility | No | "default", "public", "private", or "confidential". | |
| color_id | No | Event color ID (1-11, update only). | |
| recurrence | No | RFC5545 recurrence rules for a recurring event, e.g. ["RRULE:FREQ=WEEKLY;COUNT=10"]. | |
| guests_can_modify | No | Whether attendees can modify. | |
| guests_can_invite_others | No | Whether attendees can invite others. | |
| guests_can_see_other_guests | No | Whether attendees can see other guests. | |
| response | No | RSVP response — "accepted", "declined", "tentative", or "needsAction" (rsvp action only). | |
| rsvp_comment | No | Optional message to include with the RSVP response (rsvp action only). | |
| send_updates | No | Notification behavior for create, update, delete, and rsvp — "all" (default), "externalOnly", or "none". |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds no additional behavioral context about irreversibility of delete, notification impacts, or RSVP semantics. It is adequate but not enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that concisely conveys the tool's purpose. It is front-loaded but could benefit from a slightly more structured breakdown per action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (25 parameters, multiple actions, destructive behavior), the description is too minimal. It lacks guidance on which parameters are required for each action, and does not explain return values despite the presence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter is described in the schema. The tool description does not add meaning beyond what's already in the parameter descriptions, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool manages calendar events and enumerates the supported actions (creating, updating, deleting, RSVP). However, it does not differentiate itself from sibling tools like get_events (read-only) or manage_focus_time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not specify context, prerequisites, or exclusions for each action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_focus_timeManage Focus TimeADestructive
Manages Focus Time events on Google Calendar. These special events auto-decline meeting invitations and, by default, set the user's chat status to Do Not Disturb, helping protect blocks of uninterrupted work time.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | Action to perform - "create", "list", "update", or "delete". | |
| start_time | No | Start date/time. Use 'YYYY-MM-DD' for full-day or RFC3339 for partial-day (e.g., '2024-04-05T09:00:00Z'). Date-only values are auto-converted to dateTime (midnight-to-midnight). Required for create. | |
| end_time | No | End date/time (exclusive). Same format as start_time. For a single full day on April 5, use start_time='2026-04-05' and end_time='2026-04-06'. Required for create. | |
| summary | No | Display text on the calendar. Defaults to "Focus Time". | |
| description | No | Event description. Useful for adding context about what the focus time is for. | |
| auto_decline_mode | No | How to handle conflicting invitations. One of: "declineAllConflictingInvitations" (default), "declineOnlyNewConflictingInvitations", "declineNone". | |
| decline_message | No | Message included when auto-declining invitations. | |
| chat_status | No | Google Chat status during the focus time. Supports "doNotDisturb" (default) and "available". | |
| recurrence | No | RFC5545 recurrence rules for a recurring Focus Time series, e.g. ["RRULE:FREQ=WEEKLY;COUNT=10"]. | |
| timezone | No | Timezone for the event (e.g., "America/New_York", "Europe/London"). Required when using date-only values or dateTime values without an explicit UTC offset. | |
| time_min | No | For "list" action: start of time range. Defaults to current time. Recurring series are expanded into individual instances in the requested range. | |
| time_max | No | For "list" action: end of time range. | |
| max_results | No | For "list" action: maximum events to return. Defaults to 10. | |
| event_id | No | Event ID. Required for "update" and "delete" actions. | |
| calendar_id | No | Calendar ID. Defaults to 'primary'. Focus Time status events live on primary calendars, so use 'primary' or a user's primary calendar ID/email rather than a secondary calendar ID. | primary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description adds valuable behavioral context: Focus Time events auto-decline meeting invitations and, by default, set chat status to Do Not Disturb. These side effects are not obvious from the tool name alone and help the agent understand the real-world impact of creating such an event. The destructiveHint annotation is not contradicted by the 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?
Two focused sentences front-load the core purpose and the key behavioral consequences. No filler or repetition of schema 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?
The schema and output schema cover the parameter and return details, and the description covers the behavioral context. It is complete enough for an agent to understand this is a multi-action management tool for a special calendar event type, though it could have explicitly routed to regular-calendar or out-of-office siblings for contrast.
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 100%, so the parameters are already thoroughly documented with formats, defaults, and action-specific requirements. The description adds a conceptual layer by explaining the auto-decline and chat-status behavior that maps to auto_decline_mode and chat_status, but it does not need to restate the schema details. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resource (Focus Time events on Google Calendar) and explains their distinguishing behavior: auto-declining invitations and defaulting chat status to Do Not Disturb. It is clear what the tool operates on, though 'Manages' does not enumerate the create/list/update/delete actions covered by the action parameter.
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 establishes that this is for protecting uninterrupted work time and that these events behave differently from normal events, which implies when to use it. It does not explicitly name alternatives like manage_event or manage_out_of_office, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gmail_filterManage Gmail FilterBDestructive
Manages Gmail filters. Supports creating and deleting filters.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | Action to perform - "create" or "delete". | |
| criteria | No | Filter criteria object (required for create). | |
| filter_action | No | Filter action object (required for create). Named 'filter_action' to avoid shadowing the 'action' parameter. | |
| filter_id | No | ID of the filter to delete (required for delete). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description simply restates the operations without adding behavioral context beyond the annotations, which already mark the tool as destructive and non-read-only. It does not disclose irreversibility, permission requirements, or what happens on duplicate filter creation.
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 second sentence adding specific operation detail. The first sentence is somewhat redundant with the tool name, but there is no wasted 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?
Combined with the well-documented schema and an existing output schema, the description is sufficient for correct invocation. The main missing piece is explicit usage routing, but the schema compensates for parameter-level guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented, so the baseline is 3. The description adds no additional parameter-level meaning beyond what the schema already 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 resource (Gmail filters) and the specific actions (creating and deleting). It distinguishes itself from sibling tools like list_gmail_filters, though it doesn't 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?
The description conveys the tool's purpose—creating and deleting filters—so an agent knows when to invoke it. However, it provides no explicit guidance on when not to use it or how it relates to alternatives like list_gmail_filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_gmail_labelManage Gmail LabelADestructive
Manages Gmail labels: create, update, or delete labels.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | Action to perform on the label. | |
| name | No | Label name. Required for create, optional for update. | |
| label_id | No | Label ID. Required for update and delete operations. | |
| label_list_visibility | No | Whether the label is shown in the label list. | labelShow |
| message_list_visibility | No | Whether the label is shown in the message list. | show |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false and destructiveHint=true, and the description's 'delete' action is consistent with that safety profile — no contradiction exists. The description adds only concrete outcomes (create/update/delete) but no nuance such as system labels being undeletable, whether update is partial or full replacement, or failure behavior. Since annotations carry the safety load, the description contributes minimal additional behavioral context beyond what is already structured.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 10-word sentence, front-loaded with the verb+resource pair and followed by a colon-enumerated operation list. Every word contributes, with only a trivial repetition of 'labels' in the enumeration. It is highly scannable in a sibling list of over 130 tools.
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?
Moderate complexity — 6 parameters, 3 operation modes with distinct parameter requirements, and destructive potential — is substantially covered by the 100%-coverage schema, the presence of an output schema, and the safety annotations. What remains for the description is selection guidance and behavioral nuance, which is thin: no sibling routing and no disclosure of edge cases like system-label restrictions. This is adequate as a minimum viable definition but leaves clear 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 100%, and the schema itself documents conditional requirements ('Label name. Required for create, optional for update' and 'Label ID. Required for update and delete operations') as well as enum defaults for the visibility parameters. The description adds no parameter-level meaning beyond restating the action enum already present in the schema. The baseline of 3 applies because the schema does the heavy lifting.
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 identifies the resource (Gmail labels) and enumerates the full operation set ('create, update, or delete'), making the tool's scope unambiguous. The action set implicitly separates it from read-only sibling list_gmail_labels and from modify_gmail_message_labels, which operates on message-label assignments rather than label definitions. However, it never explicitly names exclusions or sibling alternatives, so differentiation is inferred rather than stated.
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 operation set implies the tool's use cases — creating, updating, or deleting label definitions — giving an agent a reasonable heuristic for selection. The description provides no explicit when-to-use guidance, no exclusions, and does not route the agent to list_gmail_labels for read-only viewing or to modify_gmail_message_labels for attaching labels to messages. This is implied usage at best, with no alternatives or conditionals stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_out_of_officeManage Out of OfficeADestructive
Manages Out of Office events on Google Calendar. These special events auto-decline meeting invitations and set the user's status to "Out of office" across Google Workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | Action to perform - "create", "list", "update", or "delete". | |
| start_time | No | Start date/time. Use 'YYYY-MM-DD' for full-day or RFC3339 for partial-day (e.g., '2024-04-05T09:00:00Z'). Date-only values are auto-converted to dateTime (midnight-to-midnight). Required for create. | |
| end_time | No | End date/time (exclusive). Same format as start_time. For a single full day on April 5, use start_time='2026-04-05' and end_time='2026-04-06'. Required for create. | |
| summary | No | Display text on the calendar. Defaults to "Out of Office". | |
| auto_decline_mode | No | How to handle conflicting invitations. One of: "declineAllConflictingInvitations" (default), "declineOnlyNewConflictingInvitations", "declineNone". | |
| decline_message | No | Message included when auto-declining invitations. | |
| recurrence | No | RFC5545 recurrence rules for a recurring Out of Office series, e.g. ["RRULE:FREQ=WEEKLY;COUNT=10"]. | |
| timezone | No | Timezone for the event (e.g., "America/New_York", "Europe/London"). Required when using date-only values or dateTime values without an explicit UTC offset. | |
| time_min | No | For "list" action: start of time range. Defaults to current time. Recurring series are expanded into individual instances in the requested range. | |
| time_max | No | For "list" action: end of time range. | |
| max_results | No | For "list" action: maximum events to return. Defaults to 10. | |
| event_id | No | Event ID. Required for "update" and "delete" actions. | |
| calendar_id | No | Calendar ID. Defaults to 'primary'. Out of Office status events live on primary calendars, so use 'primary' or a user's primary calendar ID/email rather than a secondary calendar ID. | primary |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=false and destructiveHint=true, so the description does not need to restate mutation. It adds useful behavioral context by explaining that these events auto-decline invitations and set the user's status. However, it does not address consequences of update/delete actions, though annotations partially cover this.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler. The first sentence names the resource and the second explains what makes OOO events special. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool with multiple actions, the description is minimal, but the input schema fully documents every parameter and an output schema exists. Annotations also flag mutability. The main gap is explicit routing versus sibling calendar tools, which is already captured in the usage_guidelines score.
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 contains no parameter-level detail, but schema_description_coverage is 100%, meaning every parameter already has semantic documentation. With the schema carrying that weight, a baseline score of 3 is appropriate.
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 resource as 'Out of Office events on Google Calendar' and adds distinguishing behavior: auto-declining invitations and setting Workspace status. The verb 'Manages' is somewhat generic, but the specific resource and domain semantics make the tool's purpose evident.
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 by explaining that OOO events are special auto-declining/status-setting events, but it never explicitly says when to prefer this tool over siblings like manage_event or manage_focus_time. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_presentation_commentManage Presentation CommentA
Manage comments on a Google Presentation.
Actions:
create: Create a new comment. Requires comment_content. Note: The Drive API cannot anchor comments to arbitrary text; Slides comments are element-scoped via the API.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| presentation_id | Yes | ||
| action | Yes | ||
| comment_content | No | ||
| comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a meaningful behavioral note beyond annotations: Slides comments are element-scoped via the Drive API and cannot be anchored to arbitrary text. This warns the agent about a real API limitation that annotations do not convey. The stated create/reply/resolve mutations are consistent with readOnlyHint=false and destructiveHint=false.
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, scannable, and front-loaded with the resource and action list. The API limitation note is placed where relevant, 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 moderate-complexity management tool with an output schema and five parameters, the description covers the action semantics and the key API anchoring limitation. It could be more complete by pointing to list_presentation_comments for obtaining comment_id, but the essential call behavior is adequately specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does clarify action-conditional parameter requirements: create needs comment_content; reply needs comment_id and comment_content; resolve needs comment_id. However, it does not explain user_google_email, presentation_id, or the null defaults, leaving some parameters dependent on obvious naming.
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 names the resource (comments on a Google Presentation) and enumerates the three concrete actions: create, reply, and resolve. This distinguishes it from list-only or other document comment tools, though it does not explicitly reference sibling tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The action list gives implied usage context by stating which parameters each action requires. However, it does not explicitly say when to prefer this tool over list_presentation_comments or other manage_comment siblings, nor does it provide exclusions or fallback guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_spreadsheet_commentManage Spreadsheet CommentA
Manage comments on a Google Spreadsheet.
Actions:
create: Create a new comment. Requires comment_content. Note: The Drive API cannot anchor comments to arbitrary text; Sheets comments are cell-scoped via the API.
reply: Reply to a comment. Requires comment_id and comment_content.
resolve: Resolve a comment. Requires comment_id.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| spreadsheet_id | Yes | ||
| action | Yes | ||
| comment_content | No | ||
| comment_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal write behavior via readOnlyHint=false, and the description adds a meaningful operational caveat: the Drive API cannot anchor comments to arbitrary text and Sheets comments are cell-scoped. This goes beyond the annotations without contradicting them.
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 each bullet contributing either a clear action definition or a critical API limitation. The cell-scoping note is the only extra detail and it adds genuine value.
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 mutation tool with no schema-level parameter descriptions, the definition covers the main invocation paths and required fields, and the output schema can handle return values. Minor gaps remain around exact action enum values and the meaning of user_google_email, but these do not block 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?
With 0% schema description coverage, the description compensates by tying parameter requirements to specific actions, clarifying the roles of comment_content and comment_id. It does not explain user_google_email or spreadsheet_id, but those are largely inferable from their names and the tool's Google Workspace 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 verb-resource pair, 'Manage comments on a Google Spreadsheet,' and breaks out concrete actions: create, reply, and resolve. This makes it clearly distinct from sibling tools like manage_document_comment and manage_presentation_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 action list gives clear context for when to use the tool and what each action requires, such as 'create: ... Requires comment_content' and 'reply: ... Requires comment_id and comment_content.' It does not explicitly name alternatives or exclusions, but the usage boundaries are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_taskManage TaskADestructive
Manage tasks: create, update, delete, or move tasks within task lists.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform. Must be one of: "create", "update", "delete", "move". | |
| task_list_id | Yes | The ID of the task list. Required for all actions. | |
| task_id | No | The ID of the task. Required for "update", "delete", and "move" actions. | |
| title | No | The title of the task. Required for "create", optional for "update". | |
| notes | No | Notes/description for the task. Used by "create" and "update" actions. | |
| status | No | Task status ("needsAction" or "completed"). Used by "update" action. | |
| due | No | Due date in RFC 3339 format (e.g., "2024-12-31T23:59:59Z"). Used by "create" and "update" actions. | |
| parent | No | Parent task ID (for subtasks). Used by "create" and "move" actions. | |
| previous | No | Previous sibling task ID (for positioning). Used by "create" and "move" actions. | |
| destination_task_list | No | Destination task list ID (for moving between lists). Used by "move" action. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false and destructiveHint=true, so the description need not restate that this is a mutating tool. It does add the specific actions (create, update, delete, move), but it does not disclose side effects, permission requirements, or reversibility beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence with a front-loaded verb and a concise action list. There is no wasted wording 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 action list plus the richly documented 100%-covered input schema and existing output schema make the definition largely sufficient for correct invocation. It could be slightly more complete with explicit alternatives, but that gap is minor given the schema and 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 100%, and each parameter has a detailed description including which actions use it. The tool description itself adds no parameter-level meaning, so the baseline of 3 applies.
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 clear verb and resource: 'Manage tasks: create, update, delete, or move tasks within task lists.' It explicitly enumerates the supported operations and distinguishes this tool from sibling read-only tools like list_tasks/get_task and from task-list management via manage_task_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for task CRUD and moving operations, but it does not explicitly state when to use this tool versus alternatives such as list_tasks or get_task. There are no exclusions or routing guidance like 'for reads, use list_tasks instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_task_listManage Task ListBDestructive
Manage task lists: create, update, delete, or clear completed tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| action | Yes | The action to perform. Must be one of: "create", "update", "delete", "clear_completed". | |
| task_list_id | No | The ID of the task list. Required for "update", "delete", and "clear_completed" actions. | |
| title | No | The title for the task list. Required for "create" and "update" actions. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=true, and idempotentHint=false, establishing a mutating, destructive profile. The description's action list is consistent with those annotations and adds the concrete 'clear completed tasks' behavior, but it doesn't disclose consequences such as whether delete or clear_completed are permanent or whether update merges or replaces list properties. It adds some value beyond annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single 11-word sentence with zero filler; the action list is front-loaded immediately after naming the resource. The only minor redundancy is that 'Manage task lists' closely echoes the tool title, but the colon-structured format is efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The structured data carries most of the burden: a full output schema covers return values, per-parameter schema descriptions cover inputs, and annotations cover the safety profile. The main gap is that action-selection semantics—which task_list_id applies to which action and what clear_completed actually does—are only implied by the schema, not explained in the description. Adequate for a well-annotated tool, but not rich.
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 100%, so every parameter (title, action, task_list_id, user_google_email) already has a documented description, including which actions require which fields. The description only restates the action enum values already present in the schema, adding no new meaning. The baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (task lists) and enumerates four concrete actions (create, update, delete, clear completed), which makes the tool's scope specific. It is implicitly distinguished from siblings: manage_task operates on individual tasks, and list_task_lists/get_task_list are read-only counterparts. The generic opener 'Manage' is slightly weak, but the action enumeration compensates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description never mentions that list_task_lists/get_task_list are the read-only options for task lists, nor that manage_task handles individual tasks, and it doesn't explain when each action (create vs update vs delete vs clear_completed) is appropriate. With dozens of siblings, the agent must infer selection entirely from the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_doc_textModify Doc TextADestructive
Modifies text in a Google Doc - can insert/replace text and/or apply formatting in a single operation.
TIP: To append text to the end of the document without calculating indices, set end_of_segment=true. This avoids index calculation errors.
For ordinary header/footer text, prefer update_doc_headers_footers. Only pass segment_id when you already have a real header/footer/footnote segment ID from inspect_doc_structure output. Do not guess IDs such as "kix.header" or "kix.footer".
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | ID of the document to update | |
| start_index | Yes | Start position for operation using Docs API indices from inspect_doc_structure. For the main body, 0 is also accepted as an alias for the first writable position. | |
| end_index | No | End position for text replacement/formatting (if not provided with text, text is inserted) | |
| text | No | New text to insert or replace with (optional - can format existing text without changing it) | |
| tab_id | No | Optional document tab ID to target | |
| segment_id | No | Optional header/footer/footnote segment ID to target | |
| end_of_segment | No | Insert text at the end of the targeted segment instead of start_index | |
| bold | No | Whether to make text bold (True/False/None to leave unchanged) | |
| italic | No | Whether to make text italic (True/False/None to leave unchanged) | |
| underline | No | Whether to underline text (True/False/None to leave unchanged) | |
| strikethrough | No | Whether to strike through text (True/False/None to leave unchanged) | |
| font_size | No | Font size in points | |
| font_family | No | Font family name (e.g., "Arial", "Times New Roman") | |
| font_weight | No | Font weight (100-900 in steps of 100; requires font_family) | |
| text_color | No | Foreground text color (#RRGGBB) | |
| background_color | No | Background/highlight color (#RRGGBB) | |
| link_url | No | Hyperlink URL (http/https) | |
| clear_link | No | Remove hyperlink from the target range | |
| baseline_offset | No | One of NONE, SUPERSCRIPT, SUBSCRIPT | |
| small_caps | No | Whether to apply small caps |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/mutating behavior. The description adds useful context about index calculation errors and the need for real segment IDs, going beyond the annotation flags. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: main action, time-saving tip, and critical cautions within three short sentences. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 21-parameter mutation tool with output schema, the description covers purpose, key usage tips, and a major pitfall. The schema handles parameter details, though it could mention alternative tools for structural edits.
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 covers all 21 parameters, so baseline is 3. The description adds meaningful tips for end_of_segment (avoiding index errors) and segment_id (don't guess IDs), which are not in the 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?
Clearly states it modifies text in a Google Doc with insert/replace and formatting in a single operation. Differentiates from the header/footer tool and mentions the use of inspect_doc_structure for segment 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?
Explicitly tells the agent to prefer update_doc_headers_footers for ordinary header/footer text. Provides specific guidance for using end_of_segment to append text and warns against guessing segment IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_gmail_message_labelsModify Gmail Message LabelsADestructive
Adds or removes labels from a Gmail message. To archive an email, remove the INBOX label. To delete an email, add the TRASH label.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| message_id | Yes | The ID of the message to modify. | |
| add_label_ids | No | List of label IDs to add to the message. | |
| remove_label_ids | No | List of label IDs to remove from the message. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as destructive and non-read-only, and the description adds meaningful behavioral detail: removing INBOX achieves archiving, adding TRASH achieves deletion. These are side-effect semantics not visible in the schema and not covered by the annotations, so the description provides real additional value without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences with no repetition or filler. The core purpose is front-loaded, and the two additional sentences each carry concrete, non-obvious usage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, annotations, and an output schema, the description covers the essential special-label behavior and destructive implications. It is slightly incomplete in not mentioning that multi-message operations could use batch_modify_gmail_message_labels, but this is a modest gap rather than a serious omission.
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 100%, so the baseline is 3. The description goes beyond the schema by naming concrete label IDs (INBOX, TRASH) and mapping them to high-level intents, which helps an agent populate add_label_ids and remove_label_ids meaningfully.
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: 'Adds or removes labels from a Gmail message.' This clearly distinguishes the tool from label-management siblings like manage_gmail_label and gives concrete meaning to the operation. The archive/delete examples further clarify the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage clues: 'To archive an email, remove the INBOX label' and 'To delete an email, add the TRASH label.' However, it never explicitly tells the agent when to choose this tool over the sibling batch_modify_gmail_message_labels or how it differs from manage_gmail_label. The usage guidance is useful but implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_sheet_valuesModify Sheet ValuesBDestructive
Modifies values in a specific range of a Google Sheet - can write, update, or clear values.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| range_name | Yes | The range to modify (e.g., "Sheet1!A1:D10", "A1:D10"). Required. | |
| values | No | 2D array of values to write/update. Can be a JSON string or Python list. Required unless clear_values=True. | |
| value_input_option | No | How to interpret input values ("RAW" or "USER_ENTERED"). Defaults to "USER_ENTERED". | USER_ENTERED |
| clear_values | No | If True, clears the range instead of writing values. Defaults to False. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile (readOnlyHint=false, destructiveHint=true), and the description's mention of 'clear values' aligns with the destructive hint without adding substantive new behavioral context. It does add the scope specificity ('specific range') and the three modes, but it does not disclose overwrite semantics, irreversibility, or auth requirements beyond what the annotations imply. The bar is lower because of annotations, but the description still adds only modest value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the core verb and resource before listing the modes. Every word earns its place, and it is appropriately sized for a tool whose schema is already self-documenting.
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 full schema coverage, the presence of an output schema, and annotations that declare destructiveness, the description covers the essential behavioral contract. It clearly states the operation scope and the three modes, which is sufficient for an agent to invoke the tool correctly in most cases. It is slightly terse for a 6-parameter mutation tool, but the missing details are all present in the structured fields.
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 100%, so the baseline is 3 per the rubric. The description's phrase 'write, update, or clear values' loosely maps to the values and clear_values parameters, but it does not clarify representation, defaults, or interpretation rules that the schema does not already cover. No additional parameter-level meaning is added.
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 ('Modifies') and resource ('values in a specific range of a Google Sheet'), and enumerates the three actions it can perform ('write, update, or clear values'). This is clear and non-tautological, and it implicitly distinguishes the tool from read-only siblings like read_sheet_values. However, it does not explicitly name a sibling or scope against alternatives such as append_table_rows, so it stops short of full 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 gives no explicit guidance about when to use this tool versus alternatives, nor does it mention exclusions or related tools. The only usage signal is the verb 'Modifies', which is implied by the tool name rather than explained. The schema covers parameter-level conditions, but the description itself offers no decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_sheet_rowsMove Sheet RowsADestructive
Moves rows from one sheet to another within the same spreadsheet. The move is performed in a single batchUpdate (copyPaste followed by deleteDimension). Note: batchUpdate executes requests sequentially but does not roll back on partial failure — if the copy succeeds but the delete fails, rows may be duplicated. Formulas, data types, and formatting are preserved (unlike a values.get/append round-trip). Row numbers are 1-based (matching the spreadsheet UI).
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| source_sheet | Yes | Name of the sheet to move rows from. Required. | |
| start_row | Yes | First row to move (1-based, inclusive). Required. | |
| end_row | Yes | Last row to move (1-based, inclusive). Required. | |
| destination_sheet | Yes | Name of the sheet to move rows to. Required. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by revealing the batchUpdate sequence (copyPaste then deleteDimension), the lack of rollback on partial failure, and the risk of duplication if only the delete fails. It also discloses that formulas, data types, and formatting are preserved, and clarifies 1-based row indexing. This is rich, non-obvious behavioral detail that materially affects invocation and outcome expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action, followed by implementation detail, a critical failure caveat, and a preservation note. Every sentence conveys essential operational or behavioral information without fluff. The structure allows an agent to quickly grasp what the tool does and what risks to anticipate.
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 destructive annotations and an output schema, the description covers the critical behavioral aspects: execution mechanism, failure semantics, preservation guarantees, and row indexing. It does not explicitly mention prerequisites such as the destination sheet needing to exist or constraints like source and destination differing, but these are less critical given the schema and output schema already provide structure. Overall, enough context is present 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 100%, so the schema already documents all six parameters including the 1-based and inclusive nature of start_row and end_row. The description adds minimal parameter-level value beyond reaffirming 1-based row numbers and noting rows are moved within the same spreadsheet. This matches the baseline of 3 for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Moves rows from one sheet to another within the same spreadsheet.' This is a specific verb and resource, distinct from typical read/write tools. However, it does not explicitly name a sibling tool for differentiation, instead relying on the phrase 'unlike a values.get/append round-trip' to contrast with an approach rather than a specific named alternative.
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 explicit. The description explains that formatting and formulas are preserved 'unlike a values.get/append round-trip,' which hints at when this tool is preferable, but it does not state clear when-to-use vs. when-not-to-use conditions or name alternatives. An agent must infer that this tool is for full-fidelity moves within the same spreadsheet.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_freebusyQuery FreebusyBRead-onlyIdempotent
Returns free/busy information for a set of calendars.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| time_min | Yes | The start of the interval for the query in RFC3339 format (e.g., '2024-05-12T10:00:00Z' or '2024-05-12'). | |
| time_max | Yes | The end of the interval for the query in RFC3339 format (e.g., '2024-05-12T18:00:00Z' or '2024-05-12'). | |
| calendar_ids | No | 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 | No | 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 | No | Maximum number of calendars for which FreeBusy information is to be provided. Optional. Maximum value is 50. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description adds the basic output scope ('free/busy information for a set of calendars'). However, it does not disclose limitations such as expansion caps, auth prerequisites, or the fact that detailed event data is not returned.
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 or redundancy. Every word contributes to the core meaning, and it is appropriately sized for the tool's simplicity.
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, complemented by a 100%-covered input schema and an output schema, is sufficient for an agent to invoke the tool correctly. The only notable gap is the absence of usage guidance versus sibling tools, but that 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 100%, so the input schema fully documents all six parameters including defaults, formats, and maximum values. The description adds no parameter-level meaning beyond what the schema already provides, so baseline 3 is appropriate.
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 ('Returns') and resource ('free/busy information for a set of calendars'), making the core purpose clear. It does not explicitly differentiate itself from siblings like get_events, so it misses the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives such as get_events or list_calendars. There is no mention of availability checking, exclusions, or conditions that would select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_sheet_valuesRead Sheet ValuesARead-onlyIdempotent
Reads values from a specific range in a Google Sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| range_name | No | The range to read (e.g., "Sheet1!A1:D10", "A1:D10"). Defaults to "A1:Z1000". | A1:Z1000 |
| include_hyperlinks | No | If True, also fetch hyperlink metadata for the range. Defaults to False to avoid expensive includeGridData requests. | |
| include_notes | No | If True, also fetch cell notes for the range. Defaults to False to avoid expensive includeGridData requests. | |
| include_formulas | No | If True, also fetch raw formula strings for cells that contain formulas. Useful for identifying cross-sheet references before writing back to a range. Defaults to False to avoid an extra API request. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true, covering safety and idempotency. Description adds no extra behavioral context, but does not contradict annotations. With annotations present, a score of 3 is 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?
Description is a single, concise sentence that is front-loaded. No unnecessary words. Every word is meaningful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (6 parameters, all documented), output schema exists (though not shown), and comprehensive annotations, the description is sufficient but could briefly mention optional features (hyperlinks, notes, formulas) for completeness. Still, it adequately covers the core purpose.
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 100%, with each parameter fully described in the input schema. The description does not add any additional meaning beyond what is in the schema. Baseline 3 applies.
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 it reads values from a specific range in a Google Sheet. The verb 'Reads' and resource 'values from a specific range' are specific. This distinguishes it from sibling tools like modify_sheet_values (write) or get_spreadsheet_info (metadata).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_spreadsheet_info, format_sheet_range). No mention of prerequisites or context. The description is too brief to help an agent decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resize_sheet_dimensionsResize Sheet DimensionsADestructive
Manages sheet-level dimension properties: resize columns/rows, auto-resize to fit content, freeze rows/columns, hide/unhide rows/columns, and insert/delete rows/columns.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| spreadsheet_id | Yes | The ID of the spreadsheet. Required. | |
| sheet_name | No | Sheet name to target. Defaults to the first sheet if not provided. | |
| column_sizes | No | Dict mapping column letters to pixel widths. Example: {"A": 200, "C": 300}. Can be a JSON string or Python dict. | |
| row_sizes | No | Dict mapping 1-based row numbers to pixel heights. Example: {"1": 40, "3": 60}. Can be a JSON string or Python dict. | |
| auto_resize_columns | No | List of column letters to auto-resize to fit content. Example: ["A", "B"]. | |
| auto_resize_rows | No | List of 1-based row numbers to auto-resize to fit content. Example: [1, 2]. | |
| frozen_row_count | No | Number of rows to freeze from the top. Use 0 to unfreeze all rows. | |
| frozen_column_count | No | Number of columns to freeze from the left. Use 0 to unfreeze all columns. | |
| hide_columns | No | List of column letters to hide. Example: ["C", "D"]. | |
| unhide_columns | No | List of column letters to unhide. Example: ["C", "D"]. | |
| hide_rows | No | List of 1-based row numbers to hide. Example: [3, 4]. | |
| unhide_rows | No | List of 1-based row numbers to unhide. Example: [3, 4]. | |
| insert_rows | No | Number of rows to insert. | |
| insert_rows_at | No | 1-based row number to insert before. Appends to the end of the sheet if omitted. | |
| insert_columns | No | Number of columns to insert. | |
| insert_columns_at | No | Column letter to insert before (e.g. "C"). Appends to the end if omitted. | |
| delete_rows | No | List of 1-based row numbers to delete. Example: [5, 6]. Best for non-contiguous rows. | |
| delete_row_range | No | Contiguous range of rows to delete, as "start:end" (1-based, inclusive). Example: "5:10" deletes rows 5 through 10. More efficient than delete_rows for large contiguous ranges. | |
| delete_columns | No | List of column letters to delete. Example: ["E", "F"]. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the destructiveHint annotation by spelling out the actual structural modifications: deleting/inserting rows and columns, hiding/unhiding, and freezing. This makes the mutating nature concrete for the agent. It stops short of noting consequences like irreversible data loss from deletion, but the annotations already flag destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the tool's scope and then lists its operation groups in a compact, scannable list. There is no filler or redundant explanation.
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 large parameter surface (20 params), the description plus the fully documented schema and existing output schema provide enough for an agent to invoke the tool correctly. It could add a note about combining multiple operations in one call, but that is reasonably implied by the optional parameters.
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 100%, so the input schema already documents every parameter with types, defaults, and examples. The tool description only summarizes operation categories and does not add parameter-level semantics, which is acceptable given the schema's richness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's domain: sheet-level dimension properties, and enumerates the concrete operations (resize, auto-resize, freeze, hide/unhide, insert/delete rows/columns). This distinguishes it from sibling sheet tools like modify_sheet_values or format_sheet_range, which handle content and formatting rather than dimensional structure.
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: whenever an agent needs to alter row/column dimensions, visibility, or structure. It does not explicitly name alternatives or exclusion conditions, but the operation list is specific enough to route selection correctly among the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_script_functionRun Script FunctionADestructive
Executes a function in a deployed script.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| function_name | Yes | Name of function to execute | |
| parameters | No | Optional list of parameters to pass | |
| dev_mode | No | Whether to run latest code vs deployed version |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry destructiveHint=true, readOnlyHint=false, and idempotentHint=false, so the safety profile is disclosed structurally. The description adds no behavioral context beyond 'executes a function' and does not warn that arbitrary Apps Script code may have side effects, though this is also covered by the annotations. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, grammatically complete sentence with no filler. It states the core action immediately and avoids redundancy with the schema or annotations.
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 schema, annotations, and output schema cover parameters, side-effect risk, and return format, so the tool is callable. However, the description is sparse: it omits any guidance about required deployment state, the fact that dev_mode can run undeployed code, and potential side effects beyond what annotations imply. A slightly richer description would improve agent confidence.
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 100%, so the schema already documents every parameter, including dev_mode, parameters, function_name, script_id, and user_google_email. The description adds no parameter-specific meaning, but none is needed given the complete 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 ('Executes') and a clear resource ('a function in a deployed script'). Among the many script-management siblings, this is the only direct execution tool, so it is easily distinguished from list_script_projects, get_script_content, and manage_deployment.
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 by the title and description: invoke an Apps Script function by script ID, function name, and user email. However, the description does not explicitly say when to use this instead of alternatives like generate_trigger_code or manage_deployment, nor does it mention prerequisites such as an existing deployment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_contactsSearch ContactsBRead-onlyIdempotent
Search contacts by name, email, phone number, or other fields.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| query | Yes | Search query string (searches names, emails, phone numbers). | |
| page_size | No | Maximum number of results to return (default: 30, max: 30). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose read-only, idempotent, open-world, and non-destructive behavior, so the bar is lower. The description adds scope context (searches personal contacts by name/email/phone) but leaves matching semantics and the ambiguous 'other fields' undefined. No contradiction with 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?
A single 10-word sentence with the verb front-loaded and zero wasted words. The description is appropriately sized for the tool's simplicity.
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 schema and annotations fully cover parameters and safety, and an output schema exists, so return values need no explanation. However, the description misses its key disambiguation role: given the large sibling set with several contact-related tools, an agent gets no help deciding between this and list_contacts or search_directory_people.
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 100%, so all three parameters are already fully documented in the schema. The tool description mostly echoes the query parameter description and adds only the vague 'other fields' extension.
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) and resource (contacts) with explicit searchable fields (name, email, phone number). It is clear and distinguishes itself from list_contacts and get_contact, though it doesn't explicitly differentiate from search_directory_people.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. With close siblings like list_contacts, get_contact, and search_directory_people, an agent receives no help selecting the appropriate tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_customSearch CustomCRead-onlyIdempotent
Performs a search using Google Custom Search JSON API.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| q | Yes | The search query. Required. | |
| num | No | Number of results to return (1-10). Defaults to 10. | |
| start | No | The index of the first result to return (1-based). Defaults to 1. | |
| safe | No | Safe search level. Defaults to "off". | off |
| search_type | No | Search for images if set to "image". | |
| site_search | No | Restrict search to a specific site/domain. | |
| site_search_filter | No | Exclude ("e") or include ("i") site_search results. | |
| date_restrict | No | Restrict results by date (e.g., "d5" for past 5 days, "m3" for past 3 months). | |
| file_type | No | Filter by file type (e.g., "pdf", "doc"). | |
| language | No | Language code for results (e.g., "lang_en"). | |
| country | No | Country code for results (e.g., "countryUS"). | |
| sites | No | List of sites/domains to restrict search to (e.g., ["example.com", "docs.example.com"]). When provided, results are limited to these sites. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior, so safety is covered by structured metadata. The description adds no behavioral context beyond the API name, such as quota usage, authentication needs, or result variability. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler or repetition. It is concise, though slightly under-specified for a tool with 13 parameters and many sibling search tools.
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 and annotations cover return values and safety traits, so those gaps are filled by structured data. However, the description does not clarify what kind of content search_custom searches, when to choose it over sibling search tools, or what domain-specific setup (e.g., a configured custom search engine) might be required. For a tool with 13 parameters and a large sibling set, this one-liner is not complete enough.
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 100%, so every parameter, default, and constraint is already documented in the input schema. The description contributes no additional parameter meaning, but the high schema coverage means the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Performs a search') and identifies the specific API ('Google Custom Search JSON API'), which is distinct from sibling search tools for Gmail, Drive, Docs, and other services. It does not explicitly describe the search scope (web, sites, images), but the API name and parameter schema provide enough orientation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as search_drive_files, search_gmail_messages, or search_docs. It also does not mention prerequisites, exclusions, or typical use cases. An agent must infer all usage context from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch DocsBRead-onlyIdempotent
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 |
|---|---|---|---|
| user_google_email | Yes | ||
| query | Yes | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful context about the mimeType filter and return format, but does not disclose pagination, query syntax, or any limitations. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core action and return type are front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even with output schema and annotations available, the description omits essential context such as how the query string should be formatted, the meaning of user_google_email, and the behavior of page_size. For a 3-parameter tool with zero schema descriptions, the definition is 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?
Schema description coverage is 0%, so the description must compensate. It only clarifies that 'query' searches by name; it does not explain 'user_google_email' or 'page_size'. The description leaves most parameter semantics to inference.
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 ('searches'), a specific resource ('Google Docs'), and explains the mechanism ('Drive API (mimeType filter)'). This clearly differentiates it from generic Drive file search, although it does not explicitly name a 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?
No guidance is provided about when to use this tool versus alternatives like search_drive_files or list_docs_in_folder. The description only states what the tool does, not when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_drive_filesSearch Drive FilesARead-onlyIdempotent
Searches for files and folders within a user's Google Drive, including shared drives.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| query | Yes | The search query string. Supports Google Drive search operators. NOTE: Owner-based queries ('user@example.com' in owners) DO NOT WORK in Shared Drives because files are owned by the shared drive itself, not individual users. For recent files by a specific user in Shared Drives, search by modifiedTime and use order_by='modifiedTime desc' instead. | |
| page_size | No | The maximum number of files to return. Defaults to 10. | |
| page_token | No | Page token from a previous response's nextPageToken to retrieve the next page of results. | |
| drive_id | No | ID of the shared drive to search. If None, behavior depends on `corpora` and `include_items_from_all_drives`. | |
| include_items_from_all_drives | No | Whether shared drive items should be included in results. Defaults to True. This is effective when not specifying a `drive_id`. | |
| corpora | No | 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 | No | 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 | No | Whether to include size, modified time, and link in results. Defaults to True. | |
| order_by | No | Sort order. Comma-separated list of sort keys with optional 'desc' modifier. Valid keys: 'createdTime', 'folder', 'modifiedByMeTime', 'modifiedTime', 'name', 'name_natural', 'quotaBytesUsed', 'recency', 'sharedWithMeTime', 'starred', 'viewedByMeTime'. Example: 'modifiedTime desc' or 'folder,modifiedTime desc,name'. Defaults to None (Drive API default ordering). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description confirms the read-only search behavior and adds that it searches shared drives, which is consistent. No contradictions, but little added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that is front-loaded and contains no redundant information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, many optional) and the existence of an output schema, the description is minimal but sufficient. It does not explain pagination or typical use beyond the schema. An average score because the schema carries most of the burden.
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 100%, so the baseline is 3. The description adds no parameter information beyond the schema, but the schema's parameter descriptions are very detailed including examples and notes. Thus, 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Searches', the resource 'files and folders within a user's Google Drive', and the scope 'including shared drives'. This distinguishes it from sibling tools like 'search_docs' which likely focus on a specific document type, or 'list_drive_items' which may not support query strings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly provide when-to-use guidance or contrast with alternatives. The input schema includes detailed notes on search behavior, but the description itself lacks usage context. A 3 is appropriate as the schema partially compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_gmail_messagesSearch Gmail MessagesARead-onlyIdempotent
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query. Supports standard Gmail search operators. | |
| user_google_email | Yes | The user's Google email address. Required. | |
| page_size | No | The maximum number of messages to return. Defaults to 10. | |
| page_token | No | Token for retrieving the next page of results. Use the next_page_token from a previous response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds value by disclosing return payload (IDs and links) and pagination support via page_token, providing context beyond the structured fields. It doesn't mention rate limits or auth, but the annotations lower the bar.
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 three concise sentences, each earning its place: purpose, return values, and pagination. It is front-loaded with the main action and contains no redundant or vague wording.
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 strong annotations (readOnly, idempotent, non-destructive), a complete schema, and an output schema present, the description sufficiently covers purpose, return behavior, and pagination. No additional context is needed for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already explains each parameter in detail (e.g., query supports Gmail search operators, page_token for pagination). The description adds little beyond restating pagination support ('Supports pagination via page_token parameter'), so it doesn't significantly enhance the schema's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Searches messages in a user's Gmail account based on a query.' This uses a specific verb ('searches') and resource ('messages in a user's Gmail account'), and distinguishes it from sibling tools like 'get_gmail_message_content' by indicating it returns IDs and web links rather than message content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by specifying that it returns Message IDs, Thread IDs, and Gmail web links for manual verification, implying use for search/discovery rather than content retrieval. However, it does not explicitly name alternative tools or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_messagesSearch MessagesARead-onlyIdempotent
Searches for messages in Google Chat spaces by text content and/or time range.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| query | No | Optional text to search for. If omitted, only time_filter is applied. | |
| space_id | No | Optional space to restrict the search to. | |
| page_size | No | Maximum number of messages to return per space. | |
| time_filter | No | Optional filter using Chat API createTime syntax. Examples: 'createTime > "2026-03-18T00:00:00-03:00"' 'createTime > "2026-03-18T00:00:00-03:00" AND createTime < "2026-03-19T00:00:00-03:00"' | |
| max_spaces | No | Maximum number of spaces to search when space_id is not provided (default 10). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, and non-destructive behavior. The description adds that search is by text content and/or time range but does not disclose cross-space search behavior, pagination, or result limits beyond what the schema already lists. No contradiction with 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 a single, front-loaded sentence with no filler or redundancy. It clearly states the action, resource, and search dimensions in minimal space.
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 rich parameter schema, output schema, and annotations, the one-line description is mostly sufficient for an agent to invoke the tool correctly. The only notable gap is that it does not explicitly mention cross-space search behavior when space_id is omitted, but the max_spaces parameter description largely covers that.
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 high (83%), with detailed documentation for query, space_id, page_size, max_spaces, and time_filter. The description adds little parameter-level meaning beyond naming the text-content and time-range search modes, so the baseline of 3 is appropriate.
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 uses a specific verb ('Searches'), a clear resource ('messages in Google Chat spaces'), and explicit scoping ('by text content and/or time range'). This distinguishes it from siblings like search_gmail_messages and get_messages without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as get_messages or search_gmail_messages. There are no explicit exclusions or routing hints, so an agent must infer the right context from the tool name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_gmail_messageSend 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required for authentication. | |
| to | Yes | Recipient email address. | |
| subject | Yes | Email subject. | |
| body | Yes | Email body content (plain text or HTML). | |
| body_format | No | Email body format. Use 'plain' for plaintext or 'html' for HTML content. | plain |
| cc | No | Optional CC email address. | |
| bcc | No | Optional BCC email address. | |
| from_name | No | Optional sender display name (e.g., 'Peter Hartree'). If provided, the From header will be formatted as 'Name <email>'. | |
| 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. | |
| thread_id | No | Optional Gmail thread ID to reply within. | |
| in_reply_to | No | Optional RFC Message-ID of the message being replied to (e.g., '<message123@gmail.com>'). | |
| references | No | Optional chain of Message-IDs for proper threading. | |
| attachments | No | Optional list of attachments. Each can have: "url" (fetch from URL — works with MCP attachment URLs from get_drive_file_download_url / get_gmail_attachment_content), OR "path" (file path, auto-encodes), OR "content" (standard base64, not urlsafe) + "filename". Optional "mime_type". Optional "content_id" (string) makes the attachment inline-rendered: it lands in a multipart/related part with `Content-ID: <content_id>` and `Content-Disposition: inline`, and the HTML body can reference it via `<img src="cid:<content_id>">` (RFC 2392). Without `content_id` the attachment is a regular multipart/mixed attachment. Example: [{"url": "https://host/attachments/abc-123", "filename": "report.pdf"}] | |
| include_signature | No | Whether to append the Gmail signature from Settings > Signature when available. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, non-destructive mutation. The description adds that it supports replies and Send As, but does not disclose rate limits, auth details beyond the user_google_email param, or idempotency concerns. The annotations already provide the basic behavioral profile, so the description adds marginal value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first covers core function, second covers a notable feature (Send As). No redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (14 params), detailed schema, and output schema, the description covers the essentials (send new/reply, attachments, Send As). It could mention signature handling or body format, but those are covered in schema. The description is sufficiently complete for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter has detailed descriptions. The tool description does not add any new parameter information beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('sends'), the resource (Gmail email), and the scope (new emails and replies with attachments). It also mentions the Send As feature, distinguishing it from sibling tools like 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?
The description implies usage scenarios (new emails, replies, Send As) but does not explicitly state when not to use it or compare it to alternatives like draft_gmail_message or send_message.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend MessageC
Sends a message to a Google Chat space.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | ||
| space_id | Yes | ||
| message_text | Yes | ||
| thread_key | No | Reply in a thread by app-defined key (creates thread if not found). | |
| thread_name | No | Reply in an existing thread by its resource name (e.g. spaces/X/threads/Y). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a non-read-only, non-idempotent write operation, and the description adds no additional behavioral traits. It does not disclose authorization needs, side effects, or error behaviors beyond the basic fact that a message is sent.
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 or repetition. Every word contributes to identifying the core operation.
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 five parameters, optional threading, likely authentication needs, and the large sibling set, the description is under-specified. It lacks routing context, auth prereqs, and thread semantics, though an output schema exists to cover return values.
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 only 40%, and the description does not compensate for the undocumented required parameters (user_google_email, space_id, message_text). It implies message_text is the content and space_id is the destination, but it leaves user_google_email's role and the distinction between thread_key and thread_name unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete action ('sends') and a specific resource ('Google Chat space'), which distinguishes it from the Gmail-sending sibling. It does not explicitly differentiate among Chat siblings like get_messages or create_reaction, but the verb+resource is specific enough for basic selection.
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 send_gmail_message or Chat read tools. No preconditions, caveats, or selection criteria are mentioned, leaving the agent to infer usage from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_drive_file_permissionsSet Drive File PermissionsADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The ID of the file or folder. Required. | |
| link_sharing | No | 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 | No | Whether editors can change permissions and share. If False, only the owner can share. Defaults to None (no change). | |
| copy_requires_writer_permission | No | Whether viewers and commenters are prevented from copying, printing, or downloading. Defaults to None (no change). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the risk profile is covered without description support. The description adds that the tool mutates link-sharing and file-level settings, but it does not disclose consequences such as revoking anonymous access when link sharing is turned off or changes taking effect immediately. This is adequate but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short, front-loaded sentences, each earning its place: primary purpose, high-level positioning, when-to-use, and when-not-to with routing. There is no repetition or filler, and the structure naturally separates what the tool does from how to choose 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?
An output schema exists and the annotations are rich, so the description need not explain return values or safety profiles. The main gap is the unresolved user_google_email requirement, which directly threatens correct invocation given the tool's stated link-sharing purpose; the routing to sibling tools absent from the list is a secondary but real gap. Overall adequate for a well-schema'd tool, but 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 100% and each parameter (link_sharing, writers_can_share, copy_requires_writer_permission) has a detailed description, so the schema carries the heavy lifting. The description adds high-level framing that most parameters are optional toggles, but it leaves the required user_google_email unexplained — its role conflicts with the link-sharing positioning, and neither the description nor the schema reconciles this.
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?
"Sets file-level sharing settings and controls link sharing for a Google Drive file or folder" provides a specific verb, resource, and scope, making the tool's function immediately clear. The second paragraph reinforces purpose by positioning it as a high-level tool for common permission changes and explicitly excluding granular user/group permission management, distinguishing it from read-oriented siblings like get_drive_file_permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance ("toggle 'anyone with the link' access or configure file-level sharing behavior") and an explicit exclusion ("For managing individual user/group permissions, use share_drive_file or update_drive_permission instead"). However, those named alternatives are absent from the sibling-tools list (which instead contains manage_drive_access), and the required user_google_email parameter blurs the stated boundary between this tool and individual-user permission tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_publish_settingsSet Publish SettingsB
Updates the publish settings of a form.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| form_id | Yes | The ID of the form to update publish settings for. | |
| publish_as_template | No | Whether to publish as a template. Defaults to False. | |
| require_authentication | No | Whether to require authentication to view/submit. Defaults to False. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate not read-only, not destructive, and not idempotent. The description adds no further behavioral disclosure beyond 'updates', which is consistent with annotations. No additional context about side effects or state 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?
The description is very concise with a single sentence. It is front-loaded and efficient, though it could benefit from a bit more detail without losing 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?
Given the presence of an output schema and the tool's moderate complexity (4 parameters, 2 required booleans), the description is too minimal. It does not explain what 'publish settings' entails, the effects of parameters like publish_as_template or require_authentication, or how this tool relates to batch_update_form.
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 already describes all parameters with 100% coverage, so the description adds no additional meaning. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'updates' and the resource 'publish settings of a form', distinguishing it from other form-related sibling tools like get_form or batch_update_form. However, it does not elaborate on what specific settings are updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like batch_update_form, nor any prerequisites or conditions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_google_authStart 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 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the minimal annotations, the description discloses that this is a legacy OAuth 2.0 tool, disabled when OAuth 2.1 is enabled, and that authentication is normally handled automatically by the system. It also explains the manual tool's role in re-authentication, proactive auth, and retry scenarios, which is rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: a clear opening statement, a critical legacy note, a numbered list of use cases, and a closing recommendation. Every sentence carries distinct information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description thoroughly covers purpose, usage conditions, alternatives, and legacy/automatic behavior, and the output schema can handle return-value documentation. However, it is not fully self-contained because it leaves parameter semantics unexplained, which is a meaningful gap for an agent deciding what to pass as service_name.
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, and the description does not compensate by explaining either parameter. It never names service_name or user_google_email, nor does it clarify expected formats, allowed values, or how to choose the service. The phrase 'different credentials' only weakly hints at user_google_email, leaving the agent to guess at parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manually initiate Google OAuth authentication flow.' It identifies the specific action and resource, and distinguishes itself from the long sibling list by being the explicit authentication entry point for Google Workspace 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 explicitly lists when to use the tool with three concrete conditions and directly advises that in most cases the agent should simply call the needed Google Workspace tool instead. It also covers the failure/retry scenario, making the when-to-use and when-not-to-use guidance unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_drive_fileUpdate Drive FileADestructive
Updates metadata, properties, and/or content of a Google Drive file.
Providing one of content, file_path, or file_url replaces the file's
content in place. The source is uploaded with its source MIME type so the Drive
API applies the same format conversion as import_to_google_doc (markdown headings,
tables, bold, etc.) while preserving the existing file ID, sharing, comments, and
links. Metadata and content can be updated in a single call.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | The user's Google email address. Required. | |
| file_id | Yes | The ID of the file to update. Required. | |
| name | No | New name for the file. | |
| description | No | New description for the file. | |
| mime_type | No | New MIME type (note: changing type may require content upload). | |
| add_parents | No | Comma-separated folder IDs to add as parents. | |
| remove_parents | No | Comma-separated folder IDs to remove from parents. | |
| starred | No | Whether to star/unstar the file. | |
| trashed | No | Whether to move file to/from trash. | |
| writers_can_share | No | Whether editors can share the file. | |
| copy_requires_writer_permission | No | Whether copying requires writer permission. | |
| properties | No | Custom key-value properties for the file. | |
| content | No | New text content for text-based formats (markdown, TXT, HTML). | |
| file_path | No | Local file path for binary formats (DOCX, ODT). Supports file:// URLs. | |
| file_url | No | Remote http(s) URL to fetch new content from. | |
| source_format | No | Source format hint for conversion (md, markdown, docx, txt, html, rtf, odt). Auto-detected when omitted. Provide at most one of content/file_path/file_url. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint=true), the description discloses that providing content, file_path, or file_url replaces content in place while preserving the existing file ID, sharing, comments, and links. It also explains the MIME type conversion behavior, adding material context about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused paragraphs with the main action stated first, followed by essential behavior details. 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 16-parameter tool, the description covers the primary update semantics, content source options, conversion behavior, and preservation guarantees. It references the related tool for format specifics and relies on the output schema for return values, making it well-rounded for agent comprehension.
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?
Input schema covers all 16 parameters with descriptions (100% coverage), and the source_format already states 'Provide at most one of content/file_path/file_url.' The description's mention of the same constraint and 'Metadata and content can be updated in a single call' adds minor usage nuance but does not significantly expand parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Updates metadata, properties, and/or content of a Google Drive file.' It further distinguishes from create/import by noting in-place replacement and preservation of file ID, sharing, comments, and links.
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?
Context is clear that this tool is for modifying an existing drive file, with mention of content replacement options. It references import_to_google_doc for format conversion but does not explicitly name alternatives like create_drive_file or state when not to use this tool, so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_paragraph_styleUpdate 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.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's Google email address | |
| document_id | Yes | Document ID to modify | |
| start_index | Yes | Start position using Docs API indices from inspect_doc_structure. For the main body, 0 is also accepted as an alias for the first writable position. | |
| end_index | Yes | End position (exclusive) - should cover the entire paragraph | |
| heading_level | No | Heading level 0-6 (0 = NORMAL_TEXT, 1 = H1, 2 = H2, etc.) Use for semantic document structure | |
| alignment | No | Text alignment - 'START' (left), 'CENTER', 'END' (right), or 'JUSTIFIED' | |
| line_spacing | No | Line spacing multiplier (1.0 = single, 1.5 = 1.5x, 2.0 = double) | |
| indent_first_line | No | First line indent in points (e.g., 36 for 0.5 inch) | |
| indent_start | No | Left/start indent in points | |
| indent_end | No | Right/end indent in points | |
| space_above | No | Space above paragraph in points (e.g., 12 for one line) | |
| space_below | No | Space below paragraph in points | |
| named_style_type | No | Direct named style type - 'NORMAL_TEXT', 'TITLE', 'SUBTITLE', 'HEADING_1' through 'HEADING_6'. Mutually exclusive with heading_level. | |
| tab_id | No | Optional document tab ID to target | |
| segment_id | No | Optional header/footer/footnote segment ID to target | |
| direction | No | Paragraph direction - 'LEFT_TO_RIGHT' or 'RIGHT_TO_LEFT' | |
| keep_lines_together | No | Keep all lines of the paragraph together | |
| keep_with_next | No | Keep the paragraph with the next paragraph | |
| avoid_widow_and_orphan | No | Avoid widows/orphans for the paragraph | |
| page_break_before | No | Start the paragraph on a new page | |
| spacing_mode | No | 'NEVER_COLLAPSE' or 'COLLAPSE_LISTS' | |
| shading_color | No | Paragraph shading/background color (#RRGGBB) | |
| list_type | No | Create a list from existing paragraphs ('UNORDERED' for bullets, 'ORDERED' for numbers, 'CHECKBOX' for checklists) | |
| list_nesting_level | No | Nesting level for lists (0-8, where 0 is top level, default is 0) Use higher levels for nested/indented list items | |
| bullet_preset | No | Optional explicit Google Docs bullet preset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a write operation (readOnlyHint=false). The description adds the capability to combine operations in a single call and mentions list/heading behaviors, but it does not disclose side effects like overwriting existing styles, authorization requirements, or any constraints. This is minimal extra context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of just three sentences, and immediately states the core purpose. It avoids redundancy and every sentence adds value, making it well-structured and efficiently scannable despite the tool's many 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?
While the tool has 25 parameters and a complex range of operations, the schema descriptions are thorough and an output schema exists. The description provides a high-level overview but does not mention how to obtain indices or handle mutually exclusive options (e.g., heading_level vs named_style_type). It is functional but not fully complete for an agent needing detailed 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?
The input schema provides 100% coverage and detailed descriptions for all 25 parameters. The description names some of these (heading levels, alignment, spacing, indentation) but does not add new semantic details or explain parameter interactions. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb and resource: 'Apply paragraph-level formatting, heading styles, and/or list formatting to a range in a Google Doc.' It also provides concrete examples (H1-H6, bulleted/numbered lists, alignment, spacing) that distinguish it from sibling tools focused on text content or element insertion.
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 appropriate usage by specifying paragraph-level formatting operations, which naturally separates it from tools that modify text or insert elements. However, it does not explicitly mention any alternatives or provide 'when not to use' guidance, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_script_contentUpdate Script ContentADestructive
Updates or creates files in a script project.
| Name | Required | Description | Default |
|---|---|---|---|
| user_google_email | Yes | User's email address | |
| script_id | Yes | The script project ID | |
| files | Yes | List of file objects with name, type, and source |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, so description's 'updates or creates' implies potential overwrites, but adds no additional behavioral context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no filler, perfectly concise and front-loaded with action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and annotations covering safety, description is mostly sufficient. Could hint at idempotency or side effects, but overall adequate for a mutation tool with good 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 100%, with clear parameter descriptions. Description does not add extra meaning beyond the schema; baseline 3 is appropriate.
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 it updates or creates files in a script project. Verb 'updates or creates' paired with resource 'files in a script project' is specific and distinguishes from sibling tools like get_script_content (read) and create_script_project (create 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?
No guidance on when to use this tool vs alternatives. Does not mention when to prefer get_script_content first, or that it can create new files in existing projects, or any prerequisites like script_id existence.
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.
122 tool updates
v0.1.0- First observed
append_table_rows - 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_calendar - 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_docs_runtime_info - First observed
debug_table_structure - 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
import_to_google_sheets - First observed
import_to_google_slides - First observed
insert_doc_elements - First observed
insert_doc_image - 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_sheet_tables - 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_doc_tab - First observed
manage_document_comment - First observed
manage_drive_access - First observed
manage_event - First observed
manage_focus_time - First observed
manage_gmail_filter - First observed
manage_gmail_label - First observed
manage_out_of_office - 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
move_sheet_rows - First observed
query_freebusy - First observed
read_sheet_values - First observed
resize_sheet_dimensions - 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_drive_file - First observed
update_paragraph_style - First observed
update_script_content
TDQS
Scored across 122 tools
Tools are mostly distinct due to domain-specific prefixes (e.g., create_doc, create_sheet). However, some overlap exists between generic tools like get_doc_content and get_drive_file_content, or between multiple modify tools, which could cause minor confusion.
Naming conventions are mixed: verb_noun (create_doc), manage_ prefix (manage_contact), and domain-specific suffixes (list_sheet_tables). While readable, the lack of a consistent pattern (e.g., some use 'modify' vs 'update' vs 'set') reduces predictability.
With 122 tools, the surface is excessively large. While the server covers many Google services, many tools could be consolidated (e.g., separate comment tools per service). This volume increases complexity and selection difficulty for an agent.
The tool set covers major CRUD operations and advanced features across Docs, Sheets, Gmail, Drive, Calendar, and more. Minor gaps exist (e.g., no batch folder creation), and some redundancy (e.g., multiple text insertion tools), but overall it is comprehensive for the Google Workspace domain.
Maintenance
Related MCP Connectors
Gmail, Outlook, Drive, OneDrive and calendars for AI agents. Many accounts, one endpoint, audit log.
Permissioned access to Gmail, Drive and Calendar via the user's own Google account
Connect AI agents to 1000+ apps with managed authentication and tool-calling.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive natural language control over Google Workspace services including Gmail, Drive, Calendar, Docs, Sheets, Slides, Forms, Tasks, and Chat. Features multi-user OAuth 2.1 support, flexible tool tiers, and seamless integration with AI assistants.843MIT
- FlicenseNot gradedqualityDmaintenanceProvides AI assistants with access to Google Workspace APIs including Sheets, Calendar, Gmail, Tasks, Drive, and Docs. Enables full CRUD operations and management of Google services through natural language.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with Google Workspace services (Gmail, Drive, Docs, Tasks, Calendar) through OAuth 2.0 authentication, providing 25+ operations for business automation and productivity.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Gmail (list, search, send, label emails) and Google Calendar (list, create, update, delete events) via OAuth 2.0.16 npm-