gwagent
Provides tools for using Gmail through the Android app UI, including searching messages, reading threads, sending and replying with confirmation safeguards, and chaining structured Gmail operations.
Provides tools for managing Google Calendar events via the Android Calendar app and Android calendar content provider, including listing, creating, and updating events.
Provides tools for interacting with Google Drive through the Android app UI, including listing and searching files, downloading files and attachments, and reading text from supported documents such as PDFs.
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., "@gwagentcheck my unread Gmail and tell me what needs a reply"
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.
gwagent
Let an AI agent use Gmail, Google Calendar and Google Drive on an Android phone or emulator, through adb, the way a person would: by driving the apps' own UI (Gmail, Drive, Calendar app screens) and, where Android allows it, Android's calendar content provider.
It is meant for a Google Workspace account that can only be used from the phone (no API access): the agent gets about 150 structured operations, each returning JSON, instead of raw taps.
One registry, two front ends: every operation is a Python function declared with
@op; the CLI (gwagent ...) and the MCP server (gwagent mcp) are generated from it.Structured results: rows with indexes, events with ids, files with paths, so an agent can chain calls (search -> read -> reply, list -> download, events -> update one occurrence).
Safety built in: destructive or outward actions need
confirm=true; index-based targets are checked against the list they came from; a Gmail send is never repeated blind.Fast path: a small on-phone server (a
.dexrun withapp_process, not an installed app) makes UI dumps take ~50 ms instead of 4-10 s and lets any Unicode text be typed.
Documents:
File | For |
An AI agent that receives this system: workflows, ids, errors, etiquette | |
Every operation with its parameters (generated from the registry) | |
Moving the system to another machine or phone; | |
Rules for adding or changing operations |
Requirements
macOS or Linux host with Python >= 3.12 and uv.
Android platform-tools (
adb) onPATH, or pointed to withGWAGENT_ADB.An Android device reachable by adb: the Android emulator with a Google Play system image (developed on Android 15 / API 35, x86_64), or a real phone with USB debugging enabled. The phone's UI language must be English (ops match English labels).
A Google (Workspace) account signed in on the phone, with Gmail, Calendar and Drive installed. A Workspace account usually forces a screen lock: gwagent unlocks it with a PIN (see below).
Optional:
pdftotext(poppler) on the host, fordrive.read_texton PDFs.To rebuild the on-phone server only: a JDK and Android build-tools (see
dumpserver/build.sh).
Related MCP server: DroidPilot
Install
git clone <this repo> gwagent && cd gwagent
uv sync # creates .venv with gwagent and its dependencies
uv run gwagent device.status --pretty # check that the phone is reachableuv run gwagent ... works from the checkout. To have a gwagent command everywhere:
uv tool install --editable ..
On a new machine or phone, follow PORTING.md and run scripts/bootstrap.sh.
Configuration (environment variables)
All configuration comes from the environment; nothing personal is stored in the repository.
Variable | Default | Meaning |
|
| adb serial of the phone to drive |
|
| adb binary |
| - | Screen-lock PIN (prefer the PIN file) |
|
| File holding the PIN (mode 600); never print or commit it |
|
| Where downloads, attachments and screenshots go on the host |
|
| Host state: last Gmail list, last Drive location, last Gmail action (for undo) |
|
| Time zone for calendar output and for times given without an offset |
| primary calendar | Default calendar id for |
|
| UI lock file (see UI lock) |
|
| Seconds to wait for the UI lock before failing with |
| unset |
|
| unset |
|
|
| Keep the screen awake during long ops; |
|
| Wait for an offline phone and repeat retry-safe ops once; |
|
| Max seconds to wait for the phone to come back |
| unset | Operator hook (shell command) run once when the phone stays unreachable for 90 s after |
|
| Max seconds the |
|
|
|
|
| Seconds after which an idle on-phone server exits |
|
| Seconds to wait for the on-phone server to start |
|
| Seconds of silence before the server is considered stuck and restarted |
| unset |
|
|
| Android SDK used by |
Test-only variables: GWAGENT_LIVE=1 / GWAGENT_OUTWARD=1 (same as --live / --outward),
GWAGENT_REGEN_MANIFEST=1 and GWAGENT_REGEN_OPS_DOC=1 (regenerate golden files),
GWAGENT_PRIVACY_TERMS (extra comma-separated terms for the fixture privacy scan).
GWAGENT_DUMP_NONCE is set by gwagent itself when it starts the on-phone server.
CLI
Output is always one JSON object on stdout; the exit code is 0 on success and an error-specific code otherwise (see docs/OPERATIONS.md#error-codes).
uv run gwagent list # every operation (name, summary, ui, confirm, params)
uv run gwagent list --app gmail --names # just the names of one app's ops
uv run gwagent describe gmail.search # one op's full description and JSON schema
uv run gwagent gmail.search --query "is:unread" --limit 5
uv run gwagent gmail search --query "is:unread" # app and action as two words
uv run gwagent call gmail.read '{"index": 0, "expect_subject": "Weekly report"}'
uv run gwagent gmail.send --to alice@example.com --subject Hi --body "Ciao" --confirm
uv run gwagent calendar.events --period week --pretty
uv run gwagent mcp # MCP server on stdioFlags: --name value, --name=value, bare --flag (true), --no-flag (false); a repeated flag
becomes a list (--to a@example.com --to b@example.com, or --to a@example.com,b@example.com, or
a JSON list). --args-json '{...}' merges a JSON object; --pretty indents the output.
Result envelope:
{"ok": true, "op": "gmail.search", "result": {"rows": [...]}, "elapsed_s": 6.1}
{"ok": false, "op": "gmail.reply", "error": "not_found", "message": "...", "elapsed_s": 3.2}MCP server
gwagent mcp runs a stdio MCP server exposing every op as a tool; the tool name is the op
name with . replaced by _ (gmail.search -> gmail_search). Tool results are the same
JSON envelope as the CLI.
Claude Code:
claude mcp add gwagent -- uv --directory /path/to/gwagent run gwagent mcpAny MCP client (Claude Desktop claude_desktop_config.json, a project .mcp.json, ...):
{
"mcpServers": {
"gwagent": {
"command": "uv",
"args": ["--directory", "/path/to/gwagent", "run", "gwagent", "mcp"],
"env": {
"GWAGENT_SERIAL": "emulator-5554",
"GWAGENT_PIN_FILE": "/Users/you/.android-ufficio-pin"
}
}
}
}Give the agent AGENT_GUIDE.md (e.g. reference it from the client's project
instructions). Ops can take tens of seconds; set the client's tool timeout to at least 5 minutes
(MCP_TOOL_TIMEOUT=300000 for Claude Code), since a UI op may also wait for the UI lock.
How it works
src/gwagent/
adb.py, device.py adb wrapper; Device: unlock, tap/swipe/type, dump -> Screen, wait_for, recover
ui.py Screen/Node/Selector: parsing and querying UI dumps
fastdump.py client of the on-phone server (assets/gwagent-dump.dex)
lock.py the inter-process UI lock
registry.py @op, Context, call() -> {"ok": ...} envelope, offline recovery
cli.py, mcp_server.py generated front ends
ops/ gmail*.py, calendar.py (provider), calendar_ui.py (app), drive*.py, device.py
dumpserver/ Java source of the on-phone server; build.sh -> src/gwagent/assets/gwagent-dump.dexFast path: the on-phone server
Device.dump/tap/swipe/key/type_text go through a persistent server on the phone that holds
one UiAutomation connection. It is a .dex pushed to /data/local/tmp and started with
app_process (shell user); it is not an APK and nothing is installed. A UI dump takes
~20-60 ms instead of 4-10 s, a tap a few ms instead of ~1 s, and type_text sets text through
accessibility, so any Unicode works in every field. If the server is unavailable, everything
falls back to uiautomator dump and adb shell input automatically. It exits after 45 s idle
and is restarted on demand (also after an emulator restart).
Transport and trust:
The server listens on an abstract unix socket (not a TCP port) with a random name
gwagent-dump-<16 hex>chosen at each start; the host reaches it throughadb forward tcp:<port> localabstract:<name>.Server checks the client: only peers with uid 2000 (shell, which is what adbd forwards as) or 0 are served (
getPeerCredentials); other apps on the phone are refused.Client checks the server: the abstract namespace has no permissions, so an app could bind a name and pose as the server. Each start gets a random nonce (passed to the server in its environment); the name and nonce are kept in
/data/local/tmp/gwagent-dump.token(mode 600, shell only). The client accepts the server only ifversionanswers"<PROTO> <nonce>".The protocol is versioned (
fastdump.PROTO=DumpServer.PROTO, currently 5); a running server with another version is replaced. Run one gwagent version per phone.
Safety model
confirm: ops that send, delete, share or are otherwise outward-facing or irreversible are marked
requires_confirm; withoutconfirm=truethey fail withconfirmation_requiredand do nothing. Some ops need it only in some cases (calendar.create/calendar.updateon events with guests, since Google e-mails them).Guards against acting on the wrong item: the last Gmail list (folder/query and each row's sender, subject, date) is remembered on the host. An op given a bare
indexre-opens that list and checks the row is still the same conversation; moved rows are found again, vanished ones fail withnot_foundbefore anything is touched.expect_subject(Gmail read/reply/forward/ attachments/...) andmatch(bulk actions) add explicit checks. Drive ops resolve names in the remembered location, not in whatever the screen shows.drive.empty_trashrequiresonly_if_all_matchorall=true.Recipients are verified on the compose screen before Send: any unexpected or missing address keeps the mail as a draft and raises an error.
Send is never re-sent blind: when Gmail's reaction to Send is unclear, the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with
send_state_unknownand the caller must check the Sent folder before any retry. Ops withconfirmare never repeated automatically, not even after the phone went offline.Calendar out of office (
calendar.out_of_office) only declines new invitations by default (decline="only_new"); meetings already accepted are declined (and their organizers notified) only withdecline="new_and_existing".UI lock: only one program drives the phone at a time (see below).
Live tests only create objects whose name or subject contains
AGT-TEST, send mail only to the phone's own account, add no guests to test events, and delete what they create. Tests that change account settings skip when the user has that setting in use and restore it afterwards.Privacy: the account is a real office account. No mail, calendar or Drive content, no screenshots or UI dumps of the phone, and no account address may be sent to cloud LLMs or committed; test fixtures are scrubbed (
tests/unit/test_fixture_privacy.pyscans them). The PIN is never printed, logged or committed. Run the agent that uses gwagent on a model the data owner has approved for this content.No APKs: nothing is installed on the phone. The only on-phone code is the dump server
.dexrun withapp_process. (device.install_adb_keyboardexists for other phones only.)
UI lock
Every ui=true op holds an exclusive flock on /tmp/gwagent-ui.lock (override
GWAGENT_LOCK_FILE) for its whole duration; it waits up to GWAGENT_LOCK_TIMEOUT seconds
(default 300), then fails with busy (exit 7). ui=false ops (calendar provider, file
transfers) do not take it. Other programs that touch the phone's UI must take the same lock;
the exact contract and a wrapper for shell commands are in
docs/OPERATIONS.md#ui-lock-contract.
Tests
Level | Command | Needs |
Unit |
| nothing (FakeAdb + scrubbed fixtures), ~seconds |
Live |
| the phone; creates and deletes |
Live + outward |
| the phone; also sends mail to the account itself and changes settings (restored) |
Quality |
| no new broad |
The whole suite (uv run pytest --live --outward) takes several hours. Never run two live
sessions at once: there is only one phone. One module at a time:
uv run pytest tests/live/test_gmail_read_live.py --live --outward -q.
Golden files checked by unit tests: tests/fixtures/mcp_manifest.json (the MCP tool list,
regenerate with GWAGENT_REGEN_MANIFEST=1 uv run pytest tests/unit/test_mcp_manifest.py -q)
and docs/OPERATIONS.md (regenerate with uv run python scripts/gen_ops_doc.py).
Limitations
Speed: ops drive the real UI; typical ops take ~5-35 s, long lists and uploads minutes. Host performance matters most: on macOS the emulator must run as an interactive process (see PORTING.md).
English UI only; one phone, one account, one gwagent version per phone.
Google Docs/Sheets/Slides cannot be created or edited (their apps are not installed and installing apps is not allowed):
drive.create_docfails withapp_missing. Native Google files can only be read; a Google Sheet is read through Drive's export, which is a PDF (table structure lost). The Drive app has no "Manage versions".drive.read_textwithmethod="viewer"only sees the pages the viewer rendered (usually the first); the default download method needspdftotextfor PDFs.Drive search filters use search operators (
type:,owner:,after:,before:,is:starred); the app's filter chips are not used.drive.set_role/drive.unsharecould only be live-tested on their guards (single-account phone).Gmail dates are parsed from screen text (English formats, phone time zone):
date_isonext to the raw value. Gmail bulk actions beyond one screen needall=truewith a query or folder.gmail.undorecalls a sent mail only while Gmail still shows the Undo snackbar (seconds).Gemini in Gmail depends on the account's licence (
gemini_unavailableotherwise).Calendar: working locations, Out of office and Focus time are not in the provider (they are set, read and deleted through the app). Avoid rapid successive edits of one event (an edit made while the previous one uploads can be overwritten by the server copy; check
pending_sync). A recurring series that never synced has no instances until it syncs.Google Tasks are only reachable through the Calendar app UI.
Attribution
Parts of the on-phone server and a few host helpers are adapted from google/artemis, Copyright 2026 Google LLC, licensed under the Apache License 2.0. Adapted code carries a comment saying so; the list of adapted files is in NOTICE and the license text in LICENSES/Apache-2.0.txt. Artemis itself is not used or run.
License
Apache License 2.0: see LICENSE. Third-party attributions are in NOTICE.
Available Tools
156 toolsapp_intentC
Start an activity with an arbitrary intent (am start).
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Data URI. | |
| mime | No | MIME type. | |
| action | No | e.g. android.intent.action.VIEW. | |
| extras | No | String/bool/int/list extras. | |
| package | No | Restrict to this package. | |
| component | No | package/activity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it only says 'start an activity'. It does not disclose side effects (launching UI on the device), permission/adb requirements, what happens on an unresolvable intent, or what the response looks like.
Agents need to know what a tool does to the 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 the verb, mechanism, and key qualifier; no filler. It is efficient, though arguably too terse for a 6-param tool with a nested extras 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?
For a 6-parameter tool with a nested `extras` object, no annotations, and no output schema, a single line is insufficient. An agent gets no return-value expectation, no failure semantics, and no note on how `extras` should be shaped beyond the one-word schema hint.
Complex tools with many parameters or behaviors need more documentation. 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 (data, mime, action, extras, package, component) is already documented in the schema. The description adds nothing 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?
States a specific verb+resource ('Start an activity') and identifies the underlying mechanism (`am start`), plus the key qualifier 'arbitrary intent'. It stops short of distinguishing from the sibling `app_launch`, so an agent must infer which to choose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives like `app_launch` or `device_shell`. 'Arbitrary intent' weakly implies an advanced/low-level path but leaves the selection decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
app_launchB
Bring an app to the foreground.
Returns the focused window (package, activity, window) plus state: front (the app has
the focus), covered (the app is in front under a dialog of another package, e.g. a
permission prompt), other (another app is in front) or unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | e.g. com.google.android.gm (Gmail), com.google.android.calendar, com.google.android.apps.docs (Drive). | |
| restart | No | Force-stop first, so the app opens on its start screen. | |
| activity | No | Optional explicit activity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does a good job explaining the returned state values (front, covered, other, unknown) and the covered case, but says nothing about permissions, failure modes when the package is not installed, or that restart force-stops (that lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in one sentence, then the return semantics. Every sentence earns its place; only minor trimming would improve 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?
Since no output schema exists, the description usefully documents the return shape and state enum. However, for an app-launching action with no annotations, it omits failure behavior, permission requirements, and the effect of restart beyond the schema note, leaving meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including examples for package and the restart/activity semantics, so the schema already carries the parameter detail. The description adds no additional parameter meaning beyond it, making baseline 3 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?
States a specific verb and resource: 'Bring an app to the foreground.' That is clearly distinguishable from mutating siblings like app_stop or app_intent, though the description never names those siblings or explains the difference explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this instead of app_intent, drive_open, calendar_open, or app_stop. The usage is only implied by the verb 'bring to foreground', leaving the agent to infer routing between launch-style siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
app_stopB
Force-stop an app.
| Name | Required | Description | Default |
|---|---|---|---|
| package | Yes | Android package name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden. 'Force-stop' does convey abrupt termination rather than a graceful shutdown, which is meaningful behavioral signal. However, it does not say whether unsaved state is lost, what happens if the app is not running, or whether elevated permissions are required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words, verb-first, zero filler — the essential action is front-loaded. It is sized appropriately for the tool's simplicity, though it is arguably too terse to be self-sufficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with a fully documented schema and no output schema, the core information is present. But with zero annotations the description should still cover side effects and failure modes, which it omits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 100% schema description coverage ('Android package name'), so the schema already does the work and the description adds nothing beyond it. This is the expected baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Force-stop') and resource ('an app'), and the word 'force' distinguishes it from the launch-oriented siblings app_launch and app_intent. It does not explicitly name those siblings, 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 indication of when to use this versus app_launch, app_intent, or a graceful close, and no prerequisites (device connected/unlocked) or failure conditions are given. The agent must infer usage entirely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_add_meetA
Add a Google Meet video conference to one of your events (the provider cannot create one).
Guests are not e-mailed about the change ("Don't send" is chosen if asked). Returns the Meet link once the provider has it.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | For recurring events: this occurrence (see start), following, or all. | all |
| start | No | Occurrence for scope this/following; default the next one. | |
| timeout | No | Seconds to wait for the link to reach the provider. | |
| event_id | Yes | Event id (must be editable: your own calendar). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It usefully states that guests are not e-mailed and that the tool returns the Meet link once the provider has it. It does not cover permissions or failure behavior, but the schema supplies the editable-event constraint.
Agents need to know what a tool does to the world before calling 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 tightly focused sentences with the main action front-loaded. Every sentence adds useful information about behavior: provider limitation, guest notification, and return 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 mutation tool with no annotations and no output schema, the description covers the essential side effect (no guest e-mail) and the return value (Meet link). The fully documented schema handles parameters, though error behavior and existing-Meet-link conflicts are not addressed.
Complex tools with many parameters or behaviors need more documentation. 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 scope, start, timeout, and event_id. The description does not add parameter-specific syntax or format details beyond the schema, making the baseline 3 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: "Add a Google Meet video conference to one of your events." It also adds the useful constraint that the provider cannot create one. It does not explicitly name sibling tools such as calendar_remove_meet or calendar_meet_link, so it is clear but not fully sibling-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "to one of your events" and "the provider cannot create one," which suggests this is for events that need a Meet link added. However, it does not explicitly say when to use this versus calendar_remove_meet, calendar_meet_link, or calendar_create, and it gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_attendee_addA
Invite people to an event (Google e-mails them). Returns the attendee list.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | E-mail addresses to invite. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| event_id | Yes | Event id. | |
| optional | No | Mark them as optional guests. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses an outward-facing side effect (Google e-mails the invitees), states the return value, and warns that confirm=true is mandatory. It does not cover edge behavior such as what happens when an address is already an attendee or whether invites can be retracted, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action and the observable side effect front-loaded and the precondition trailing. 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?
For a 4-parameter mutation with full schema coverage and no output schema, the description supplies the two things the schema cannot: the external e-mail side effect and the return value (attendee list). Remaining gaps are duplicate-invite semantics and permission requirements, which are 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%, so the schema already documents emails, event_id, optional and confirm. The description only reinforces the confirm requirement and never mentions the optional flag, adding essentially no meaning beyond structured fields — 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?
Specific verb + resource ('Invite people to an event') with the mechanism and the return value stated. It is trivially distinguishable from the sibling calendar_attendee_remove, and the parenthetical about Google e-mailing guests makes the effect 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?
Clear context for when to call it (adding guests to an existing event) and it flags the confirm=true gating condition inline. It doesn't explicitly contrast with calendar_create (which also takes attendees) or calendar_attendee_remove, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_attendee_removeA
Remove guests from an event (Google may e-mail them a cancellation). Returns what is left.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| emails | Yes | E-mail addresses to remove. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| event_id | Yes | Event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description does real work: it discloses the outward-facing consequence (Google may e-mail a cancellation), the mandatory confirm=true guard, and the return shape ('what is left'). It omits reversibility, whether non-attendee e-mails silently no-op or error, and any 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?
Two short sentences, zero filler. The destructive side-effect leads and the confirm requirement follows, both front-loaded where an agent will see them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation with no annotations and no output schema, the description covers the essential danger (cancellation e-mails), the gate (confirm=true) and the return value. Missing only edge-case behavior for invalid or non-attending addresses.
Complex tools with many parameters or behaviors need more documentation. 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 emails, event_id and confirm are already documented. The description only adds rationale for confirm ('outward-facing or destructive') and confirms that the response reflects remaining attendees; the emails parameter semantics (batch vs single, unknown addresses) get no extra clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Remove guests from an event') that an agent can act on immediately. It does not name the obvious sibling calendar_attendee_add as the inverse operation, so differentiation is left implicit 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 description gives a precondition (confirm=true) and a side-effect warning, which implies when this tool is invoked. It never explicitly says when to use this versus calendar_attendee_add or calendar_update, nor when removal is inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_calendarsA
List the calendars on the phone (id, name, account, colour, access level, visible, sync).
Use the id (or the name) as the calendar parameter of other calendar ops.
primary marks the account's own calendar (default target of calendar.create).
| Name | Required | Description | Default |
|---|---|---|---|
| visible_only | No | Only calendars shown in the Calendar app (hidden ones are still synced and listed by calendar.events; calendars with sync=false have no events on the phone). | |
| writable_only | No | Only calendars you can add events to (access contributor or higher). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose useful behavior: it is a read-only enumeration on the device, `primary` identifies the account's own calendar and is the implicit target of calendar.create, and hidden-but-synced calendars still appear. It stops short of stating ordering, completeness guarantees, or how many calendars are 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?
Three short lines, front-loaded with what is listed and its fields, then the follow-on usage note. No filler and no repetition of 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?
No output schema exists, so the description compensates by enumerating the returned fields (id, name, account, colour, access level, visible, sync). Combined with the follow-on guidance for the `calendar` parameter, an agent has everything needed to call it and use the result.
Complex tools with many parameters or behaviors need more documentation. 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 visible_only and writable_only are already fully documented at the parameter level, setting the baseline at 3. The description adds conceptual context (visible vs sync, the meaning of `primary`) but never refers to the filter parameters by 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?
States a specific verb and resource ("List the calendars on the phone") and enumerates the fields returned, so an agent can distinguish it from calendar_events, calendar_get, or calendar_set_calendar immediately. The parenthetical field list makes the resource concrete rather than generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 how to use the output: feed `id` (or name) into the `calendar` parameter of other calendar ops, and notes `primary` is the default target of calendar.create. It does not, however, say when not to use it (e.g. vs calendar_get or calendar_set_calendar), so routing against siblings is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_createB
Create an event (synced to Google Calendar). Returns the new event (see calendar.get).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End time; for all-day events the LAST day (inclusive). Default: start + duration. | |
| color | No | Event colour: lavender, sage, grape, flamingo, banana, tangerine, peacock, graphite, blueberry, basil, tomato (or 1-11, or #RRGGBB for the nearest). | |
| rrule | No | Recurrence rule (RFC 5545), e.g. FREQ=WEEKLY;BYDAY=MO,WE;COUNT=10 or FREQ=DAILY;UNTIL=20261231T235959Z. | |
| start | Yes | Start: ISO 8601, 'YYYY-MM-DD HH:MM', 'DD/MM/YYYY HH:MM'; a date for all-day events. | |
| title | Yes | Event title. | |
| all_day | No | All-day event (start/end are dates). | |
| confirm | No | Required (true) when attendees are given, because invitations are e-mailed. | |
| calendar | No | Calendar id or name (default: the account's primary calendar). | |
| location | No | Location text. | |
| timezone | No | IANA zone for times without an offset (default Europe/Rome). | Europe/Rome |
| attendees | No | Guest e-mail addresses. Google e-mails them an invitation: needs confirm=true. | |
| reminders | No | Minutes before start for pop-up reminders, e.g. [10, 60]. | |
| description | No | Description / notes. | |
| availability | No | busy (default for timed events) / free (default for all-day) / tentative. | |
| duration_minutes | No | Length when end is omitted (default 60; for all-day, rounded up to days). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses only that the event syncs to Google Calendar and returns the new event. It omits that attendees trigger real e-mailed invitations requiring confirm=true, that recurrence/reminders have side effects, and whether the write is reversible.
Agents need to know what a tool does to the 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 with zero filler, and the core action is front-loaded ahead of the sync and return-value notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 15-parameter mutation tool with no annotations and no output schema, the description is thin: the external side effect of e-mailed invitations, which is the riskiest behavior here, is left entirely to the schema property text. It does at least cover the sync behavior and redirect to calendar.get for the response shape.
Complex tools with many parameters or behaviors need more documentation. 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% across all 15 parameters, so defaults, formats, enum values, and the confirm requirement are already documented in the schema. The description adds no parameter-level meaning beyond referring to calendar.get for the return shape, so 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?
States a specific verb and resource: 'Create an event', plus a scope note that it is synced to Google Calendar. That distinguishes it from calendar_update and calendar_task_create, though it never explicitly names those 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?
No guidance on when to use this versus calendar_update (edit an existing event), calendar_add_meet (attach a Meet link), or calendar_task_create. The only pointer, 'see calendar.get', is about the return value, not about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_deleteA
Delete an event (the whole series for recurring events, or one occurrence). Synced to Google.
An event you organise that has guests: Google cancels it for everybody and e-mails them.
An invitation from someone else: it is removed from your calendar only; Google records it as declined (the organizer can see that). To decline explicitly, use calendar.respond.
With
instance_start, only that occurrence of a recurring event is canceled (the series stays; guests of a series you organise are told about that occurrence).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| event_id | Yes | Event id (for one occurrence: the series id, plus instance_start). | |
| instance_start | No | Cancel only this occurrence: its start as listed by calendar.events (or its date). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so well: it discloses guest notifications, organizer-visible decline status, the series-versus-occurrence distinction, and the confirm=true requirement for this outward-facing/destructive action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then uses compact bullets to cover the important side-effect cases and the confirm requirement. Every sentence provides decision-relevant information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive calendar tool with no annotations and no output schema, the description supplies the critical context an agent needs: side effects on guests, handling of received invitations, recurring-event granularity, and the mandatory confirmation requirement.
Complex tools with many parameters or behaviors need more documentation. 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 already 100%, so the schema documents all three parameters. The description adds useful meaning beyond the schema, especially that instance_start cancels only that occurrence while the series remains and guests are notified about the canceled occurrence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Delete an event') and immediately clarifies recurring-event scope: whole series versus one occurrence. It also distinguishes its effect from calendar.respond by explaining that an invitation from someone else is only removed locally and recorded as declined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete when-to-use guidance: use this tool for deleting an organized event or removing an invitation, and use calendar.respond when the user wants to explicitly decline. It also explains the condition for using instance_start to cancel only one occurrence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_delete_specialA
Delete a working location, Out of office or Focus time entry of one day in the Calendar app.
These entries are not in the calendar provider (calendar.delete cannot see them). For a working location only that day is removed (your weekly setting stays for other days; the day then has no working location). A multi-day Out of office is deleted as a whole.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Day of the entry (YYYY-MM-DD). | |
| entry | Yes | working_location, out_of_office or focus_time. | |
| title | No | Exact title of the entry (default 'Out of office' / 'Focus time'; ignored for working locations). | |
| confirm | No | Must be true: this action is outward-facing or destructive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the operation is destructive/outward-facing, requires confirm=true, and explains two non-obvious effects (weekly working-location setting is preserved; a multi-day Out of office is deleted in its entirety). It doesn't say whether the deletion is reversible or what happens if no matching entry 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?
Four tight sentences, each earning its place: scope first, then sibling differentiation, then the per-entry-type behaviors, then the confirm requirement. Front-loaded and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description covers scope, side effects, and the mandatory confirmation flag. It leaves out return/error behavior (e.g., no entry found for that day) but otherwise gives an agent enough to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantic meaning about the `date` parameter: for working locations only that day is affected, whereas for a multi-day Out of office the date selects an entry that is removed as a whole. That nuance is absent from the schema and materially affects how an agent should pick a date.
Input schemas describe structure but not intent. Descriptions should explain 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 (delete) and a precise resource scope (working location / Out of office / Focus time entries for one day in the Calendar app). It explicitly distinguishes itself from calendar_delete by noting those entries are not in the calendar provider and are therefore invisible to that 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?
Names the closest alternative (calendar.delete) and explains the condition under which this tool must be used instead, which is exactly the routing information an agent needs. It stops short of stating explicit exclusions or preconditions beyond the confirm flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_eventsA
List event occurrences in a time range (recurring events are expanded into instances).
Range: period, or start + (end | days). With nothing given: from today 00:00 for 7 days.
Covers every calendar synced to the phone, including calendars hidden in the app (unless
include_hidden=false). Calendars with sync off have no events on the phone: with
include_unsynced=true they are synced for the duration of the call (slow: about a minute)
and their sync is turned off again afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Range end (exclusive; a date means through the end of that day). | |
| days | No | Number of days from start (default 7). | |
| limit | No | Maximum number of occurrences returned. | |
| query | No | Case-insensitive text to find in title, description or location. | |
| start | No | Range start: ISO 8601 / 'YYYY-MM-DD HH:MM' / 'YYYY-MM-DD' / now / today / tomorrow. | |
| period | No | today, tomorrow, week (7 days from today), this_week / next_week (Mon-Sun), month (30 days). | |
| calendar | No | Calendar id or name (default: all calendars on the phone). | |
| include_hidden | No | Include calendars hidden in the Calendar app (visible=false). | |
| include_canceled | No | Include canceled events. | |
| include_declined | No | Include events you declined. | |
| include_unsynced | No | Temporarily turn sync on for calendars that have it off (in scope) and include them. | |
| unsynced_timeout | No | Max seconds to wait for the temporary sync of unsynced calendars. | |
| description_chars | No | Truncate descriptions to this many characters (-1 = full). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it discloses recurring-event expansion, hidden-calendar coverage, and the important side effect that `include_unsynced=true` temporarily enables sync, is slow (about a minute), and turns sync back off afterward. This is exactly the kind of behavioral context an agent needs before invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, followed by range rules, defaults, and important caveats. Every sentence adds useful information, and the structure makes it easy to scan without wasting 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?
For a 13-parameter tool with no annotations and no output schema, the description covers the critical context: purpose, default time range, calendar scope, hidden-calendar behavior, and the temporary-sync side effect. It does not describe the returned event shape, sorting, or timezone handling, which are minor but real gaps given the absence 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 description coverage is 100%, so the schema already documents each parameter and the baseline is 3. The description adds meaningful semantics beyond the schema by explaining the relationship between `period` and `start`/`end`/`days`, the default range, and the behavioral implications of `include_hidden` and `include_unsynced`.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: 'List event occurrences in a time range,' and adds that recurring events are expanded into instances. It is clear what the tool returns, but it does not explicitly distinguish itself from sibling tools such as calendar_search or calendar_next.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational guidance for selecting a time range via `period` or `start` plus `end`/`days`, and states the default when nothing is provided. It also explains when `include_hidden` and `include_unsynced` matter, but it does not explicitly name alternatives or 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.
calendar_focus_timeA
Create a Focus time block in the Calendar app (colleagues see it; meetings can be auto-declined).
Not in the calendar provider: read back from the app, removed with calendar.delete_special.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End time (default start + 2 hours). | |
| start | Yes | Start time ('YYYY-MM-DD HH:MM'). | |
| title | No | Title (default 'Focus time'). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| decline | No | new_and_existing or only_new invitations (with auto_decline). | only_new |
| message | No | Decline message sent to organizers (with auto_decline). | |
| auto_decline | No | Automatically decline meetings in that time. | |
| do_not_disturb | No | Turn on 'Do not disturb' (chat notifications muted) during the block. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden and does so well: it discloses the outward-facing effect (colleagues see the block), the auto-decline side effect, the confirm requirement, and the important lifecycle quirk that the block is not visible in the calendar provider and must be read back from the app / removed via calendar.delete_special.
Agents need to know what a tool does to the 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, front-loaded sentences with no filler; the core purpose leads and the lifecycle caveat follows. Efficient, though the parenthetical clauses could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an eight-parameter mutation with no annotations and no output schema, it covers the essential behaviors (outward-facing impact, confirm gate, non-provider lifecycle). It leaves minor gaps such as what the returned block looks like and how decline/message interact, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all eight parameters including the decline enum are already documented in-schema. The description only obliquely reinforces auto_decline/decline via 'meetings can be auto-declined' and adds no syntax or default detail beyond the schema, so 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?
States a specific verb+resource ("Create a Focus time block in the Calendar app") and adds scope detail (colleagues see it, meetings can be auto-declined). The 'not in the calendar provider' line separates it from provider-level tools, though it never explicitly contrasts with calendar_create/calendar_update.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Conveys the use case (blocking focus time) and a precondition (confirm=true), but never states when to prefer this over calendar_create or calendar_update for a normal event, nor when not to use it. 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.
calendar_free_busyA
Busy blocks (merged) and the free gaps between them in a time range.
Counts events marked busy (and tentative, unless disabled), skipping canceled events and
events you declined. All-day events are ignored unless include_all_day. Every calendar
synced to the phone counts (hidden ones too, unless include_hidden=false); calendars with
sync off are listed in unsynced_calendars, or synced for the call with include_unsynced.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Range end. | |
| days | No | Number of days from start. | |
| start | No | Range start (same formats as calendar.events). | |
| period | No | today, tomorrow, week, this_week, next_week or month. | |
| calendar | No | Calendar id or name (default: all calendars on the phone). | |
| include_hidden | No | Count calendars hidden in the Calendar app. | |
| include_all_day | No | Treat busy all-day events as busy for the whole day. | |
| include_unsynced | No | Temporarily sync calendars whose sync is off and count them (slow). | |
| min_free_minutes | No | Only report free gaps at least this long. | |
| unsynced_timeout | No | Max seconds to wait for that temporary sync. | |
| include_tentative | No | Treat events with availability 'tentative' as busy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses which events are excluded (canceled, declined, all-day by default), how hidden and unsynced calendars are treated, and even surfaces the `unsynced_calendars` output field. It flags that include_unsynced is slow, which is exactly the kind of operational caveat an agent needs. It stops short of stating the return value shape (block granularity, timezone) or that the tool is read-only.
Agents need to know what a tool does to the 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 paragraphs, front-loaded with the return value, then behavioral rules. Each sentence carries a distinct rule (canceled, declined, all-day, hidden, unsynced). Minor deduction for opening with a noun phrase rather than a verb, which reads as a label rather than an instruction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an 11-parameter tool with no output schema and no annotations, the description supplies the essential behavioral model: what counts as busy, what is skipped, and the calendar-inclusion matrix. The gaps are what happens with zero arguments (all params optional, no stated default range) and the format/granularity of the returned busy blocks.
Complex tools with many parameters or behaviors need more documentation. 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 would be 3, but the description adds real meaning the schema lacks: the relationship between include_unsynced and the `unsynced_calendars` output, and the fact that sync-off calendars are excluded unless that flag is set. This cross-parameter interplay is not inferable from the individual field 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 opening line states precisely what the tool returns: merged busy blocks plus the free gaps between them within a time range. That distinguishes it functionally from calendar_events or calendar_search, but it never names those siblings explicitly, so the differentiation must be inferred from the noun phrase alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 through the filtering rules (canceled/declined skipped, tentative counted unless disabled), which tells an agent the result is a computed availability view rather than a raw event list. However, there is no explicit 'use this instead of X when…' guidance and no statement about what happens when no range is supplied — all 11 parameters are optional.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_getA
Get one event (whole series for recurring events) with attendees and reminders.
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event id (the `id` field of calendar.events / calendar.search results). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full behavioral burden. It adds useful context by disclosing that recurring events return the whole series and that attendees and reminders are included. However, it doesn't state read-only safety, permission requirements, or error behavior for missing event_ids.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero wasted words. Every element (single event, recurring series, attendees, reminders) 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 one-parameter read tool with no output schema, the description compensates by stating what is returned (attendees and reminders) and how recurring events are handled (whole series). Only minor gaps remain around error handling or authentication, which are less critical here.
Complex tools with many parameters or behaviors need more documentation. 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 sole event_id parameter is well-documented in the schema, including its source (calendar.events / calendar.search). The description adds no further parameter semantics, which is the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Get') and resource ('one event'), and distinguishes from list tools by explicitly saying 'one event' and noting whole-series behavior for recurring events. It doesn't name a specific sibling alternative, but the scope is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent would naturally use this after finding an event_id. However, there is no explicit when-to-use guidance, no mention of alternatives like calendar_search or calendar_events, and no exclusions. Minimum viable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_meet_linkB
The Google Meet link of an event, if it has one (provider only, no UI).
| Name | Required | Description | Default |
|---|---|---|---|
| event_id | Yes | Event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose two useful traits — the value comes from the provider rather than the UI, and it only exists "if it has one" — but says nothing about failure behavior for events without a link, permissions, or what the response looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the key qualifier ("if it has one") placed early and no wasted words. It is efficient, though bordering on under-specified rather than maximally 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?
No output schema exists, so the description should say what is actually returned — a URL string, null, or an error — when the event has no Meet link. The parenthetical hints at nullability but leaves the return contract ambiguous for an otherwise simple 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?
There is only one parameter and schema coverage is 100%, so the schema already documents event_id fully. The description adds no semantics beyond what the schema provides, which is the expected baseline for a single well-documented 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?
Identifies a specific resource — the Google Meet link belonging to a given event — which is distinct from siblings like calendar_add_meet and calendar_remove_meet that modify the meet link. It lacks an explicit verb (read/get), so the agent must infer that this is a retrieval operation from the noun phrase alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"(provider only, no UI)" implies the agent should call this rather than opening the event and scraping the link from the calendar UI, which is a soft alternative. However, no sibling is named explicitly and there is no statement about when this is preferable to calendar_get or calendar_open_event.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_nextB
The next upcoming (or currently running) event occurrences, soonest first.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How far ahead to look. | |
| count | No | How many occurrences to return. | |
| calendar | No | Calendar id or name (default: all calendars on the phone). | |
| include_hidden | No | Include calendars hidden in the Calendar app. | |
| include_all_day | No | Include all-day events (today's all-day events count as running). | |
| include_declined | No | Include events you declined. | |
| include_unsynced | No | Temporarily sync calendars whose sync is off (slow, see calendar.events). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses two useful behavioral facts, inclusion of currently-running events and soonest-first ordering, but says nothing about what a returned occurrence contains, whether defaults for hidden/declined calendars apply silently, or any performance caveat (the schema mentions a slow unsynced path that the description ignores).
Agents need to know what a tool does to the 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 key qualifier (upcoming or currently running) and the ordering are both front-loaded. Nothing could be removed without losing signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 7 optional parameters, full schema coverage, and no output schema, the definition is minimally adequate. However, because no output schema documents the return shape, the description should say what an occurrence looks like and how the count cap behaves when days and count interact.
Complex tools with many parameters or behaviors need more documentation. 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 is already explained, which sets the baseline at 3. The description adds only indirect signal: 'currently running' bears on the days window and 'soonest first' on count, but no syntax or default behavior is contributed 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 resource ('event occurrences'), a scope ('next upcoming or currently running'), and an ordering ('soonest first'), so an agent understands what comes back. It does not differentiate itself from siblings like calendar_events or calendar_search, which overlap heavily with this concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 next upcoming (or currently running) event occurrences' implies the use case of a quick look-ahead, but the description never says when to prefer this over calendar_events, calendar_get, or calendar_search. With dozens of calendar siblings, the absence of any explicit contrast leaves the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_openA
Show a date in the Calendar app (optionally switching view) and read what is visible.
Returns the view, the toolbar title and the visible items (or, in month view, the number of items of each day). Use calendar.view_screen to read whole days in detail.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Day to show: YYYY-MM-DD, DD/MM/YYYY, today, tomorrow... | today |
| view | No | schedule, day, 3days, week or month (default: keep the app's current view). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it does disclose the return shape (view, toolbar title, visible items, with per-day counts in month view) and that the view may be switched as a side effect. It omits whether the tool is read-only versus state-changing, whether it launches the app, and any latency or failure behavior, which matters for an unannotated UI-driving tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: what it does and returns first, the sibling alternative last. No filler, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by enumerating the return payload, including the month-view special case. For a 2-parameter, zero-required navigation tool this is nearly complete; only the app-state prerequisite is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (date formats, view enum and its 'keep current view' default) are already fully documented. The description only alludes to the view parameter ('optionally switching view') without adding format or edge-case detail 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?
States a specific verb ('Show a date') plus the resource (Calendar app), and adds the read-back behavior ('read what is visible'). It explicitly distinguishes itself from the sibling calendar_view_screen, so an agent can pick between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule: use this to open a date/view, use calendar_view_screen to read whole days in detail. That is a real when-to-use statement. It stops short of a full 5 because there is no guidance on prerequisites (must the Calendar app be running?) or when neither tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_open_eventA
Open an event in the Calendar app by provider id and read its screen.
Returns what the app shows: when, recurrence, Google Meet link and dial-in, location, notifications, calendar, guests with their answers, notes and your RSVP state (rsvp.available, rsvp.response = yes/no/maybe/null). The event must be synced with Google.
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | Which occurrence of a recurring event (its start date/time); default the next one. | |
| event_id | Yes | Event id (calendar.events / calendar.view_screen `event_id`). | |
| stay_open | No | Leave the event screen open (false: go back to the main view). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does the heavy lifting well: it discloses that the tool navigates the UI ('read its screen'), enumerates the returned fields, and documents the RSVP state encoding including null. It omits the side effect of leaving the Calendar UI on the event screen (only implied by stay_open in the schema) and says nothing about failure behavior for unsynced events.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by a compact enumeration of the returned surface, which is warranted because no output schema exists. The parenthetical RSVP encoding is slightly dense but each clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a UI-navigation read tool with no annotations and no output schema, the description supplies both the precondition and a field-level summary of the return payload, which is exactly what an agent needs to decide and to interpret the result. 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 goes slightly beyond by pinning event_id to the provider-side id and tying validity to Google sync, which constrains which ids are legal. The recurrence-occurrence meaning of start is left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a concrete verb pair (open + read screen) and a specific resource (an event, keyed by provider id), which is materially different from calendar_get or calendar_events. It stops short of naming the closest sibling (calendar_view_screen) explicitly, so differentiation is inferential 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?
A real usage precondition is stated — 'The event must be synced with Google' — which tells the agent when this call can succeed. However, there is no guidance on when to prefer this over calendar_get or calendar_view_screen, and no note on what to do when the event is not synced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_out_of_officeA
Create an Out of office block in the Calendar app (colleagues see it; meetings can be auto-declined).
Google shows it to people who look at your calendar and, with auto_decline, declines new
meeting invitations in that time, sending message to the organizers. Meetings you already
accepted are declined too only when asked explicitly with decline='new_and_existing' (it
notifies their organizers); the default is 'only_new'. Out of office is not in the calendar
provider: it is read back from the app and removed with calendar.delete_special.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Last day (all-day, inclusive) or end time; default the start day / start + 1 hour. | |
| start | Yes | First day (YYYY-MM-DD: all-day) or start time ('YYYY-MM-DD HH:MM': timed block). | |
| title | No | Title shown to others (default 'Out of office'). | |
| all_day | No | Force all-day (true) or timed (false); default from the start format. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| decline | No | only_new invitations (default) or new_and_existing (also declines the meetings you already accepted and notifies their organizers: only when explicitly wanted). | only_new |
| message | No | Decline message sent to organizers (default: the app's text). | |
| auto_decline | No | Automatically decline meetings in that time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses that this is outward-facing/destructive (hence confirm=true), that organizers receive 'message' and are notified on new_and_existing, that already-accepted meetings are only declined when explicitly requested, and that the block is not in the calendar provider and must be removed with calendar.delete_special. These are exactly the side effects an agent needs before invoking a mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the second paragraph is dense with defaults and side effects rather than filler. It is on the long side, but each clause (default decline mode, notification behavior, removal path, confirm requirement) carries distinct information, so almost nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no annotations and no output schema, the description covers the essentials: side effects, defaults, prerequisites (confirm), and lifecycle (removal via calendar_delete_special). The only gap is what the call returns or how to verify the block was created, which is minor since there is no output schema to lean on.
Complex tools with many parameters or behaviors need more documentation. 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 8 parameters and the baseline would be 3. The description adds genuine meaning on top: it clarifies that decline='new_and_existing' notifies organizers (a non-obvious side effect) and explains the confirm requirement's rationale ('outward-facing or destructive'), extending beyond the schema's terse default notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Create an Out of office block in the Calendar app') and immediately states the visible effect ('colleagues see it; meetings can be auto-declined'), which distinguishes it from calendar_create, calendar_focus_time, and calendar_reminder_add. It also clarifies that this is not a provider-level event but an app-level construct, which is information an agent could not infer from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear operational context: default decline behavior is 'only_new', new_and_existing must be requested explicitly, and removal is done via calendar.delete_special rather than calendar_delete. It never explicitly contrasts with calendar_focus_time or calendar_create (the nearest-looking siblings), so an agent still infers which tool to prefer, but the behavioral framing is otherwise strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_reminder_addB
Add a reminder to an event. Returns the event's reminders.
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | alert (notification) or email. | alert |
| minutes | Yes | Minutes before the start (0-40320). | |
| event_id | Yes | Event id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It usefully states the tool returns the event's reminders (helpful given no output schema), but says nothing about whether the add appends or replaces existing reminders, permission requirements, or any cap on reminders per event — significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the action is front-loaded and the return-value note follows. Every sentence earns its place, especially since the second sentence substitutes for a missing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter mutation tool with no annotations and no output schema, the description covers the action and the return shape, but omits permission requirements, append-vs-replace semantics, and any indication of what happens on invalid event_id. Adequate but with 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%, with all three parameters documented including the enum and the 0-40320 minute range. The description adds no parameter-level meaning 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+resource ("Add a reminder to an event"), which is unambiguous and lets an agent distinguish it from calendar_reminder_remove by the verb alone. It stops short of any explicit sibling comparison, so it lands at 4 rather than 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 when-to-use guidance, no prerequisites (event must exist, permission needed), and no mention of the natural alternative calendar_reminder_remove or how many reminders an event can hold. The agent must infer all usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_reminder_removeA
Remove reminders from an event (by minutes, by reminder_id, or all). Returns what is left.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Remove every reminder of the event. | |
| minutes | No | Remove the reminder(s) set this many minutes before. | |
| event_id | Yes | Event id. | |
| reminder_id | No | Remove this reminder (reminder_id from calendar.get). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add one genuinely useful fact — 'Returns what is left' — which covers the absent output schema. But it omits mutation-relevant traits: whether removal is reversible, whether minutes-matching deletes all matching reminders, and what happens if nothing matches.
Agents need to know what a tool does to the 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, zero filler, with the selection modes front-loaded and the return behavior trailing. Nothing could be cut without losing 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 4-parameter mutation with full schema coverage and no output schema, the description plus schema is nearly sufficient — the return note fills the output-schema gap. The only shortfall is missing guidance on parameter interaction and non-matching-reminder behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter is already documented, including the useful hint that reminder_id comes from calendar.get. The description's mode list restates the schema rather than adding new meaning, so baseline 3 applies; it gives no guidance on mutual exclusion among all/minutes/reminder_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?
Specific verb (remove) plus resource (reminders from an event) and the three selection modes, which cleanly separates it from the sibling calendar_reminder_add. It never names the sibling explicitly, but the add/remove pairing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical lists the three removal modes, implying when each applies, but the description never states when the agent should reach for this tool versus calendar_update (which may also alter reminder state) or when removal is inappropriate. Usage 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.
calendar_remove_meetA
Remove the Google Meet conference from one of your events (the link stops working).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | For recurring events: this occurrence (see start), following, or all. | all |
| start | No | Occurrence for scope this/following; default the next one. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| timeout | No | Seconds to wait for the provider to drop the link. | |
| event_id | Yes | Event id (must be editable). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the link stops working and that the action is outward-facing/destructive requiring confirm=true, but it does not cover permissions, reversibility, or the asynchronous timeout behavior documented in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is two short sentences, front-loaded with the action and effect, and the confirm requirement is stated clearly with no wasted 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?
For a destructive but simple removal operation with full schema coverage and no output schema, the description provides enough context to call it correctly. It could be slightly richer about reversibility or permissions, but the essential effect and safety requirement are 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 schema already documents event_id, scope, start, confirm, and timeout. The description only restates the confirm requirement and adds no extra parameter 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 states a specific verb and resource: remove the Google Meet conference from one of the user's events. The effect, that the link stops working, further distinguishes it from sibling operations like calendar_add_meet or calendar_meet_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?
It implies when to use the tool by describing removal of a Meet conference and notes the confirm requirement. However, it does not explicitly name alternatives or when-not conditions, such as using another calendar update tool instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_respondA
Answer an invitation: set your own attendee status (the organizer is notified by Google).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | accepted, declined or tentative. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| event_id | Yes | Event id (for recurring events the answer applies to the whole series unless instance_start is given). | |
| instance_start | No | Answer only this occurrence of a recurring event: its start as listed by calendar.events (or its date). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key external side effect (the organizer is notified by Google) and the confirm gate. It stops short of stating whether the status can be changed again later, what permissions are required, or whether the action is idempotent for a recurring series.
Agents need to know what a tool does to the 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 action first, then the hard prerequisite. Nothing is redundant and every clause carries information the caller needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple four-parameter mutation with a fully documented schema and no output schema, the description covers purpose, side effect, and the confirm gate adequately. The only material omission is routing guidance against the near-duplicate calendar_rsvp sibling.
Complex tools with many parameters or behaviors need more documentation. 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%: status enum, event_id series semantics, instance_start, and confirm are all documented in the schema. The description only restates the confirm requirement and adds no parameter detail beyond the structured fields, 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?
States a specific verb and resource ('Answer an invitation: set your own attendee status'), which is concrete and actionable. However it does not distinguish itself from the sibling calendar_rsvp, which appears to cover the same ground, so an agent cannot tell the two apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 confirm=true prerequisite is stated, which is useful gating guidance, and the parenthetical explains the outward effect. But it gives no when-not guidance and never mentions calendar_rsvp or calendar_attendee_add as alternatives for RSVP-like actions, leaving the agent to infer which tool to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_rsvpA
Answer an invitation with the Calendar app's Yes / No / Maybe buttons (organizer is notified).
Unlike calendar.respond (provider), this goes through Google's servers at once and can answer a single occurrence of a recurring event (scope 'this'). The result is checked on the provider after the app syncs. Read the current answer first with calendar.open_event.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | For recurring events: this (one occurrence, see start), following, or all. | all |
| start | No | The occurrence to answer (its start); default the next one. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| timeout | No | Seconds to wait for the provider to reflect the answer. | |
| event_id | Yes | Event id (for recurring events: the series id from calendar.events). | |
| response | Yes | yes, no or maybe. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does the heavy lifting well: it discloses that the organizer is notified (outward-facing side effect), that the effect lands on Google's servers immediately while the local provider catches up after sync, and that confirm=true is mandatory. It does not cover failure modes (invalid event_id, declined confirm) or whether an answer can be revised later, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then the sibling contrast, then the prerequisite, then the confirm requirement — a sensible order with no filler. Minor deduction for referring to siblings as 'calendar.respond' / 'calendar.open_event' (dot notation) while the actual tool names use underscores, which is a small avoidable ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 6-parameter mutation tool with no annotations and no output schema, the description covers the essentials: side effect, sync/asynchrony behavior, precondition, and the confirm guard, which explains the confirm and timeout parameters implicitly. Missing only edge-case behavior such as what a failed or timed-out answer looks like.
Complex tools with many parameters or behaviors need more documentation. 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 enum/default documentation for scope, start, confirm, and timeout is already complete, so the baseline is 3. The description's only added parameter meaning is the scope='this' recurring-occurrence case, which largely restates the schema's own scope description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Answer an invitation with the Calendar app's Yes / No / Maybe buttons') and immediately adds the consequence ('organizer is notified'). It is clearly distinguished from the sibling calendar_respond by transport path and by the single-occurrence capability.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 contrasts with calendar.respond (provider path) and explains why you would pick this one: it goes through Google's servers at once and can answer a single occurrence with scope 'this'. It also gives an ordering prerequisite — read the current answer first with calendar.open_event — and the confirm=true gate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_searchA
Search events (series, not occurrences) by text in title, description or location.
Searches all calendars, including hidden ones, newest first. For recurring events the
start/end are those of the first occurrence; use calendar.events with query to get the
concrete occurrences in a range.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Only events starting before this time. | |
| limit | No | Maximum results. | |
| query | Yes | Case-insensitive text to look for. | |
| start | No | Only events still occurring after this time (same formats as calendar.events). | |
| calendar | No | Calendar id or name to restrict to. | |
| description_chars | No | Truncate descriptions to this many characters (-1 = full). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and discloses several non-obvious traits: all calendars including hidden ones are searched, results are newest first, and recurring events use the first occurrence's start/end. It does not describe return structure, permissions, or rate limits, but the key search semantics are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs, front-loads the core purpose, and every sentence adds useful scope or behavioral context. There is no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter search tool with no output schema, it covers the critical invocation semantics: series versus occurrences, all-calendar scope, result ordering, and recurrence handling. It does not explain the shape of returned results, but enough is present to call 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%, so the baseline is 3, but the description adds meaning beyond the schema by clarifying that the query searches title, description, and location, and by explaining how start/end behave for recurring event series. It reinforces that the calendar parameter can cover hidden calendars too.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: search event series by text in title, description, or location. It immediately distinguishes series from occurrences and names calendar.events for concrete occurrences, so an agent can tell it apart from calendar_events without inspecting either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use calendar.events with `query` when the agent needs concrete occurrences in a range, which is a clear alternative-selection rule. It also specifies that the search covers all calendars including hidden ones, giving enough context to choose this tool over calendar-specific listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_set_calendarA
Show/hide a calendar in the Calendar app, or turn its sync to the phone on/off.
Hidden calendars are still synced (calendar.events includes them). A calendar with sync off has no events on the phone; turning sync on downloads them (run calendar.sync_background). These are phone settings of your calendar list, not changes to the events.
| Name | Required | Description | Default |
|---|---|---|---|
| sync | No | Sync its events to the phone (true) or not (false). | |
| visible | No | Show (true) or hide (false) the calendar in the app. | |
| calendar | Yes | Calendar id or name (see calendar.calendars). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden — and it does disclose the key side effects: hiding does not stop syncing, disabling sync removes events from the device, enabling sync downloads them via a separate tool. It doesn't mention permission requirements or error behavior when the calendar id is unknown.
Agents need to know what a tool does to the 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 sentences, front-loaded with the operation and followed by the two most important semantic distinctions. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-annotation, no-output-schema settings mutation, the description covers what changes, what the states mean, and the required follow-up call. Minor gap: no statement about failure modes for an invalid calendar id.
Complex tools with many parameters or behaviors need more documentation. 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 defines 'visible', 'sync', and 'calendar'. The description adds genuine meaning by explaining that the two booleans are independent settings with different consequences (hidden vs. synced), which an agent could not infer from the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (show/hide, toggle sync) and resource (a calendar in the phone's calendar list), and explicitly separates it from event-level operations ('not changes to the events'), which distinguishes it from calendar_update and calendar_events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 clear context: use it for phone-level settings, and run calendar.sync_background after enabling sync to actually fetch events. It also excludes event editing. It stops short of fully routing the agent to a sibling for event-level changes by name, hence a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_set_working_locationA
Set your working location (Home, Office or any place) for one day or a range of days.
Colleagues see it in Calendar/Gmail/Chat. It applies to these days only (your weekly working-location settings stay); to undo, set the previous place again or use calendar.delete_special (the day then has no working location). Read with calendar.working_location.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Day (YYYY-MM-DD, tomorrow...). | |
| place | Yes | home, office, or another place name (free text). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| end_date | No | Last day (inclusive) for a range; default only `date`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does well: it reveals outward visibility (colleagues see it in Calendar/Gmail/Chat), that the change is scoped to the listed days while weekly settings persist, the undo path, and the confirm=true gate with its rationale. It stops short of covering permission/account scope or error behavior, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the action front-loaded, followed by consequences, undo and the confirm requirement. The trailing confirm=true sentence partially duplicates the schema's own confirm description, which is the only real 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 4-parameter mutation tool with no annotations and no output schema, the description covers effect, visibility, scope persistence, reversal and the confirm gate. Only peripheral context such as account/timezone handling is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's 'Home, Office or any place' and 'one day or a range of days' largely restate what the schema already documents for place, date and end_date, adding only modest framing value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set your working location') plus the accepted values (Home, Office, any place) and the temporal scope (one day or a range of days). It also disambiguates from the read path by naming calendar.working_location, so an agent can tell it apart from calendar_set_calendar and the read sibling without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: read with calendar.working_location, undo by re-setting the previous place or by calendar.delete_special, and use this tool for per-day overrides that should not disturb weekly settings. Both alternatives and their selecting conditions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_syncA
Force a Calendar sync with Google and wait for it to finish.
New server events then show in the provider (calendar.events) and local changes are uploaded. method auto (default): Android's sync manager first (fast, no screen), the app's Refresh if no sync started; background: sync manager only (same as calendar.sync_background); ui: the app's Refresh (drawer). The sync start is verified on Android's sync manager.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Also wait until no local change is left to upload (pending_uploads = 0). | |
| method | No | auto, background or ui. | auto |
| timeout | No | Maximum seconds to wait. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key behavior: it forces a sync, waits for completion, fetches new server events, uploads local changes, and verifies the sync start on Android's sync manager. It does not describe failure behavior, timeout outcomes, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and effect in the first two sentences, then details the method modes. Dense but each sentence adds operational information; the nested parenthetical about the fallback path is slightly hard to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter sync tool with no annotations and no output schema, the description covers the action, side effects, method trade-offs, and verification. It falls short of fully complete because return values and failure/timeout handling are left unexplained.
Complex tools with many parameters or behaviors need more documentation. 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 baseline would be 3, but the description adds real meaning to the 'method' enum by explaining what auto, background, and ui actually do, beyond the schema's terse 'auto, background or ui.' The 'wait' and 'timeout' parameters are already explained in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Force a Calendar sync with Google') plus the waiting side effect. It explicitly distinguishes itself from the sibling calendar_sync_background by noting that background mode is 'same as calendar.sync_background', so an agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the three method modes with when each is appropriate: auto tries the fast no-screen sync manager first and falls back to the app's Refresh, background is sync-manager only, and ui uses the drawer Refresh. It routes to the sibling for background mode but does not state when not to use this tool or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_sync_backgroundA
Sync the calendar with Google without the screen (Android sync manager, requestsync).
Pushes local changes (create/update/delete/respond) and pulls server changes; works with the phone locked and the screen off. calendar.sync does the same and falls back to the app.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Also wait until no local change is left to upload (pending_uploads = 0). | |
| timeout | No | Maximum seconds to wait. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it delivers real operational detail: it pushes local create/update/delete/respond changes and pulls server changes, and runs headless with the screen off. It omits failure behavior, network requirements, and whether partial failures roll back, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The key scope and mechanism are front-loaded and the total is three sentences with no filler. The closing sentence about calendar_sync falling back to the app is slightly compressed and takes a moment to parse, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter sync tool with no annotations and no output schema, the description covers what is synced, in which direction, and under what device conditions. Return values and error semantics are absent, but the essentials for a correct invocation are there.
Complex tools with many parameters or behaviors need more documentation. 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 both parameters (wait, timeout) have their own descriptions, so the schema does the semantic work. The description adds no parameter-level detail, making the baseline 3 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?
States a specific verb and resource ("Sync the calendar with Google") plus the mechanism (Android sync manager, requestsync) and scope (without the screen). It explicitly distinguishes itself from the closest sibling calendar_sync, so an agent can pick between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete usage condition (works with phone locked and screen off) and names the alternative (calendar_sync) with its distinguishing fallback behavior. It never states an explicit when-not-to-use case, which keeps it short of a 5, but the context needed to choose is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_completeA
Mark a Google Task as completed (or not completed again with undo=true).
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Task list name (default the list the app shows). | |
| undo | No | Mark a completed task as not completed. | |
| title | Yes | Exact task title. | |
| occurrence | No | Which one when several tasks have this title (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that undo=true marks a completed task as not completed, which is useful, but it does not describe permission requirements, side effects, missing-task behavior, or what confirmation is 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 wasted words. It communicates the primary action first and the undo variant second.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is fully described and there is no output schema, so much of the calling detail is covered. Still, as a mutation tool with no annotations, the description does not address permissions, result behavior, or what happens when no matching task title 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%, so all four parameters are already documented. The description adds the semantic of undo=true, but that is also present in the schema. Baseline 3 is appropriate because the schema does most of the parameter explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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: mark a Google Task as completed. It also clarifies the inverse operation with undo=true, making the core action clear. However, it does not explicitly distinguish this tool from sibling calendar_task_update, which likely handles other task edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 naming the completion and undo scenarios. It does not state when to prefer calendar_task_update for other changes, nor does it mention prerequisites or exclusions. Usage is inferable but not fully guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_createC
Create a Google Task (shown in Calendar on its date).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Due date (YYYY-MM-DD, tomorrow...); default no date. | |
| list | No | Task list name (see calendar.task_lists); default the list the app shows. | |
| time | No | Due time HH:MM (needs date). | |
| notes | No | Details / notes text. | |
| title | Yes | Task title (any Unicode, e.g. accented letters). | |
| starred | No | Star the task. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that the task appears in Calendar on its date; it says nothing about whether the task is created immediately, what happens if the target list does not exist, or any permissions/side effects. For a write tool with zero annotation coverage, this is thin.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence, front-loaded with the action and resource, with zero wasted words. Its terseness is more a completeness gap than a conciseness problem, but it is arguably too minimal to stand alone.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema is fully described and simple (6 params, one required), which covers most of what an agent needs to call it. However, with no annotations and no output schema, the description should do more to explain mutation behavior and success semantics; the single-sentence description leaves that 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 every parameter (date, list, time, notes, title, starred) is already documented in the schema with defaults and formats. The description adds no parameter-level information beyond what is structured, 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 gives a specific verb and resource: 'Create a Google Task', and adds where it surfaces ('shown in Calendar on its date'). That is enough to distinguish it from event creation (calendar_create) and the other task siblings by name, though it never explicitly contrasts itself with calendar_task_update or calendar_create.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus calendar_task_update or calendar_create, and no prerequisites or exclusions. The only signal is the verb 'Create', which leaves the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_deleteA
Delete a Google Task.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Task list name (default the list the app shows). | |
| title | Yes | Exact task title. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| completed | No | Only a completed (true) or open (false) task; default either. | |
| occurrence | No | Which one when several tasks have this title (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the action is "outward-facing or destructive" and requires confirm=true, but it does not explain irreversibility, permission requirements, side effects, or what happens when multiple matching tasks exist.
Agents need to know what a tool does to the world before calling 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 zero waste. The core action is front-loaded and the confirmation requirement follows 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?
The schema fully documents the parameters, and the description adds the critical confirm requirement. But for a destructive tool with no annotations and no output schema, it is still missing important context about reversibility, matching behavior, and how it differs from related task tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented. The description mentions confirm=true, but this is already stated in the schema and does not add meaning beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Delete a Google Task." It is clear what the tool does, but it does not differentiate from closely related siblings such as calendar_task_complete, calendar_task_update, or calendar_task_list_delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by "Delete a Google Task" and the required confirm=true prerequisite. However, there is no explicit guidance on when to delete versus complete, update, or otherwise modify a task, and no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_list_createB
Create a new Google Tasks list (it becomes the list shown).
| Name | Required | Description | Default |
|---|---|---|---|
| list | Yes | List name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses a state side-effect ("it becomes the list shown"), which tells the agent creation changes the active list. However, it omits permissions, duplicate-name behavior, and what the call returns for this mutation.
Agents need to know what a tool does to the 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 short sentence that is fully front-loaded with the core action and the side-effect clause. Nothing wasted, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter creation tool with a fully covered schema and no output schema, the description is largely sufficient. The only minor gap is that it doesn't state what is returned or whether the new list's identity/name is confirmed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `list` parameter is fully documented in the schema (100% coverage) as "List name." The description adds no syntax, naming constraints, or format details 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?
States a specific verb+resource ("Create a new Google Tasks list"), which clearly separates it from sibling list operations like calendar_task_lists (read) and calendar_task_list_delete (delete). It stops short of naming those siblings explicitly, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or named alternative. An agent must infer that this is the right tool when a new task list is needed rather than creating tasks within an existing list via calendar_task_create.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_list_deleteA
Delete a Google Tasks list and all its tasks (the default list cannot be deleted).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| list | Yes | List name. | |
| confirm | No | Must be true: this action is outward-facing or destructive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does well: it discloses that the operation is destructive and cascading (all tasks in the list go with it), that the default list is protected, and that confirm=true is required. It stops short of stating irreversibility 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?
Two sentences, no filler, with the destructive scope front-loaded and the constraint and confirmation requirement following. Nothing to cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 2-parameter destructive tool with no annotations and no output schema, the description covers the essentials: cascade effect, protected target, and the confirm gate. It omits failure behavior and whether 'list' is matched by name or ID, which are minor residual 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 coverage is 100%, so the schema already documents both parameters; the description mainly restates the confirm=true requirement. It does add genuine semantics for 'list' by declaring which list values are invalid (the default list), which the schema's bare 'List name.' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: delete a Google Tasks *list*, plus the cascade scope ('and all its tasks'). That scope distinguishes it from the sibling calendar_task_delete (which deletes a task), though the sibling is never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(the default list cannot be deleted)' gives one concrete when-not condition, which is real guidance. But there is no routing to alternatives (calendar_task_delete for single tasks, calendar_task_lists to inspect lists first), so the agent must infer the rest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_listsC
The Google Tasks lists (names usable as list in the other task ops).
Args:
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not state that this is a read-only operation, whether it requires auth, whether pagination applies, or what the response shape is beyond 'names'. The one genuinely useful disclosure — that the values feed the `list` argument elsewhere — is the only behavioral detail 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 text is short but ends in a dangling 'Args:' fragment, which is noise from an incomplete template and misleads the agent into looking for arguments that do not exist. The remaining sentence is not front-loaded as a verb+object action statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is responsible for conveying return values; it only hints that names are returned. For a tool whose whole purpose is producing identifiers for other calls, the agent is left unsure whether it gets a list of strings, objects with ids, or counts.
Complex tools with many parameters or behaviors need more documentation. 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 tool takes zero parameters, so per the baseline this scores 4. However the trailing dangling 'Args:' indicates a truncated or omitted documentation block, which is a defect even though there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The fragment 'The Google Tasks lists' identifies the resource and implies a read of task lists, and the parenthetical tells the agent the returned names can be used as `list` elsewhere. But it is a noun phrase with no verb, no statement of what is returned (names only? ids? ordering?), and it does not distinguish itself from calendar_tasks or calendar_task_list_create/delete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance. The nested hint that names are usable as `list` in other task ops weakly implies 'call this before task ops', but the agent must infer that; nearby siblings like calendar_task_list_create and calendar_task_list_delete are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_tasksA
List Google Tasks of one list as shown in the Calendar app (tasks are not in the provider).
Each task: title, due (as shown, e.g. 'Tomorrow, 9:15 AM'), completed, starred, notes, subtask (true for a subtask, listed right after its parent). Tasks are addressed by title (+ occurrence when several share it) in the other task ops.
| Name | Required | Description | Default |
|---|---|---|---|
| list | No | Task list name (see calendar.task_lists); default the list the app shows. | |
| include_completed | No | Also list completed tasks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that tasks are not in the provider, how due dates are shown, which task fields are returned, the parent-then-subtask ordering, and the title-plus-occurrence addressing convention used by other task operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence and then adds useful return-value details. It is mostly efficient, though the output-field enumeration is dense and the final addressing note is more about the task ecosystem than this specific call.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately enumerates the task fields returned and explains subtask ordering. It is nearly complete for a read-only list tool, though it leaves read-only/non-destructive behavior implicit rather than stated explicitly and does not discuss pagination or result limits.
Complex tools with many parameters or behaviors need more documentation. 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 both parameters fully, including the default list behavior and include_completed. The description adds little parameter-specific meaning beyond reinforcing that the operation is scoped to one 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 names a specific verb and resource: listing Google Tasks for one list, and clarifies the Calendar-app view. It also distinguishes this list operation from the other task ops that address tasks by title, so an agent can identify what the tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'List Google Tasks of one list' and the note that other task ops address tasks by title, but the description does not explicitly say when to use this versus alternatives such as calendar_task_lists or calendar_task_update. The schema references calendar.task_lists for discovering list names, but the description itself provides no when-to-use/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_task_updateA
Edit a Google Task: rename, change/remove its date and time, notes, subtasks, star, list.
Returns the task as it is now (title, list, notes, due, subtasks, starred) plus
occurrence, so the new identity (new_title + occurrence) can be used in later calls.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | New due date (YYYY-MM-DD, tomorrow...). | |
| list | No | Task list it is in (default the list the app shows). | |
| time | No | New due time HH:MM (needs date). | |
| notes | No | New notes/details ('' clears them). | |
| title | Yes | Exact current title. | |
| starred | No | Star (true) or unstar (false). | |
| completed | No | Look for a completed (true) or open (false) task; default open tasks first, then completed. | |
| new_title | No | New title. | |
| clear_date | No | Remove the date/time. | |
| occurrence | No | Which one when several open tasks have this title (0 = first). | |
| add_subtasks | No | Titles of subtasks to add. | |
| move_to_list | No | Move the task to this other list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does usefully disclose the return payload and the non-obvious identity semantics (renaming changes the task's identity, so new_title + occurrence must be reused). It says nothing about permissions, failure behavior when the title isn't found, or whether clear_date/notes clearing is reversible.
Agents need to know what a tool does to the 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 paragraphs: the operation and its editable surface first, then the return/identity contract. Every sentence carries information an agent needs to sequence follow-up calls.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 12-parameter mutation tool with no annotations, the description covers the operation list, the return shape, and task-identity reuse — enough to invoke correctly. The remaining gap is error/ambiguity handling when the title matches no task or multiple, which the `occurrence` hint only partly addresses.
Complex tools with many parameters or behaviors need more documentation. 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 explaining why `occurrence` matters in follow-up calls and pairing it with `new_title` as the new identity — semantics the per-parameter text alone doesn't connect.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Edit a Google Task') and enumerates exactly which fields are editable (title, date/time, notes, subtasks, star, list). The scope is unambiguous, though it never distinguishes itself from the sibling calendar_task_complete, which also mutates a task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the field list — an agent infers it should edit an existing task rather than create one. There is no explicit when-not guidance, and notably no routing to calendar_task_complete for marking a task done, despite the overlapping `completed` parameter that only acts as a lookup filter here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_updateA
Change fields of an event (whole series for recurring events, or one occurrence). Omitted fields are kept.
Changing only start keeps the duration; only end/duration_minutes keeps the start.
Pass an empty string to clear location/description; rrule='none' turns a series into a
single event (its first occurrence). With instance_start only that occurrence of a
recurring event changes (e.g. move tomorrow's stand-up): the result is the occurrence's own
event (recurrence_exception_of = the series id).
Guests: changing title, time, location, description or recurrence of an event you organise that has guests makes Google e-mail them the update, so it needs confirm=true. Invitations from someone else cannot be changed (only your availability/colour, and reminders with calendar.reminder_*): answer them with calendar.respond / calendar.rsvp.
Avoid rapid successive edits of the same event: an edit made while the sync adapter is
uploading the previous one can be overwritten by the server copy (check pending_sync).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | New end (for all-day: last day, inclusive). | |
| color | No | New colour name (see calendar.create) or 'default' to reset. | |
| rrule | No | New recurrence rule (e.g. FREQ=WEEKLY;COUNT=4), or 'none' to stop repeating. | |
| start | No | New start (same formats as calendar.create). | |
| title | No | New title. | |
| all_day | No | Convert to/from an all-day event. | |
| confirm | No | Required (true) when the change is e-mailed to guests (event you organise with guests). | |
| event_id | Yes | Event id (for one occurrence: the series id, plus instance_start). | |
| location | No | New location ('' clears it). | |
| timezone | No | IANA zone for the new times (default: the event's zone, else Europe/Rome). | |
| description | No | New description ('' clears it). | |
| availability | No | busy / free / tentative. | |
| instance_start | No | Change only this occurrence of a recurring event: its start as listed by calendar.events (or its date). | |
| duration_minutes | No | New length in minutes (alternative to end). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does: guest e-mail side effects requiring confirm=true, permission limits on foreign invitations, and a concurrency hazard (rapid successive edits can be overwritten by the server; check pending_sync). It also discloses that instance_start produces a new occurrence object with recurrence_exception_of set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then grouped into labelled paragraphs (recurrence, clearing, guests, sync hazard) that an agent can scan selectively. Dense but essentially waste-free; the parenthetical examples ('e.g. move tomorrow's stand-up') earn their space by anchoring the semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 mutation tool with no annotations and no output schema, the description covers mutation scope, confirmation auth, permission boundaries, recurrence edge cases, and even the shape of the returned occurrence. Nothing an agent needs to call it 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 coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter meaning the schema cannot express: start-only keeps duration, end/duration_minutes keeps start, empty string clears location/description, rrule='none' demotes a series to a single event at its first occurrence. Only timezone/all_day/color semantics are left entirely to 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?
Opens with a specific verb+resource: 'Change fields of an event', and immediately narrows scope ('whole series for recurring events, or one occurrence'). It also names the sibling it competes with ('answer them with calendar.respond / calendar.rsvp'), so an agent can distinguish it from calendar_create and the RSVP tools without reading 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?
Explicit inclusions and exclusions: use instance_start to move one occurrence, use calendar.respond/calendar.rsvp for invitations you don't organise. It even states the narrow legal subset of edits on third-party invitations (availability/colour, calendar.reminder_*), which is exactly the routing decision an agent must make.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_view_screenA
Read what the Calendar app shows for one or more days, as structured rows (schedule view).
Shows things the provider lacks: working locations, tasks, the RSVP shown for each event. Rows: kind (event / working_location / task / out_of_office / focus_time), title, all_day, time, start, end (HH:MM), response (Not responded / No / Maybe..., absent when you accepted or organise it), location, calendar (absent for your own calendar), color, and event_id/instance_id matched from the provider (use them with calendar.open_event / calendar.rsvp). If the provider has events the app does not show yet, the app is refreshed and read again; those still missing are listed in not_shown_event_ids.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | First day: YYYY-MM-DD, DD/MM/YYYY, today, tomorrow... | today |
| days | No | Number of days to read (1-31). | |
| include | No | Only these row kinds (event, working_location, task, out_of_office, focus_time); default all. | |
| match_ids | No | Match event rows to provider ids (event_id, instance_id). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses a real side effect (if provider events are missing from the app, 'the app is refreshed and read again') and what happens to ones still absent ('listed in not_shown_event_ids'). It also explains the semantics of the response field (absent when you accepted or organise). It stops short of stating permissions or performance/rate implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then the value-add, then the row shape — a sensible order with no filler sentences. The dense parenthetical field list ('response (Not responded / No / Maybe..., absent when you accepted...)') is efficient but borders on a run-on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description effectively supplies one by enumerating row kinds and fields, plus the not_shown_event_ids fallback. What's missing is any statement of result size limits, date-range errors, or failure behavior for malformed dates — minor for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so date, days, include and match_ids are already documented in the schema. The description adds only indirect meaning ('one or more days', id matching tied to event_id/instance_id) rather than extra format or edge-case rules, 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?
States a specific verb and resource with scope: 'Read what the Calendar app shows for one or more days, as structured rows (schedule view)'. The phrase 'Shows things the provider lacks' draws the key distinction from provider-backed siblings like calendar_events and calendar_get, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for use (app-rendered schedule incl. working locations, tasks, RSVP) and an explicit follow-on path: use event_id/instance_id with calendar.open_event / calendar.rsvp. It never explicitly says when to prefer calendar_events or calendar_get instead, so exclusions are left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_working_locationB
Your working location (Office, Home, ...) for each day, as shown by the Calendar app.
Working locations are not in the provider. Days without one are reported with place null.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | First day: YYYY-MM-DD, today, tomorrow... | today |
| days | No | Number of days (1-31). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that working locations are not in the provider and that missing days are reported with place null, but it does not state read-only status, permissions, or the full output shape.
Agents need to know what a tool does to the 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 resource and followed by useful caveats about provider absence and null place values. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity and the schema is fully described, but no output schema exists. The description mentions the null edge case yet does not fully describe the return structure or confirm read-only behavior, leaving modest gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. 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 date and days are already documented in the schema. The description reinforces the per-day nature but adds no parameter-specific format or behavior 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 clearly identifies the resource: daily working locations from the Calendar app, with example values (Office, Home). It does not explicitly name the read/list action or distinguish itself from the sibling calendar_set_working_location, but the intended data 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?
It implies the tool is for viewing working locations, but gives no explicit when-to-use guidance, prerequisites, or exclusions. Critically, it does not tell the agent to use calendar_set_working_location when changing a location instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_accountsB
Accounts registered on the phone (name and type).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden; it does disclose the returned shape (name and type), which is useful. However it says nothing about whether an unlocked device or GET_ACCOUNTS-style permission is required, whether results include all account types, or what happens when no accounts exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short, front-loaded sentence with no waste. It is arguably terse to the point of under-specification, but nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description should explain what comes back, and it only minimally does so (name and type). It omits account type semantics (e.g. Google vs Exchange) and any indication of result ordering or volume, leaving the agent to discover return details at call time.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The schema is empty and consistent with a simple read of phone state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the specific resource (accounts registered on the phone) and the fields exposed (name and type), which distinguishes it from file-listing siblings like device_ls and state siblings like device_status. The verb is implicit rather than stated (it presumably lists/returns accounts), which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus device_status, device_ls, or any other device-inspection tool, and no stated preconditions such as the device being unlocked or the required account permissions. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_install_adb_keyboardA
Install ADBKeyboard (not needed: the on-phone server types any Unicode; the office phone forbids APK installs).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| apk_path | Yes | Local path of ADBKeyboard.apk (github.com/senzhk/ADBKeyBoard). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does disclose that the action is 'outward-facing or destructive' and requires confirm=true, plus the environment restriction on APK installs. It omits the concrete side effects an agent would want — whether the IME is enabled/switched, whether root or reboot is involved, and how to revert — so disclosure is partial.
Agents need to know what a tool does to the 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 caveat front-loaded before the mechanics. The compressed parenthetical is dense but every clause carries decision-relevant information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter mutation with no output schema and no annotations, the description covers when to skip it and the confirm gate, but says nothing about post-install effects or verification. Adequate to decide whether to call, thin on what happens once you do.
Complex tools with many parameters or behaviors need more documentation. 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 documented in-schema (apk_path's local path and source repo, confirm's required-true semantics). The description adds no parameter detail beyond restating the confirm requirement, 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?
States a specific verb and resource: 'Install ADBKeyboard' is concrete and distinct from the device_* siblings like device_push or device_shell. The parenthetical adds scope-limiting context (it's usually redundant), which further sharpens 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?
Explicitly says when NOT to use it ('not needed: the on-phone server types any Unicode') and flags a policy blocker ('the office phone forbids APK installs'), which is exactly the kind of exclusion that prevents wasted calls. It stops short of naming the preferred sibling (e.g. ui_type) to use instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_lsB
List files in a phone directory.
| Name | Required | Description | Default |
|---|---|---|---|
| remote_dir | No | Directory on the phone. | /sdcard/Download |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing operation but says nothing about permissions, hidden files, recursion depth, metadata returned, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It is appropriately sized for a simple one-parameter listing tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple optional-parameter listing tool with no output schema, the description is minimally adequate. However, it leaves out usage context and return behavior, which an agent might need to call it confidently.
Complex tools with many parameters or behaviors need more documentation. 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 single remote_dir parameter is already fully documented with a default. The description adds only the phrase 'phone directory,' which does not meaningfully extend the parameter 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 states a specific verb and resource: 'List files in a phone directory.' This is clear enough to distinguish it from most siblings, especially device_pull/device_push/device_rm, but it does not explicitly contrast with drive_list or other listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use device_ls versus alternatives such as drive_list, nor any prerequisites or exclusions. The agent must infer usage entirely 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.
device_pullA
Copy a file from the phone to this computer (default: the gwagent downloads dir).
| Name | Required | Description | Default |
|---|---|---|---|
| local_path | No | Destination on this computer. | |
| remote_path | Yes | File on the phone, e.g. /sdcard/Download/report.pdf. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'Copy' rather than move, which usefully implies the source remains, but it does not disclose overwrite behavior for local_path, permission needs, or what happens if the destination directory is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted text. It puts the core action and direction first and appends the useful default destination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 file-transfer tool with no output schema and no annotations, the description covers the source, destination, and default destination adequately. It could be more complete on overwrite and error behavior, but the remaining gaps are modest for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline would be 3. The description adds meaningful information beyond the schema by specifying the default local destination when local_path is omitted, which is not stated in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (copy a file) and makes the direction explicit: from the phone to this computer. This distinguishes it from the sibling device_push by direction, though it does not name that 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?
Usage is implied by the transfer direction and the default download directory, but there is no explicit guidance on when to choose device_pull versus device_push or other device file tools. It also omits prerequisites such as whether the remote file must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_pushB
Copy a file from this computer to the phone (default: the phone's Download folder).
| Name | Required | Description | Default |
|---|---|---|---|
| local_path | Yes | File on this computer. | |
| remote_path | No | Destination on the phone; a path ending in '/' keeps the file name. | /sdcard/Download/ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It gives the default destination folder but says nothing about overwrite behavior when the file already exists, whether missing directories are created, permission/root requirements, or what errors look like — critical gaps for a file-writing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the direction front-loaded and the destination default in parentheses. Efficient, though the parenthetical duplicates the schema default rather than earning 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?
A two-parameter, one-required tool with no output schema and no annotations. The description covers the direction and destination adequately, but with no annotations the missing failure/overwrite semantics leave the agent without enough to predict outcomes.
Complex tools with many parameters or behaviors need more documentation. 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 already documented, including the trailing-slash rule and the /sdcard/Download/ default, which the description merely restates. Baseline 3 applies since the description adds no 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?
States a specific verb (copy) plus both endpoints (this computer to the phone), which implicitly distinguishes it from the reverse-direction sibling device_pull. It never names device_pull explicitly, 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 phrase 'from this computer to the phone' implies when to use it over device_pull, but there are no explicit exclusions, no prerequisites, and no named alternative. Usage is implied rather than guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_rmA
Delete a file from the phone's shared storage (/sdcard only).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| remote_path | Yes | File on the phone under /sdcard. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden. It usefully discloses that this is destructive and gated behind confirm=true, plus a path restriction, but says nothing about irreversibility (no trash/undo), permission requirements, whether directories are rejected, or what happens on failure.
Agents need to know what a tool does to the 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 operation and scope come first, the confirm precondition second. Every clause earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no output schema, the description covers the essentials: resource, location restriction, and the safety gate. The main omission is an explicit statement that deletion is permanent/not recoverable, which matters for a destructive operation with zero annotation 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 description coverage is 100%, so both parameters are already documented in the schema, including the confirm=true requirement and the /sdcard restriction on remote_path. The description only restates the confirm rule, adding no format examples or edge-case guidance beyond structured fields; 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?
States a specific verb (delete), resource (a file), and location (phone's shared storage, /sdcard only), which clearly separates it from sibling device_* tools like device_pull/device_push and from drive_delete_forever. It does not explicitly name a sibling alternative, but the scope constraint does most of the disambiguating work.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 '/sdcard only' scoping and the 'Requires confirm=true' prerequisite give implicit guidance on when this tool applies. However, there is no explicit statement of when NOT to use it, nor a pointer to sibling alternatives (e.g. drive_delete_forever for cloud files, device_shell for paths outside /sdcard).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_shellA
Run a raw adb shell command on the phone (escape hatch for anything not covered).
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command line executed on the device. | |
| timeout | No | Seconds before giving up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It says 'raw adb shell' and 'escape hatch,' which hints at arbitrary device execution, but it does not disclose privilege level, destructive potential, side effects, or output behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. The parenthetical 'escape hatch for anything not covered' adds useful routing context 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?
For an unannotated arbitrary shell executor, the description is too thin on safety and execution context. It does not explain privileges, whether commands can modify or destroy device state, or how output is returned, and there is no output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. 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 `command` and `timeout` are documented in the schema. The description adds no parameter-level meaning beyond what the schema already provides, 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 states a specific verb and resource: run a raw `adb shell` command on the phone. The phrase 'escape hatch for anything not covered' clearly distinguishes it from the many dedicated sibling tools such as `ui_tap`, `device_pull`, and `device_status`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear fallback condition: use this when no dedicated tool covers the task. It does not explicitly warn against bypassing dedicated tools or list representative alternatives, but the selection rule is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_sleepA
Turn the screen off (re-locks the phone). Use when done, to save CPU on the host.
| Name | Required | Description | Default |
|---|---|---|---|
| home | No | Go to the home screen first. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the screen-off effect, the re-lock side effect, and the CPU-saving rationale, but it omits whether the device must already be unlocked, what happens if it is already locked, and whether any confirmation is 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?
Two short sentences, zero wasted words, and the core effect is front-loaded before the usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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-optional-parameter device action with no output schema, the description covers purpose, side effect, and timing. The schema handles the parameter detail; only minor behavioral edge cases remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single home parameter is fully described in the schema. The description does not add any parameter 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 and effect: turning the screen off and re-locking the phone. This clearly distinguishes it from the sibling device_unlock action and tells an agent exactly what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: use when done, to save CPU on the host. It does not name alternatives or exclusions, but the timing guidance is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_statusB
Phone status: adb state, Android version, screen on/locked, foreground app, app versions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the returned signal set, which implies a passive read, but it says nothing about latency, whether it requires a live adb connection, or what happens if the device is offline or locked.
Agents need to know what a tool does to the 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 colon-list with zero filler; every item earns its place as a reported field. It is slightly telegraphic, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description partially compensates by listing the fields it reports, but it omits the response format (flat text vs structured object) and the failure modes for a disconnected or locked device. Adequate but with a clear gap for a diagnostic 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 tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 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 names the resource ('Phone status') and then enumerates the exact facets reported: adb state, Android version, screen on/locked, foreground app, app versions. That is specific enough to separate it from siblings like ui_dump (hierarchy) or device_ls (files), though the verb is implied 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?
There is no guidance on when to call this versus alternatives such as ui_dump, ui_find, device_accounts or ui_screenshot, and no preconditions (e.g., whether adb must be connected) are mentioned. The agent must infer usage from the field list alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_unlockA
Wake the screen and unlock it with the configured PIN (every UI op does this automatically).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description still discloses the core behavior: it wakes the screen, unlocks with the configured PIN, and is automatically performed by UI operations. It does not cover failure modes such as a missing PIN or whether it is safe to call when already unlocked, but the core behavior is clear for a zero-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The automatic UI behavior note is compactly placed in parentheses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero-parameter device action with no output schema, the description provides enough context to select and invoke it correctly. Minor gaps remain around return values and edge cases such as no configured PIN, but these are not central to invoking 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 tool has zero parameters, so the baseline is 4. The description correctly indicates that the PIN is configured rather than passed as an input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and resource: waking the screen and unlocking it with the configured PIN. It also distinguishes this tool from the ui_* siblings by stating that every UI operation performs this automatically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(every UI op does this automatically)' gives useful context that this tool is usually unnecessary before UI interactions, implicitly reserving it for explicit unlock scenarios. However, it does not explicitly state when the tool must be used instead of relying on automatic behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_cdA
Enter a folder: by path relative to the current location ("A/B/C", ".." = parent, leading "/" = from My Drive) or by index from the last list. Returns the folder's items.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Folder path (exact folder names separated by "/"). | |
| index | No | Index of a folder in the last drive.list / drive.search result. | |
| limit | No | Max items to list from the new folder (0 = don't list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies stateful navigation by saying "Enter a folder" and mentions returning the folder's items, but it does not disclose whether the current location persists, error conditions, permission requirements, or how the limit parameter affects returned items beyond what the schema already states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted wording. The parenthetical path rules are dense but each clause contributes useful navigation semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-optional-parameter navigation tool with no annotations and no output schema, the description covers the core path/index modes and says it returns the folder's items. However, "items" is vague without an output schema, and the stateful effect on the current location is only implied rather than explicitly stated.
Complex tools with many parameters or behaviors need more documentation. 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 baseline is 3. The description adds meaningful semantics beyond the schema by explaining path resolution: relative to current location, ".." means parent, and leading "/" means from My Drive; it also clarifies that index refers to the last 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 states a specific verb and resource: "Enter a folder" via path or index and returns the folder's items. It is clear what the tool does, but it does not explicitly name sibling alternatives such as drive_up or drive_list to sharpen 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?
It explains how to specify a path, including relative paths, ".." for parent, leading "/" for My Drive, and index from the last list. However, it does not explicitly say when to use this tool versus drive_up, drive_list, drive_open, or drive_location, nor does it provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_copyC
Make a copy of a file ("Make a copy"); the copy is named "Copy of ".
Drive is left in the destination folder, where the copy is checked.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| occurrence | No | Which item when several share the name (0 = first). | |
| destination | No | Folder for the copy, from the My Drive root ("A/B"; "/" = My Drive); default: the item's own folder. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full load. It does disclose two genuine behavioral traits — the automatic naming ("Copy of <name>") and the resulting navigation state ("Drive is left in the destination folder, where the copy is checked") — but omits whether sharing/permissions are inherited by the copy, whether folders can be copied recursively, and what happens on name collisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the action, which is good. However, the quoted UI label "Make a copy" is redundant noise and the second sentence ("Drive is left in the destination folder, where the copy is checked") is grammatically garbled, forcing the agent to guess at its 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?
This is a mutating tool with zero annotations and no output schema, so the description should state prerequisites, permission/sharing inheritance, and collision behavior — none of which appear. Post-operation state is mentioned, but an agent still cannot predict side effects on the duplicated item's sharing or size limits.
Complex tools with many parameters or behaviors need more documentation. 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 five parameters (name, path, index, occurrence, destination) are already documented, including destination defaults. The description adds nothing parameter-specific beyond the naming outcome, 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?
States a specific verb and resource ("Make a copy of a file") and adds the resulting name convention ("Copy of <name>"), so the agent knows exactly what operation this performs. It never contrasts itself with nearby siblings such as drive_move, drive_rename, or drive_upload, though none of those overlap enough to cause real confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: nothing says to locate the item first via drive.list/drive.search (only the schema's 'index' description implies it), nothing says copies of folders are or aren't supported, and nothing excludes alternatives. The only contextual hint is the post-operation sentence, which describes state rather than selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_create_docA
Create a new Google Docs/Sheets/Slides file (Create new > Google Docs...).
Drive hands the creation to the Docs/Sheets/Slides app: when that app is not installed
(as on this phone) Drive opens the Play Store instead and this op fails with
app_missing without creating anything.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | docs, sheets or slides. | docs |
| path | No | Folder to create it in (default: the current location). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it delivers a genuinely non-obvious behavioral fact: creation is delegated to the Docs/Sheets/Slides app, and on a device lacking that app it redirects to the Play Store and fails with `app_missing` while creating nothing. That failure-without-side-effect detail is exactly what an agent needs. It stops short of stating permissions, whether the new file opens, or what is returned, so it is not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and the second sentence is long but earns its space by explaining a real failure mode. The '(Create new > Google Docs...)' UI-menu aside is marginal padding but small.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations exist, so the description must fully cover behavior; it explains the failure path well but says nothing about the success path — whether the new file opens, what identifier is returned, or which folder it inherits by default. Those are material gaps for a creation 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% and both parameters are self-documenting, so the schema does the heavy lifting; the description only echoes the docs/sheets/slides enum already in `kind`. It adds no clarification about `path` defaulting or whether the parent folder must already exist.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Create a new Google Docs/Sheets/Slides file') and names the exact UI action it mirrors. This is clearly distinct from sibling mutations like drive_mkdir (folder), drive_upload, or drive_copy, which an agent can rule out from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and by the enumerated kinds, but the description never states when to prefer this over drive_upload, drive_copy, or drive_mkdir, nor any prerequisites. It spends its second sentence on a failure mode rather than on routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_delete_foreverA
Permanently delete an item that is in the Trash (cannot be undone).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact name of the item in the Trash. | |
| index | No | Index from the last listing of the Trash (drive.open section=trash). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does disclose the two traits that matter most: the action is irreversible ('cannot be undone') and it is gated behind confirm=true as an outward-facing/destructive action. It does not describe failure modes (missing name, stale index) or what the caller sees afterwards.
Agents need to know what a tool does to the 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, irreversibility and the safety gate front-loaded, zero filler. Nothing could be cut without losing a required warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param destructive tool with no annotations and no output schema, the description supplies the essentials: it is permanent, it only applies to Trash contents, and confirm is mandatory. Minor gaps remain around error behavior and item identification ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents name, index, and occurrence. The description only reinforces the confirm parameter's role ('Requires confirm=true'), adding no guidance on how name/index/occurrence combine to identify one item; 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?
States a specific verb and resource ('Permanently delete an item') and qualifies the scope ('that is in the Trash'), which separates it from drive_trash (move to trash) and drive_empty_trash (bulk). It never names those siblings explicitly, so the 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 precondition 'item that is in the Trash' plus the mandatory 'confirm=true' gate give clear context for when this tool applies. No alternative or exclusion is spelled out (e.g. use drive_trash to delete a non-trashed item, drive_restore to recover), so the agent has to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_downloadA
Download a file with Drive's "Download" (Google Docs/Sheets/Slides are exported by the app, e.g. a Google Doc as PDF) into the phone's Download folder, then copy it to this computer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location. | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: the location of the last listing. | |
| index | No | Index from the last drive.list / drive.search. | |
| timeout | No | Seconds to wait for the download. | |
| local_path | No | Destination file or directory on this computer (default: <out_dir>/drive/). | |
| occurrence | No | Which item when several share the name (0 = first). | |
| keep_on_phone | No | Keep the copy in the phone's /sdcard/Download. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does notable work: it discloses that Google Docs/Sheets/Slides are converted by the app (e.g. to PDF), that a copy is written into the phone's Download folder, and that the file is then copied to the computer. Unstated are overwrite behavior when local_path exists, required connectivity/auth, and what happens on timeout.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the resource and the two-step flow front-loaded; every clause carries information. It could be trimmed slightly but there is no padding or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, fully-optional-input tool with no output schema and no annotations, the description covers the important non-obvious behavior (export format conversion, phone-side copy). It does not mention what is returned (e.g. the local file path) or how name/path/index/occurrence interact, which would have closed the remaining 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 all seven parameters are already documented with defaults; the description adds only the export-conversion nuance, which touches the format of what is downloaded but not any individual parameter. 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+resource (download a Drive file) and, unusually, the full mechanism: Drive's own Download action, then a copy to the computer. That two-stage behavior implicitly separates it from device_pull or drive_read_text, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated — an agent can infer this is the tool for getting a Drive file onto the local machine, but there is no explicit when-to-use, no comparison to device_pull/drive_open/drive_read_text, and no note on prerequisites such as the file needing to be visible from the current Drive location.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_empty_trashA
Permanently delete everything in the Trash ("Empty trash"; cannot be undone).
Give only_if_all_match or all=true (invalid_argument otherwise, nothing touched): the Trash can hold items the user trashed by hand, so emptying it unconditionally must be explicit.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Empty the whole Trash whatever it holds (needed when only_if_all_match is not given). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| only_if_all_match | No | Safety guard: refuse (invalid_argument, nothing deleted) unless the name of every item in the Trash contains this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden and does it well: it declares permanence, irreversibility, the confirm=true requirement, and the precise failure mode (invalid_argument with nothing deleted). It even explains that the Trash may hold items trashed by hand, which is why an unconditional empty must be explicit. Permission requirements and the success response are not covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded: the destructive outcome and its irreversibility come first, then the guard parameters, then confirm. The sentence justifying why unconditional emptying must be explicit is slightly explanatory but earns its place by motivating the guard.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter destructive tool with no annotations and no output schema, the definition covers what is destroyed, the safety guards, the confirm requirement, and the failure behavior. Only the success result (e.g. how many items were removed) and any permission prerequisites are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real value beyond the per-parameter text by spelling out the interaction between only_if_all_match and all, including that omitting both yields invalid_argument. That cross-parameter constraint is not visible in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (permanently delete) with an explicit scope (everything in the Trash), which distinguishes it from sibling single-item tools such as drive_delete_forever and from drive_trash (which only moves items to trash). The 'cannot be undone' qualifier reinforces the irreversible nature up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 that it must supply either only_if_all_match or all=true, and that the call otherwise fails with invalid_argument and touches nothing — that is actionable conditional guidance. It also explains why the unconditional path must be deliberate. It stops short of naming sibling alternatives like drive_delete_forever for single-item deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_infoA
Details and activity of an item ('View information'): type, size, location, created, modified (by whom), sharing summary, recent activity.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location. | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: the location of the last listing. | |
| index | No | Index from the last drive.list / drive.search. | |
| occurrence | No | Which item when several share the name (0 = first). | |
| max_activity | No | Max activity entries to read. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the return payload (including who modified the item and a recent-activity list), which is real value given there is no output schema. However, it never states that the operation is read-only/non-mutating, whether it requires permissions, or how activity entries are bounded.
Agents need to know what a tool does to the 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 dense sentence with the resource front-loaded and no filler. The quoted UI label ('View information') is a marginally useful anchor for agents driving a UI, but the rest is pure substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 inspection tool with full schema coverage and no output schema, the enumerated return fields make it complete enough to call correctly and to know what comes back. The missing piece is any note on the absence of side effects and how the item is resolved when all identification parameters are omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (name, path, index, occurrence, max_activity) are already documented, which sets the baseline at 3. The description adds only an implicit link between 'recent activity' and max_activity and does not explain how the identification parameters interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 and verb: retrieve details and activity for a single item, enumerating what is returned (type, size, location, created, modified by whom, sharing summary, activity). That clearly separates it from list-oriented siblings like drive_list and drive_search, though those siblings are never named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the tool for inspecting one item. There is no statement about when to prefer it over drive_sharing, drive_view, drive_read_text, or drive_storage, nor any prerequisite about needing a prior listing to resolve the item.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_listA
List the items of the current Drive location (folder, section or search results).
Scrolls and de-duplicates; switches grid view to list view (richer info). Indexes are usable by drive.cd / drive.info / drive.download / drive.read_text.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Optional folder path to list instead ("A/B"; leading "/" = from My Drive). | |
| limit | No | Max items to return. | |
| start | No | Skip this many items first (paging). | |
| section | No | Optional section to list instead (files, shared, starred, recent, trash...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description usefully discloses non-obvious behavior: it scrolls and de-duplicates, switches grid view to list view, and produces indexes usable by other drive tools. It does not describe permissions, rate limits, or exact return structure, but the core behavioral traits for a listing operation are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by concise behavioral notes and downstream index usage. Every sentence contributes useful information without repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter listing tool with full schema descriptions but no annotations or output schema, the description covers purpose, paging-related behavior, de-duplication, view switching, and index usability. It leaves some gaps around explicit sibling selection and detailed return values, but is otherwise complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines path, limit, start, and section in detail. The description adds little parameter-specific semantics beyond implying folder/section alternatives and index usability, 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 states a specific verb and resource: 'List the items of the current Drive location (folder, section or search results).' It clearly scopes the tool to listing Drive contents, though it does not explicitly differentiate itself from nearby siblings such as drive_search or drive_view.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'current Drive location' and the optional path/section overrides, but the description gives no explicit when-to-use guidance versus alternatives like drive_search. It does mention that resulting indexes are usable by drive.cd, drive.info, drive.download, and drive.read_text, which helps orient the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_locationB
Where Drive is now: screen kind, title, sort order, view mode and remembered folder path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it partially discharges it by enumerating the state fields returned and implying a passive state query. It never explicitly states the operation is read-only/side-effect-free, nor how fresh or scoped the snapshot is, which matters for a state-inspection tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact clause with the key information front-loaded ('Where Drive is now') followed by the concrete fields. No waste, though it is a fragment rather than a complete sentence and could have carried one more routing hint at no cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must explain both behavior and returns; it lists several return fields but not exhaustively (no indication of structure, extra fields, or interaction with drive_cd/drive_view). Adequate but with clear gaps for an agent deciding whether to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The listed return fields give useful orientation even though params add nothing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this reports the current Drive UI state and enumerates the reported fields (screen kind, title, sort order, view mode, folder path). However, it is a noun-phrase label rather than a verb+resource statement, and it never distinguishes itself from nearby siblings such as drive_info, drive_view, or drive_list, so an agent cannot tell exactly what this adds over those.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus drive_info, drive_view, drive_cd, or drive_list, and no preconditions or exclusions. The agent must infer usage context entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_mkdirB
Create a new folder in the current location (or in path).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new folder. | |
| path | No | Parent folder ("A/B" relative, "/A/B" from My Drive, "/" = My Drive root); default: the current location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden yet only says a folder is created. It is silent on what happens if the name already exists, whether this is idempotent, whether parent paths must exist, and on permission/error behaviour for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and the location qualifier immediately after; nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter create operation with a fully documented schema and no output schema, the description covers enough to call it correctly. The main missing piece is collision/overwrite semantics, which is a modest gap for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both `name` and `path` documented including the relative/absolute path syntax and defaults. The description only restates the `path` fallback, adding nothing 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?
States a specific verb and resource ("Create a new folder") plus the default location, which is unambiguous. It does not explicitly distinguish itself from near-neighbours like drive_upload_folder or drive_create_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?
The parenthetical "(or in ``path``)" and "current location" imply usage in the context of the drive_cd/drive_location navigation model, but there is no explicit when-to-use, when-not-to-use, or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_moveB
Move a file or folder to another folder of My Drive.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| occurrence | No | Which item when several share the name (0 = first). | |
| destination | Yes | Destination folder path from the My Drive root ("A/B"; "" or "/" = My Drive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It identifies the operation as a move, but does not disclose side effects such as removal from the source location, destination requirements, conflict/overwrite behavior, permission constraints, or whether sharing settings are preserved.
Agents need to know what a tool does to the world 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 immediately communicates the operation and destination scope without 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 5-parameter mutation tool with no annotations and no output schema, the description is too thin. It does not explain how source items are resolved across name, path, index, and occurrence, nor does it cover destination validation or error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the input schema. The description adds no parameter-specific meaning beyond the schema, 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 verb and resource: 'Move a file or folder.' It also clarifies the destination scope as 'another folder of My Drive.' In the sibling set, this clearly differs from drive_copy, drive_rename, and drive_trash, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for relocating items within My Drive, but it gives no explicit when-to-use guidance, prerequisites, or alternatives such as drive_copy when the original should remain. Usage is inferable but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_offlineB
Make a file available offline on the phone (enable=true) or remove offline access.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| enable | No | True = make available offline, false = remove offline access. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It notes the effect happens 'on the phone' and that enable=false reverses the state, but says nothing about device connectivity requirements, storage cost, what happens to an already-offline file, or what the call returns.
Agents need to know what a tool does to the 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 tight sentence with the action front-loaded and the mode toggle in a parenthetical. No wasted clauses, though the parenthetical breaks the flow slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 five parameters and none required, no annotations, and no output schema, the description should clarify how an item is identified (by name+path, or by index from a prior listing). It leaves that entirely unresolved, so an agent cannot tell a valid invocation from an invalid one.
Complex tools with many parameters or behaviors need more documentation. 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 only restates the enable flag that the schema already documents and adds nothing about how name, path, index, and occurrence combine to identify the target.
Input schemas describe structure but not intent. Descriptions should explain 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 concrete verb and resource: toggling a file's availability for offline use on the phone, with the enable flag spelled out for both directions. It does not distinguish itself from nearby siblings such as drive_download or drive_star, which also touch a file's state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied — the description implies 'use this when you want a file cached for offline access' but never says when to prefer it over drive_download or drive_star, nor any prerequisites (device connected, file exists).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_openC
Open a Drive section and list its first items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to list (0 = just open). | |
| section | No | home (Suggested), files (My Drive), shared (Shared with me), starred, recent, offline, trash, uploads, workspaces, spam, computers (if the app shows it). | files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose that opening a section likely changes the current Drive location (a state mutation), nor whether this is a UI-driving action versus a query, nor any permission or pagination behavior. Only 'first items' hints at truncation.
Agents need to know what a tool does to the 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. It is appropriately sized for its content, though the brevity reflects missing information rather than deliberate compression.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description must explain return shape, state effects, and interaction with drive_list/drive_cd — it explains none of these. An agent cannot predict whether calling it changes subsequent drive_list results or whether items are returned in an output payload or rendered in the UI.
Complex tools with many parameters or behaviors need more documentation. 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 well documented, including the section enumeration and the limit=0 special case. The description adds no parameter meaning beyond that, so 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?
States a concrete verb pair and resource: 'Open a Drive section and list its first items.' An agent can tell this is a navigation-plus-preview operation, though it is not explicitly distinguished from drive_list or drive_cd, which read similarly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 and no mention of alternatives such as drive_list (list current contents) or drive_cd (navigate without listing). Given the dense Drive sibling family, the agent gets no routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_read_textA
Read the text of a file (PDF pages, document, slides, sheets, plain text).
'download' downloads/exports the file and extracts its text on this computer (nothing is left on the phone); 'viewer' opens it in Drive's viewer and reads the text it exposes; 'auto' tries download, then the viewer.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location. | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: the location of the last listing. | |
| index | No | Index from the last drive.list / drive.search. | |
| method | No | auto, download or viewer. | auto |
| max_chars | No | Truncate the returned text to this many characters. | |
| max_pages | No | Max pages/slides/sheets to read. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose real traits: 'download' extracts text on this computer and leaves nothing on the phone, 'viewer' reads only what Drive exposes, and 'auto' falls back download→viewer. It omits permission/auth requirements, failure behavior when no text is extractable, and truncation semantics, leaving meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, followed by a compact explanation of the method options. Every sentence earns its place, with only minor redundancy in the parenthetical file-type list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should also convey what comes back (a text string, truncation via max_chars/max_pages, behavior when text cannot be extracted). It covers method selection well but says nothing about return shape or failure modes, leaving it only adequate for a 7-parameter read 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 baseline is 3, but the description adds genuine meaning beyond the schema for the method enum: the schema only lists 'auto, download or viewer' while the description explains what each does and the fallback order. Other parameters (name, path, index, max_chars, max_pages) rely on their schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (text of a file), and enumerates the file types it handles (PDF pages, document, slides, sheets, plain text). It does not explicitly distinguish itself from nearby siblings like drive_download or drive_view, 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?
The description gives explicit guidance for choosing the 'method' value (download vs viewer vs auto), which is useful. However it never says when to call this tool instead of drive_download or drive_view, so tool-level usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_refreshA
Pull-to-refresh the current Drive list (re-sync from the server) and list it again.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to return (0 = don't list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral burden. It discloses the key trait that this re-syncs from the server (a network round-trip) and re-lists, and the limit param's '0 = don't list' adds a useful side-effect toggle. It does not state that it is a non-destructive read or describe failure behavior when offline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core action front-loaded and no wasted words. Slightly more could be said to contrast with drive_list, but it is tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, no-output-schema refresh tool, the description is essentially complete: it explains what happens (server re-sync) and the optional listing side effect. Nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the limit parameter and its '0 = don't list' semantics are already documented in the schema. The description adds no parameter detail beyond that, which is the expected baseline when the schema fully documents the single 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?
States a specific action (re-sync from the server) on a specific resource (the current Drive list) and notes it lists again afterward. It is distinguishable from drive_list, though the 'and list it again' clause partly blurs the boundary rather than cleanly contrasting 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 word 'current' implies it operates on the active folder context and is used to refresh an already-open list, which hints at when to use it. However, it does not explicitly tell the agent to prefer drive_list for a fresh navigation versus drive_refresh for re-syncing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_renameC
Rename a file or folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| new_name | Yes | The new name (give the extension too for uploaded files, e.g. "b.txt"). | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It only implies a mutation but does not disclose what happens on name conflicts, whether the operation is reversible, what permissions are required, or how duplicates are handled (despite the occurrence parameter). This is a significant gap for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with zero wasted words. It is appropriately concise, though its extreme brevity contributes to gaps in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 (5 parameters, 1 required, mutation operation, no annotations, no output schema), the description is incomplete. It lacks any information about side effects, error cases, or the occurrence parameter's role, leaving the agent under-informed for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are fully documented in the input schema. The description adds no additional meaning beyond the schema, which is the expected baseline when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 ('Rename') and resource ('a file or folder'), making the purpose immediately clear. However, it does not differentiate from sibling tools such as drive_move or drive_copy, which could also alter names or locations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 (e.g., drive_move for moving items, drive_copy for duplicating), nor are any preconditions or exclusions mentioned. The agent is left to infer usage context entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_restoreA
Restore an item from the Trash to its original folder.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact name of the item in the Trash. | |
| index | No | Index from the last listing of the Trash (drive.open section=trash). | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It states the state transition (Trash to original folder), but does not disclose permission requirements, what happens if the original folder no longer exists, conflict behavior for duplicate names, or whether the restore is reversible. This is minimal disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It states the action and source/destination clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 fully documents the three optional selectors, so an agent can construct calls. However, with no annotations and no output schema, edge cases such as missing original folders or failures remain undocumented, leaving the definition only minimally complete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-level guidance beyond the schema, which is the expected baseline when 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 uses a specific verb ('Restore') and resource ('item from the Trash to its original folder'), making the operation clear. The phrase 'from the Trash' implicitly distinguishes it from sibling tools like drive_trash, drive_delete_forever, and drive_empty_trash.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 referring to items in the Trash, but it does not explicitly state when to choose it over alternatives such as drive_delete_forever or drive_empty_trash. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_searchB
Search Drive (file names and content) and return the matching items, optionally filtered by type, owner and modification date.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Only items of this type: folder, document, spreadsheet, presentation, pdf, image, video, audio, drawing, form, archive, site, shortcut. | |
| limit | No | Max items to return. | |
| owner | No | Only items owned by "me" or by this e-mail address. | |
| query | No | Search text (any Unicode, e.g. accented letters); may be empty when a filter is given. | |
| starred | No | True = only starred items. | |
| locations | No | Also read each result's folder ("location", from its details; ~3 s per item). | |
| modified_after | No | Only items modified after this day (YYYY-MM-DD). | |
| modified_before | No | Only items modified before this day (YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden; it does convey that this is a non-mutating retrieval operation with optional filters. It stays silent on result ordering, pagination/truncation behavior under the default limit of 30, and the notable cost implication of the locations parameter — that cost is only in the schema, not 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?
A single front-loaded sentence that leads with the search scope and then qualifies the filters — no filler. It is arguably a touch thin for an 8-parameter tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 optional parameters, no annotations, and no output schema, the description covers purpose and filter intent but not what a result item looks like or how empty queries behave. The rich schema compensates on parameters, but the absence of annotations means more behavioral disclosure would have been warranted.
Complex tools with many parameters or behaviors need more documentation. 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 of the 8 parameters is already documented in structured data; baseline 3 applies. The description echoes three of them (type, owner, modification date) but adds no syntax, defaults, or interaction guidance (e.g., empty query combined with a filter) 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?
States a specific verb and resource ("Search Drive (file names and content)") plus the return shape and the filter axes. An agent can distinguish it from drive_list or drive_location on intent, though the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb "search" and the note that results may be "optionally filtered" — so an agent infers this is the query-by-text tool rather than the browse tool. But there is no explicit when-to-use/when-not statement and no pointer to drive_list or drive_location for enumeration versus search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_set_roleA
Change the role of a person who already has access to a file or folder (Manage access).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| role | Yes | viewer, commenter or editor (commenter is only offered for files). | |
| Yes | E-mail address of the person (as listed by drive.sharing). | ||
| index | No | Index from the last drive.list / drive.search. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description does carry useful weight by flagging that the action is outward-facing/destructive and gated behind confirm=true. However, it says nothing about required caller privileges (owner vs editor), whether the previous role is recoverable, or any failure modes, which is a notable gap for an unannotated mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action and the confirm gate front-loaded. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter destructive tool with no annotations and no output schema, the description covers the core semantics and the confirmation gate, but leaves permission requirements, reversibility, and result behavior undocumented. Adequate but with 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 every parameter, including the role enum and the confirm gate, is already documented in the schema. The description only restates the confirm requirement, adding no syntax or edge-case meaning beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain 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 ('change the role') and resource ('a person who already has access to a file or folder'), which cleanly separates it from drive_share (granting access) and drive_unshare (revoking). It stops short of naming those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'who already has access' is a real precondition that tells the agent this is not the tool for granting new access, and the confirm=true requirement is stated up front. No explicit alternative tool is named for the grant-access case, 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.
drive_sharingA
Read an item's sharing (changes nothing): people with access (name, email, role), general access ('Restricted'...) and the item's link and file id.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| copy_link | No | Also read the link ("Copy link"; it ends up in the phone's clipboard). | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden; it does disclose read-only semantics ('changes nothing') and the returned data shape, which is real value. It omits that the copy_link parameter (default true) has a side effect on the device clipboard, and says nothing about what permissions are needed to read sharing settings or what happens when the item is not shared.
Agents need to know what a tool does to the 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 that opens with the action and the read-only guarantee before listing return contents. No filler; only minor awkwardness in the parenthetical punctuation and the trailing 'file id' enumeration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because there is no output schema and no annotations, the description usefully spells out the returned fields, which is the main gap it needed to close for a 5-parameter tool. What remains missing is item-identification behavior and the clipboard side effect of the default copy_link, so it falls just short of 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 five parameters (name, path, index, copy_link, occurrence) are already documented, establishing the baseline of 3. The description adds nothing about how an item is located — the name/path/index/occurrence resolution strategy is left entirely to 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?
States a specific verb and resource ('Read an item's sharing') and enumerates exactly what is returned: people with access (name, email, role), general access, link, and file id. The parenthetical '(changes nothing)' implicitly separates it from the writable siblings drive_share / drive_set_role / drive_unshare, but those siblings are never named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The read-only framing ('changes nothing') implies this is the inspection tool rather than the grant/revoke tools, which is useful. However, it never explicitly says when to use this versus drive_share, drive_set_role, drive_share_link, or drive_info, so the agent must infer the routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_sortA
Change the sort order of the current list (Drive remembers it per view).
| Name | Required | Description | Default |
|---|---|---|---|
| by | No | Sort field as shown by Drive: Name, Date modified, Date modified by me, Date opened by me (Shared with me also offers Date shared; search: Most relevant). | Name |
| reverse | No | False = the field's natural order (A to Z / New to old), true = the opposite. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that Drive remembers the sort per view, which is real behavioral context, but it doesn't state prerequisites (e.g., a list must be open) or whether the change is reversible.
Agents need to know what a tool does to the 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 wasted words. The parenthetical adds useful persistence context without bloating the description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple UI-state tool with rich parameter schema and no output schema, but it leaves out prerequisite context and any note about reversibility or what happens if no list is open. The description could do slightly more given there are no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are well documented in the schema. The description adds no additional meaning about 'by' or 'reverse', 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?
States a specific verb and resource: 'Change the sort order of the current list.' The scope 'current list' distinguishes it from drive_list or drive_search, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'current list' — it should be used while a list view is active. However, it gives no explicit when-not guidance or alternatives, such as using drive_search to filter rather than sort.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_starC
Add a file or folder to Starred.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and delivers almost none of it: no statement about reversibility (drive_unstar exists but is never referenced), idempotency when the item is already starred, error behavior on ambiguous names, or required permissions. For a mutation of Drive state this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. It is efficient, though bordering on under-specification given how little the sentence has to carry for a state-changing 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?
With four parameters, no annotations, and no output schema, the description should cover the discovery step that produces the index value and the reversible counterpart drive_unstar. Neither is present, leaving an agent without enough context to invoke it confidently in a multi-step flow.
Complex tools with many parameters or behaviors need more documentation. 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 (name, path, index, occurrence) documented in the schema itself, so the baseline of 3 applies. The description adds nothing beyond that, and notably does not explain how an item is identified when zero parameters are required or how name/path/index/occurrence interact.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Add a file or folder to Starred" names a specific verb (add to Starred) and resource (file/folder), so an agent can immediately distinguish it from siblings like drive_unstar, drive_move, or drive_share. It stops short of explicitly naming the inverse tool or the scoping rules, but the action itself 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 when-to-use or when-not-to-use guidance and no mention of prerequisites. Because all four parameters are optional and one of them (index) only makes sense after a prior drive.list / drive.search, the agent is left to infer the discovery workflow entirely on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_storageB
Drive storage used, and optionally the files using the most storage.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many of the largest files to list (0 = only the total). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a read-only operation but does not state whether shared drives or trash are included, what permissions are required, or what the return format contains.
Agents need to know what a tool does to the 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 wasted words. The core purpose and optional behavior are 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?
For a simple read-only tool with no required parameters, the description is minimally adequate. However, without an output schema it does not explain return values such as whether storage is broken down by file type, what units are used, or whether shared/trashed content is included.
Complex tools with many parameters or behaviors need more documentation. 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 limit parameter is already fully documented in the schema. The description echoes the optional largest-files behavior but adds no additional syntax, defaults, or edge-case semantics 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 clearly states a specific resource and operation: retrieving drive storage usage and optionally listing the largest files. It does not explicitly differentiate itself from similar drive tools such as drive_info or drive_list, 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?
It mentions the optional largest-files listing, but gives no guidance on when to use this tool instead of drive_info, drive_list, or other drive inspection tools. Usage is implied but not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_trashA
Move a file or folder to the Trash (restorable with drive.restore for 30 days).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it delivers key behavioral facts: the action is reversible via drive.restore within a 30-day window, and it is gated behind confirm=true. It does not disclose permission requirements or effects on shared/owned files, so it stops short of fully covering the mutation's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste; the primary action leads and the operational constraint follows. Nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive-but-recoverable mutation with no annotations and no output schema, the description supplies the two facts an agent most needs: reversibility window and the confirm gate. Remaining gaps (permissions, shared-item behavior) are minor and largely beyond scope.
Complex tools with many parameters or behaviors need more documentation. 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% across all 5 parameters, so the schema already documents name, path, index, occurrence, and confirm. The description only reinforces the confirm requirement, adding no syntax or format meaning beyond what the schema provides, 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 names a specific verb ("Move") and resource ("file or folder") and target ("the Trash"), and its parenthetical noting restorability implicitly separates it from siblings like drive_delete_forever and drive_empty_trash. An agent can distinguish it from permanent-delete tools without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a prerequisite ("Requires confirm=true") and hints at the restore flow by naming drive.restore, but it never explicitly says when to prefer this over drive_delete_forever or drive_empty_trash. Usage is implied rather than contrasted with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_unstarB
Remove a file or folder from Starred.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Exact item name in the current location (or in path). | |
| path | No | Folder holding the item ("/A/B" from My Drive, "A/B" relative); default: current. | |
| index | No | Index from the last drive.list / drive.search. | |
| occurrence | No | Which item when several share the name (0 = first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses almost nothing: it does not say the file itself is untouched (non-destructive), whether unstarring a non-starred item errors, or whether the operation is reversible. The critical 'unstar != delete' distinction is left implicit.
Agents need to know what a tool does to the 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. Brevity is appropriate, though it shades into under-specification rather than tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 taking four target-identification parameters, no annotations, and no output schema, the description is too thin. It says nothing about how to pick the right item via name vs. index vs. occurrence, or what confirmation the caller gets.
Complex tools with many parameters or behaviors need more documentation. 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 name/path/index/occurrence are already fully documented, including defaults and semantics. The description adds no additional guidance on how these interact when identifying the target item.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: removing an item from Starred. It is clearly the inverse of the sibling drive_star, though it never names that sibling or distinguishes unstaring from trashing/deleting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the name; the description gives no conditions for when to reach for this instead of drive_trash, drive_delete_forever, or drive_star. An agent must infer that this only affects the Starred tag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_upB
Go to the parent folder (or leave a section/search back to the main screen).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max items to list from the parent (0 = don't list). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden; it does disclose the dual mode (parent folder vs. escape to main screen), which is useful beyond the schema. It omits what happens at the root level (error? no-op?), whether navigation state or search context is cleared, and any permission/state implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The parenthetical second mode is slightly compressed and could read ambiguously, but overall it is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter navigation tool with full schema coverage and no output schema, the essentials are present. Missing edge-case behavior at the root of the hierarchy and the effect on search/section state leaves an agent guessing in exactly the situations this tool is meant for.
Complex tools with many parameters or behaviors need more documentation. 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 'limit' parameter is fully documented in the schema including the 0 = don't list sentinel. The description adds nothing about the parameter, 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?
States a specific navigation action ('Go to the parent folder') plus a second mode ('leave a section/search back to the main screen'), so an agent can tell this is a hierarchical back-navigation tool. It does not explicitly contrast itself with adjacent siblings like drive_cd or drive_open, leaving that distinction to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when it applies by naming two contexts (inside a folder, inside a section/search screen), which is more than nothing. But it never states when NOT to use it or names drive_cd/drive_menu as the alternative, so routing between the several navigation siblings is left ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_uploadA
Upload a file from this computer into a Drive folder (Create new > Upload).
The file is copied to the phone, picked in the system file picker, uploaded under
title into the folder, then the phone copy is removed. Waits until the new item shows
in the folder and the upload bar no longer reports progress.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Destination folder ("/A/B" from My Drive, "A/B" relative, "/" = My Drive root); default: the current location (My Drive or one of its folders). | |
| title | No | Name of the file in Drive (default: the local file name). | |
| timeout | No | Seconds to wait for the upload. | |
| local_path | Yes | File on this computer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the copy-to-phone, system-picker, upload, and delete-phone-copy lifecycle, plus the blocking semantics (waits until the item appears and the progress bar settles). It omits name-collision/overwrite behavior and permission or size constraints, which matter for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action and the resource, with the parenthetical UI path and the wait condition each earning their place. The mechanism sentence is slightly long but conveys information the agent cannot get from 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 no annotations, no output schema, and four fully-documented parameters, the description covers the important gap: that this is a blocking, multi-step operation with a temp-file side effect. Missing pieces are conflict handling when a file of the same title exists and what happens on timeout.
Complex tools with many parameters or behaviors need more documentation. 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 four parameters (including defaults for path and title) are already documented, which sets the baseline at 3. The description adds only a light chaining hint that the file lands "under title into the folder"; it adds nothing about local_path vs. the transient phone copy or about the timeout 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?
States a specific verb and resource ("Upload a file from this computer into a Drive folder") and even names the UI affordance it mirrors ("Create new > Upload"). It does not, however, distinguish itself from the very similar siblings drive_upload_files and drive_upload_folder, which is a real ambiguity given three near-identical 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?
Usage is implied by the phrasing "Upload a file from this computer" — i.e., use this when the source is a local path rather than an existing Drive item. There is no explicit when-not guidance or pointer to drive_upload_files/drive_upload_folder for multi-file or folder cases, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_upload_filesB
Upload several files from this computer into one Drive folder (one after the other).
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Destination folder ("/A/B" from My Drive, "A/B" relative, "/" = My Drive root); default: the current location (My Drive or one of its folders). | |
| timeout | No | Seconds to wait for each upload. | |
| local_paths | Yes | Files on this computer (each keeps its file name in Drive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. '(one after the other)' is a useful disclosure about sequential execution, but nothing is said about overwrite/name-collision behavior, what happens if one file fails mid-batch, permission requirements, or whether the operation is reversible — all critical for a write tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding. The plural scope and the destination framing are 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?
For a simple 3-parameter write tool with a fully documented schema and no output schema, the description is minimally adequate. However, with zero annotation coverage, the omission of failure/overwrite semantics leaves a real gap an agent would want before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so destination path semantics, per-file timeout, and the local_paths array are already fully documented. The description adds only the framing that uploads are sequential, which loosely ties to the per-upload timeout; nothing new about 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?
States a specific verb and resource ('Upload several files ... into one Drive folder') and the plural 'several' implicitly separates it from the single-file drive_upload and the directory-oriented drive_upload_folder. It never names those siblings, so the distinction is inferable 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?
The phrase 'several files ... into one Drive folder' implies the batch-upload context, and '(one after the other)' signals the sequential nature, but there is no explicit when-to-use vs drive_upload/drive_upload_folder guidance and no stated prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_upload_folderA
Upload a folder from this computer: creates a Drive folder and uploads its files and sub-folders into it (recursively; hidden files are skipped).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Name of the new Drive folder (default: the local folder's name). | |
| path | No | Drive folder to create it in ("/A/B" from My Drive, "A/B" relative, "/" = My Drive); default: the current location. | |
| timeout | No | Seconds to wait for each file's upload. | |
| local_dir | Yes | Folder on this computer. | |
| max_files | No | Refuse folders with more files than this (each upload takes ~10-15 s). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load; it does add real behavioral detail — recursion, hidden files skipped, and that a new Drive folder is created as a side effect. It omits partial-failure behavior, permission/auth requirements, and what the tool returns after a multi-file upload.
Agents need to know what a tool does to the 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 that front-loads the action and then qualifies it with the two behavioral facts that matter (recursive, hidden files skipped). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter operation with fully documented schema, the description covers the scope and the recursion/skip semantics well. The remaining gap is the absence of any indication of the result of a bulk upload (created folder reference, per-file failures), which matters for a tool that may upload dozens of files.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (name, path, timeout, local_dir, max_files) are already documented, including defaults. The description adds no parameter-level detail beyond confirming that the local folder's contents are what get uploaded; 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?
States a specific verb and resource (upload a folder from this computer) plus the concrete effect: creates a Drive folder and uploads files and sub-folders recursively. This implicitly separates it from drive_upload_files and drive_upload, but it never names those siblings, so the 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 phrase 'from this computer' and the folder-level scope imply this is for whole-directory transfers rather than single files, but the description gives no explicit when-to-use/when-not guidance and never points to the sibling tools for files or single uploads.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drive_viewA
Switch the current Drive list between list and grid view.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | list or grid. | list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly frames the action as a display-only view switch on the current Drive list, but it does not state whether the mode persists, applies per user or session, or whether any underlying data changes. For a low-complexity UI toggle this is minimum viable 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?
The description is a single efficient sentence with zero waste. The action and target are front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter tool with a fully described enum and no output schema, so the description need not explain return values. It states the operation clearly enough for invocation, though it could note whether the setting is persisted or scoped to the current view session.
Complex tools with many parameters or behaviors need more documentation. 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 mode parameter and its list/grid enum are already fully documented in the schema. The description reinforces the two modes but adds no extra semantics such as default behavior or persistence beyond what the schema provides. 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: 'Switch the current Drive list' between 'list and grid view.' It is clear enough to distinguish this as a view-mode toggle rather than a file-listing or navigation tool. It does not explicitly contrast itself with siblings such as drive_list or drive_menu, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'current Drive list' implies the tool is used when the user wants to change how the current Drive view is displayed. However, there is no explicit guidance about when to use this instead of alternatives, nor any exclusions. Usage is implied but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_archiveB
Archive conversations (remove them from the Inbox; they stay in All mail).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose the key non-destructive effect (remove from Inbox, stay in All Mail), but it does not state permissions, reversibility/undo behavior, or what happens when selecting multiple conversations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. The key action and its effect are stated immediately and clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is rich and documents all selection modes, but the description does not explain those modes, the prerequisite that 'all' requires query/folder, or reversibility. For a seven-parameter mutation tool with no annotations, this is adequate but leaves meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven selection parameters are already documented in the schema. The description adds no parameter-specific meaning beyond the schema, making the baseline 3 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 gives a specific verb and resource: 'Archive conversations.' The parenthetical clarifies the exact effect (removed from Inbox, retained in All Mail), which implicitly distinguishes archive from delete/trash. It does not name a sibling tool explicitly, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The effect implies that this is for decluttering without deleting, but the agent must infer that usage rather than being told it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_attachmentsC
List the attachments of a conversation (name, type, size, message index).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, yet it never mentions the significant side effects implied by the schema: the tool can leave the conversation open on screen (stay_open), silently change read state and restore it (keep_unread), and abort with not_found on an expect_subject mismatch. Calling it a plain 'list' understates that it drives the UI.
Agents need to know what a tool does to the 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 zero padding. It is efficient, though the terseness is part of why behavioral context is missing rather than a strength in itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations, no output schema, and UI-affecting side effects, one sentence is not enough. An agent would not learn from the description that this tool may open mail on screen, toggle unread state, or fail safely on subject mismatch.
Complex tools with many parameters or behaviors need more documentation. 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 fully documented in structured form and a baseline of 3 applies. The description adds only the return-field list and nothing about selection precedence among index, query, and folder.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the attachments of a conversation') and even names the returned fields (name, type, size, message index). It does not distinguish this from siblings like gmail_download_attachment or gmail_save_attachment_to_drive, so an agent must infer that this is the non-destructive inspection counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no named alternatives. Nothing tells the agent that this lists metadata only and that gmail_download_attachment or gmail_save_attachment_to_drive should be used to actually retrieve a file, nor that index/query/folder are alternative ways to select the target conversation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_backA
Close the open conversation (or dialog/full view) and return to the mail list.
| Name | Required | Description | Default |
|---|---|---|---|
| to_inbox | No | Also leave search results / other folders and go to the inbox. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core behavior—closing the current view and returning to the mail list—but does not mention edge cases such as what happens when nothing is open, whether unsaved state is affected, or whether the action is a no-op in some contexts.
Agents need to know what a tool does to the world before calling 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 zero wasted words. It states the action and result 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 navigation tool with one optional, fully documented parameter and no output schema, the description is sufficient to invoke it correctly. It could be stronger with edge-case or usage guidance, but it covers the essential behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the optional to_inbox parameter. The description adds no parameter-specific meaning beyond the schema, which makes the baseline score of 3 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 scope: close the open conversation, dialog, or full view and return to the mail list. It implicitly distinguishes itself from siblings like gmail_open and gmail_list by describing a back/navigation action rather than opening or listing mail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'open conversation' and 'return to the mail list', but there is no explicit guidance on when not to use it or which sibling to use instead. It lacks alternatives such as gmail_list or ui_global_action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_block_senderA
Block the sender of a message: their future mail goes to Spam (message menu > Block "sender").
Gmail blocks at once (no dialog); gmail.unblock_sender reverts it. Not offered for your own messages.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| message_index | No | Message of the thread (0 = oldest, numbering of gmail.read); default the last. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose key traits: the action is immediate with no dialog, it is reversible via unblock, it affects future inbound mail, and it is gated behind confirm=true. It stops short of saying what happens to the existing conversation or thread contents after blocking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The effect is front-loaded in the first clause, and the remaining sentences cover reversal, scope exclusion, and the confirm gate without filler. The parenthetical UI-menu path is slight overhead, though it usefully anchors the behavior to the visible Gmail 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 an 8-parameter, no-output-schema mutation tool, the description covers effect, reversibility, precondition, and scope limits, with the schema filling in target selection. Only the post-block state of the current conversation and failure modes are left implicit.
Complex tools with many parameters or behaviors need more documentation. 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 including index, query, folder, message_index, and expect_subject is already documented in the schema. The description only echoes the confirm=true requirement and adds no interpretation of target selection or index resolution beyond 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?
States a specific verb and object ('Block the sender of a message') plus the concrete effect ('their future mail goes to Spam'), so the outcome is unambiguous. It also draws a boundary against its reversal sibling by naming gmail.unblock_sender, and rules out self-addressed messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit precondition (confirm=true) and an explicit exclusion ('Not offered for your own messages'), plus names the undo path. It does not, however, distinguish itself from adjacent siblings like gmail.mute, gmail.spam, or gmail.report_phishing, which an agent could reasonably confuse with blocking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_cancel_scheduledA
Cancel a scheduled send: the message is not sent and becomes a draft again (see gmail.drafts).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.scheduled (default 0 when query is given). | |
| query | No | The query used with gmail.scheduled (searches 'in:scheduled <query>'). | |
| expect_subject | No | Safety check: the message's subject must contain this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key behavioral fact for a mutation: the message is not sent and reverts to a draft. It omits the index/query selection model, whether the cancel can be undone, and any auth or permission requirements, leaving real gaps for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The outcome (not sent, becomes draft) is the first thing stated, followed by the useful pointer to gmail.drafts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three params, no output schema, and no annotations, the description explains the essential effect but not how the index/query pair selects a message or what the agent gets back. Adequate for a simple cancel action but not fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with all three parameters documented in-schema including the default for index and the purpose of expect_subject. The description adds no further parameter detail, which is acceptable at full coverage but earns only 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?
Names a specific verb and resource ('Cancel a scheduled send') and states the resulting state ('becomes a draft again'), which distinguishes it from gmail_send and gmail_discard. It stops short of contrasting itself with gmail_scheduled by name, relying on a parenthetical reference instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the schema's references to 'Row index from gmail.scheduled' and the '(see gmail.drafts)' pointer. There is no explicit statement of when to reach for this versus gmail_scheduled (listing) or gmail_delete_draft (removal), so the agent must infer the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_compose_stateA
Describe the compose window currently open (mode, recipients, subject, body, attachments).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. "Describe" implies a non-mutating read and the field list tells the agent what comes back, which is valuable. It does not disclose failure behavior when no compose window exists or whether the call has any side effects, so gaps remain.
Agents need to know what a tool does to the 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, front-loaded with the verb and the target, with the parenthetical list doing useful work. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 zero-parameter, no-output-schema state-read tool, the description covers the important ground by listing the returned fields and the precondition that a compose window be open. Only the error/empty-state behavior is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The field enumeration adds context about what state is surfaced but is not a parameter concern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ("Describe") plus a specific resource ("the compose window currently open"), and it enumerates exactly what is reported: mode, recipients, subject, body, attachments. It is clear what the tool does, but it never names how it relates to siblings like gmail_draft or gmail_edit_draft, which also touch compose state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Currently open" implicitly tells the agent a compose window must exist first, which is a useful precondition. However, there is no explicit when-to-use guidance, no statement of what to do if no compose window is open, and no reference to an alternative tool for reading a saved draft instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_create_labelB
Create a new Gmail label (drawer -> Create label).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Label name. Use '/' for nesting as in Gmail ('Parent/Child'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. For a mutation tool it discloses nothing about duplicate-name handling, required account/permission state, whether the created label is returned (ID/name) for later use, or that it drives the Gmail UI rather than an API.
Agents need to know what a tool does to the 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 tight sentence with an action-oriented, front-loaded verb. Nothing is wasted, though the UI path hint is of limited utility to an agent selecting among 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?
For a simple one-parameter tool with a fully documented schema and no output schema, the description is minimally adequate. It lacks return-value expectations and duplicate/permission behavior that an agent would need when the mutation's effects matter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema already documents it at 100% coverage including the '/' nesting convention. The description adds no parameter detail 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?
States a specific verb and resource ('Create a new Gmail label') and the parenthetical UI path ('drawer -> Create label') confirms it is a creation operation. It implicitly distinguishes itself from gmail_rename_label/gmail_delete_label/gmail_labels but never names 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?
Usage is implied by the verb 'create' and the UI path, but the description gives no explicit context for when to use this versus gmail_labels (to check existing labels) or gmail_rename_label (if one already exists). No prerequisites or edge-case guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_delete_draftA
Delete (discard) a draft: index from gmail.drafts, optionally with the same query.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.drafts (default 0 when query is given). | |
| query | No | The query used with gmail.drafts (searches 'in:drafts <query>'); default: the query of the last gmail.drafts listing (else the Drafts folder). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| expect_subject | No | Safety check: the draft's subject must contain this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden; it does disclose the confirm=true prerequisite and flags the operation as destructive/outward-facing. It does not say whether the deletion is reversible (e.g., via gmail_undo), what happens to the draft afterward, or what the call returns, which matters for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the action and target, followed by the hard confirm requirement. 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 4-param destructive tool with no annotations and no output schema, the description covers the essential prerequisites (confirm and index provenance) but omits the outcome of the call, reversibility, and the distinction from sibling delete/discard 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%, so each parameter is already documented, establishing a baseline of 3. The description reinforces that index and query should correspond to a prior gmail.drafts call but adds no new syntax or constraints 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?
States a specific verb and resource ('Delete (discard) a draft') and ties the target to a prior gmail.drafts listing. It does not differentiate itself from ambiguous siblings such as gmail_discard, gmail_trash, or gmail_delete_forever, which an agent could easily confuse with this 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 description implies a workflow (get the index from gmail.drafts, possibly reuse the same query) and warns that confirm=true is required. It gives no explicit when-not guidance or comparison against the other draft/deletion siblings, leaving the agent to infer which delete variant to pick.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_delete_foreverA
Permanently delete conversations that are in the Trash or Spam (cannot be undone).
Only conversations listed in the Trash or Spam folder (default: Trash), or in a search restricted to them ('in:trash ...' / 'in:spam ...'), can be targeted. Some Gmail builds (e.g. Workspace accounts) offer no per-conversation 'Delete forever'; the op then fails with not_found and gmail.empty is the only way to purge.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | Trash |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does so well: it discloses irreversibility ('cannot be undone'), the required confirm=true guard, the restricted target set, and the specific not_found failure mode on some Gmail builds. It does not describe the response shape or partial-failure behavior across multi-selection, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the irreversible action and its scope, followed by the targeting constraint and the confirm requirement. It is dense but every sentence carries operational information; minor tightening could improve it, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an eight-parameter destructive tool with no annotations and no output schema, the description supplies the critical missing context: irreversibility, confirm=true, target restrictions, and the gmail.empty fallback. The selection-parameter semantics are delegated to the fully covered schema, which is acceptable, though a note on multi-selection behavior would make it 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%, so the eight selection parameters (all, index, indexes, match, query, folder, max_rows) are already fully documented in the schema. The description reinforces the folder default and the confirm requirement but adds little parameter-level detail beyond what the schema supplies, 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 states a specific verb and resource ('Permanently delete conversations') and narrows the scope to the Trash or Spam folder. It clearly distinguishes this from sibling tools such as gmail_trash, gmail_archive, and gmail_empty, so an agent can identify the correct operation without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the precondition that only conversations in Trash or Spam (or a search restricted to them) can be targeted, and it names gmail.empty as the fallback when per-conversation deletion is unavailable. It does not explicitly contrast with gmail_trash or gmail_restore, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_delete_labelA
Delete a user label (Gmail settings -> Manage labels). Conversations keep existing without it.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact name of the user label to delete. | |
| confirm | No | Must be true: this action is outward-facing or destructive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the blast radius (conversations survive, only the label is removed) and the confirm=true gate, but says nothing about reversibility, whether deletion fails if the label is missing, or permission requirements — all material for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core action and consequence front-loaded and the confirm precondition second. Nothing could be cut without losing 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 two-parameter, no-output-schema delete tool with no annotations, the description covers the action, the side-effect scope, and the safety gate. The remaining gaps (error behavior for a nonexistent label, reversibility) are real but secondary.
Complex tools with many parameters or behaviors need more documentation. 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 documented. The description only restates the confirm requirement already present in the schema and adds no new semantics for `name` (e.g., case sensitivity, exact-match behavior, or what happens on a partial 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?
States a specific verb and resource ("Delete a user label") and clarifies the effect on conversations, which separates it from gmail_label (assignment) and gmail_labels (listing). It never names a sibling or an alternative route, 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?
Usage is implied by the verb and by the stated confirm gate, but there is no explicit "use this when..." or "use gmail_label instead when you only want to remove the label from messages". The agent must infer the boundary from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_discardA
Close the compose window currently open WITHOUT sending it (its text is thrown away).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true: this action is outward-facing or destructive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It clearly discloses the destructive effect that compose text is thrown away and flags the confirm requirement, but it does not discuss undo/recoverability or what happens if no compose window is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and consequence. Every sentence carries 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?
For a simple one-parameter UI action with no output schema, the description is sufficient to invoke it correctly and understand the destructive consequence. It could be more complete by mentioning alternatives like saving as a draft or behavior when no compose window is open.
Complex tools with many parameters or behaviors need more documentation. 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 single confirm parameter is fully documented in the schema. The description repeats that confirm=true is required but adds no additional parameter 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?
States a specific verb and resource: closing the currently open compose window. It also clarifies the key effect that it will not send and that the text is discarded, which distinguishes it from sending, though it does not explicitly name draft-saving or delete-draft 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?
Gives a clear precondition: the compose window must currently be open, and confirm=true is required. It does not explicitly say when not to use it or name alternative tools such as saving a draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_download_attachmentA
Download attachment(s) of a conversation to the phone's Download folder and copy them to this computer.
Choose the attachment with name (case-insensitive substring) or attachment_index (from
gmail.attachments), or all=true; with none of them the conversation must have exactly one
attachment.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Download every attachment of the conversation. | |
| name | No | Attachment file name or part of it. | |
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| local_dir | No | Destination directory on this computer (default: <downloads dir>/gmail). | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| keep_on_phone | No | Leave the downloaded copy in the phone's Download folder. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). | |
| attachment_index | No | Index from gmail.attachments (0 = first attachment of the thread). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden, and it does reveal meaningful behavior: a second copy is written to this computer, and the no-selector case fails unless there is exactly one attachment. It omits failure modes, permission/ADB prerequisites, and what the tool reports back, and the conversation-state effects (read state, stay_open) are only in the schema rather than 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 short paragraphs, front-loaded with the outcome (download plus copy), then the selector rules. No filler sentences, and every clause constrains how to call the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an 11-parameter, no-annotation, no-output-schema tool, the description covers the outcome and the ambiguous selector logic well. The remaining gap is the return value/result reporting and the interaction with the contextual navigation params (query/folder/index), which an agent must infer from the schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema does not: the three selectors are presented as an either/or choice, `name` is clarified as a case-insensitive substring match, and the fallback rule when none is supplied is spelled out. It still doesn't explain how `query`, `folder`, and `index` combine to locate the conversation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 — download attachments of a conversation — and uniquely states the dual destination (phone Download folder plus a copy to this computer), which distinguishes it operationally from drive-oriented siblings. It doesn't name gmail_save_attachment_to_drive or gmail_attachments as the contrasting tools, so sibling 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?
The second paragraph explains how to select an attachment (name, attachment_index, or all=true) and gives the precondition that with no selector the thread must have exactly one attachment. However, it never says when to use this tool instead of gmail_save_attachment_to_drive, nor when not to use it (e.g., no attachments, large files), which is the key routing decision for an agent here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_draftA
Create a new draft (not sent): recipients, subject, Unicode body, attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Cc addresses. | |
| to | No | Recipient addresses (optional for a draft). | |
| bcc | No | Bcc addresses. | |
| body | No | Plain-text body. | |
| subject | No | Subject line. | |
| signature | No | Keep the signature Gmail appends after the body. | |
| attachments | No | Paths of files on this computer to attach. | |
| drive_files | No | Google Drive files to insert as links: 'name' (found with Drive search) or '/Folder/name' (from My Drive). | |
| from_address | No | Use this From address (an alias / delegated address of the account). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It usefully discloses that this creates a draft and does not send it, and that the body supports Unicode. It does not describe authentication needs, side effects, where the draft is stored, or what the response contains.
Agents need to know what a tool does to the world before calling 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 phrase contributes either the action, the non-sending constraint, or a key content type.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 is rich and covers all parameters, which carries most of the context. However, with no annotations and no output schema, the description could say more about the draft's persistence, return value, or prerequisites; it is adequate but incomplete for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly. The description adds a small amount of meaning by noting 'Unicode body', but it omits several parameters such as cc, bcc, drive_files, signature, and from_address, 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 states a specific verb and resource: 'Create a new draft'. It also clarifies the key scope distinction '(not sent)', which helps distinguish this from sending tools, though it does not explicitly name siblings such as gmail_send or gmail_edit_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical '(not sent)' implies when this tool should be used rather than gmail_send or gmail_send_draft. However, it gives no explicit when-to-use guidance, prerequisites, or named alternatives, leaving routing mostly inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_draftsB
List drafts (Drafts folder, or drafts matching a Gmail query). Indexes feed gmail.send_draft.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max drafts to return. | |
| query | No | Optional Gmail search terms; searches 'in:drafts <query>'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a safe read, and the note that indexes feed gmail.send_draft discloses useful cross-tool coupling, but nothing is said about ordering, pagination, or result shape.
Agents need to know what a tool does to the 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 verb and scope, with no wasted words. The second sentence is terse enough to be slightly cryptic but still 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?
With no output schema, the description should clarify what a draft listing returns — the mention of 'indexes' gestures at this but doesn't explain the format or how indexes are consumed. Adequate for a simple two-optional-parameter list tool, but incomplete about results.
Complex tools with many parameters or behaviors need more documentation. 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 (limit, query) are already fully documented, including the 'in:drafts <query>' behavior. The description adds nothing about parameter semantics beyond what the schema provides, making the baseline 3 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?
States a specific verb+resource ('List drafts') and scopes it to the Drafts folder or a Gmail query, which separates it from gmail_list and gmail_search. The trailing 'Indexes feed gmail.send_draft' is useful but oddly phrased and doesn't name a sibling it is definitively not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the parenthetical scope (Drafts folder, or drafts matching a query) but there is no explicit when-to-use vs gmail_search or gmail_list, and no mention of when to use it before gmail_send_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_edit_draftA
Change an existing draft (recipients, subject, body, attachments) and save it again.
The draft keeps its thread (reply drafts stay replies). Fields left out are unchanged. With append=false (default) given recipients REPLACE the field and body replaces the whole editable body; with append=true recipients are added and body is added at the end.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Cc recipients (same rules). | |
| to | No | To recipients (replace, or add with append=true; [] clears the field). | |
| bcc | No | Bcc recipients (same rules). | |
| body | No | New body text (any Unicode, newlines allowed). | |
| index | No | Row index from gmail.drafts (default 0 when query is given). | |
| query | No | The query used with gmail.drafts (searches 'in:drafts <query>'); default: the query of the last gmail.drafts listing (else the Drafts folder). | |
| append | No | Add recipients/body instead of replacing them. | |
| subject | No | New subject (always replaces). | |
| attachments | No | Paths of files on this computer to attach. | |
| expect_subject | No | Safety check: the draft's subject must contain this text. | |
| remove_attachments | No | File names of attachments to remove from the draft. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does real work: it discloses that the draft keeps its thread and reply drafts stay replies, that omitted fields are unchanged, and how append interacts with recipients and body. It does not mention permissions or what happens on a failed expect_subject check (the schema covers the latter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, then a short paragraph on preservation semantics and one on the append switch. No filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an 11-parameter, unannotated mutation tool with no output schema, the description covers the most agent-relevant semantics (thread preservation, partial update, append behavior). It leaves the index/query draft-selection mechanics entirely to the schema, which is acceptable but leaves the targeting story thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds genuine nuance by clarifying that default mode replaces recipients and replaces the whole editable body, whereas append mode adds recipients and appends body text at the end.
Input schemas describe structure but not intent. Descriptions should explain 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: 'Change an existing draft (recipients, subject, body, attachments) and save it again.' An agent can distinguish this from gmail_draft (creation) or gmail_send_draft, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains replace-vs-append behavior and that omitted fields are left unchanged, which strongly implies edit-in-place usage, but it never states when to reach for this tool versus gmail_draft or gmail_send_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_emptyA
Empty the Trash or the Spam folder: EVERY conversation in it is permanently deleted.
Returns how many conversations Gmail said it would delete ('count').
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | 'trash' or 'spam'. | trash |
| confirm | No | Must be true: this action is outward-facing or destructive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it declares permanence ('permanently deleted'), states the confirm gate, and even discloses the return value ('count' of what Gmail said it would delete). It doesn't mention irreversibility/undo availability, permission requirements, or failure behavior, so it isn't fully complete.
Agents need to know what a tool does to the 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 with the destructive scope front-loaded, then the return value, then the confirm gate — a sound ordering with almost no waste. The parenthetical on confirm mildly repeats the schema description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema and no annotations, the description covers what gets destroyed, that it is permanent, the safety gate, and the return value. Only minor gaps remain (error/undo semantics).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (folder enum, confirm boolean) are documented in the schema, so the baseline applies. The description reinforces the confirm requirement but adds no new syntax or semantics beyond the schema's own 'outward-facing or destructive' wording.
Input schemas describe structure but not intent. Descriptions should explain 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 (empty) plus the exact resource (Trash or Spam folder) and the scope ('EVERY conversation in it'), which cleanly separates it from siblings like gmail_trash or gmail_delete_forever that act on individual messages. An agent can pick this out without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case clear (bulk purge of a whole folder) and gates it behind confirm=true, which is the right conditioning for a destructive bulk operation. It does not explicitly name alternatives or state when not to use it (e.g., 'to remove a single message, use gmail_trash'), 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.
gmail_foldersA
List Gmail folders (inbox categories, system folders) and user labels with unread counts.
Counts are what the drawer shows: unread conversations for most folders, the total for Drafts/Outbox/Scheduled, and 'N new' for inbox categories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses non-obvious count semantics: unread conversations for most folders, totals for Drafts/Outbox/Scheduled, and 'N new' for inbox categories. It does not discuss permissions or ordering, but the key return behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core purpose front-loaded and useful count semantics immediately following. 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 zero-parameter listing tool without an output schema, the description is nearly complete: it names the content and clarifies the otherwise ambiguous unread counts. Minor gaps like ordering or whether empty folders are included keep it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter syntax, and it correctly focuses on describing the returned list and count meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List Gmail folders (inbox categories, system folders) and user labels with unread counts.' It is clear what the tool returns, but it does not explicitly differentiate itself from sibling tools like gmail_labels or gmail_unread_count.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is listed and how counts are calculated, but gives no explicit guidance on when to use this tool versus alternatives such as gmail_labels or gmail_unread_count. Usage must be inferred from the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_forwardA
Forward the last message of a conversation, or message_index (with its attachments), to new recipients.
Send is never repeated blind: when Gmail's reaction to Send is unclear the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with error 'send_state_unknown' and nothing is re-sent (check gmail.list folder='sent' before any retry). A result may carry verified_in='outbox' | 'sent' when the send was confirmed that way.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Additional Cc recipients. | |
| to | No | Additional To recipients. | |
| bcc | No | Additional Bcc recipients. | |
| body | No | Text written above the quoted message (any Unicode, newlines allowed). | |
| index | No | Row index of the conversation (from gmail.list / gmail.search); omit to use the conversation already open. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| draft_only | No | Save the reply as a draft instead of sending it. | |
| attachments | No | Paths of files on this computer to attach. | |
| drive_files | No | Google Drive files to insert as links: 'name' (found with Drive search) or '/Folder/name' (from My Drive). | |
| message_index | No | Answer this message of the thread (0 = oldest, numbering of gmail.read) through its own header actions; default: the last message. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is sent (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does substantial work: it discloses that send is verified against Outbox/Sent, that an unclear state fails with 'send_state_unknown' without re-sending, and that verified_in may appear on the result. It does not state that forwarding is irreversible once sent, nor what happens when confirm is false beyond 'must be 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?
The core action and scope are front-loaded into the first sentence, and the send-verification paragraph is dense but each sentence carries operational consequence. The confirm requirement is tacked on as a final line rather than integrated, a minor structural inefficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation tool with no annotations and no output schema, the description covers the highest-risk behavior (duplicate-send avoidance, confirm gate, error signal) and names the verification field on results. The lower-risk parameters (drive_files, attachments, expect_subject, draft_only) are left entirely to the 100%-covered schema, which is acceptable but means the description alone would not fully prepare an agent.
Complex tools with many parameters or behaviors need more documentation. 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 one of the 13 parameters is already documented. The description adds a little framing ('with its attachments', 'to new recipients') and restates the message_index default, but adds no syntax, format, or interaction detail beyond what the schema properties already say. 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?
States a specific verb and resource ('Forward the last message of a conversation... to new recipients') and identifies the message_index variant, which implicitly separates it from gmail_reply/gmail_reply_all since the target is new recipients rather than the sender. It never names an alternative sibling outright, so sibling 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 description does establish a hard precondition (confirm=true) and gives retry guidance ('check gmail.list folder='sent' before any retry'), which is real usage direction. It never says when to choose forward over gmail_reply, gmail_reply_all, gmail_send, or gmail_draft, and the draft_only escape hatch is only visible in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_geminiA
Ask Gemini in Gmail and return its answer text.
Without index/query/folder Gemini is asked from the mail list (questions about the mailbox, e.g. 'unread mail from Alice this week'); with them the conversation is opened first and the question is about that conversation. Raises gemini_unavailable when the account has no Gemini in Gmail.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index of a conversation to ask about (from gmail.list / gmail.search). | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| prompt | Yes | The question or instruction (any Unicode). | |
| timeout | No | Max seconds to wait for the answer. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does disclose real behavior: the conversation is opened first as a side effect, a timeout bounds the wait, and a specific error (gemini_unavailable) is raised when the account lacks Gemini. It stops short of saying whether asking is purely read-only or whether the opened conversation changes UI state that later tools depend on.
Agents need to know what a tool does to the 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, front-loaded with the core action, then the mode split, then the failure mode. No restatement of the name, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter tool with no annotations and no output schema, the description covers the action, both invocation modes, the return value ('answer text'), and the key error. It is slightly thin on the interaction between timeout expiry and the returned result, and on the expect_subject mismatch case.
Complex tools with many parameters or behaviors need more documentation. 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 earns a bump by explaining the group-level interaction — that index/query/folder act together to pre-open a conversation and that omitting all three selects mailbox scope — which the per-field schema text does not state. It does not explain expect_subject's failure behavior or what happens when the safety check fails.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Ask Gemini in Gmail and return its answer text') and splits the tool into two clearly described modes (mailbox-level vs. conversation-level). It does not, however, address the closest sibling, gmail_summarize, so an agent must infer which of the two LLM-style tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit conditional routing: omit index/query/folder to ask about the mailbox, supply them to ask about a specific conversation, with a concrete example question. It lacks any when-not guidance or named alternative (e.g. gmail_summarize, gmail_search), so the routing is clear internally but not against siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_importantC
Mark conversations as important.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and discloses almost nothing. It doesn't say whether the change is reversible, whether it can be undone with gmail_undo, or what happens when no selection parameter is supplied despite zero required 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?
A single short sentence with zero waste, well front-loaded. It is efficient to the point of under-specification rather than being 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?
With seven parameters, no annotations, and no output schema, the description is far too thin for the agent to call this correctly. At minimum it should explain the selection modes and the effect of marking conversations important.
Complex tools with many parameters or behaviors need more documentation. 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 is already well documented, including the mutual-exclusion constraints for 'all'. The description adds no parameter meaning 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?
States a specific verb and resource ('Mark conversations as important'), so the agent knows the operation. It does not mention its direct inverse sibling gmail_not_important or gmail_star, leaving the distinction to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus gmail_not_important, gmail_star, or gmail_label. Nothing tells the agent how to pick a selection mode (index vs indexes vs match vs all vs query/folder), which is the main decision this tool requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_labelB
Apply and/or remove labels on conversations ('Label as' dialog; 'Inbox' is a label too).
The result lists the labels offered by the dialog ('labels').
| Name | Required | Description | Default |
|---|---|---|---|
| add | No | Label names to apply (case-insensitive). | |
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| remove | No | Label names to remove. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the UI-dialog framing and the return shape ('result lists the labels offered by the dialog'), which matters because no output schema exists. What is missing is mutation behavior: what happens if neither add nor remove is set, whether the selection parameters are mutually exclusive, and whether the action is reversible.
Agents need to know what a tool does to the 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, front-loaded with the action, no waste. The dialog/return-shape remarks are compact. It could be tighter but every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter selection-heavy mutation tool with no annotations and no output schema, the definition is only partially complete. Return shape is covered, but the interplay among index/indexes/match/query/folder/all and the safety profile of a label mutation are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all 9 parameters in detail. The description adds only the note that 'Inbox' is itself a label, which slightly informs add/remove semantics. Baseline 3 is appropriate when 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?
States a specific verb and resource: 'Apply and/or remove labels on conversations'. An agent can tell it apart from label-management siblings like gmail_create_label or gmail_labels. However, it never names those siblings, so differentiation is inferred 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?
The parenthetical '("Label as" dialog; "Inbox" is a label too)' implies the UI context and a subtle edge case, which is useful. But there is no explicit when-to-use guidance versus gmail_move, gmail_archive, or gmail_create_label, and no exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_labelsA
List the user labels (and system folders) available to gmail.label / gmail.move.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. 'List' plus 'available to' implies a safe read operation, and the parenthetical discloses that system folders are included, but nothing is said about return shape, whether system labels are flagged distinctly, or whether hidden/unsubscribed labels appear.
Agents need to know what a tool does to the 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 resource comes first and the downstream consumers are tucked into a compact prepositional phrase.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description covers the essentials: what is listed and what it is for. The only gap is that the exact returned shape (name vs. id, how system folders are marked) remains unspecified.
Complex tools with many parameters or behaviors need more documentation. 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 tool takes zero parameters, so the baseline of 4 applies. The description correctly implies no input is needed to fetch the full label set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the user labels (and system folders)') and ties the output to its consumers, gmail.label and gmail.move. An agent can tell it is a read-only enumeration tool, though the description does not distinguish it from the sibling gmail_folders, which sounds overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 through 'available to gmail.label / gmail.move', which hints you call this before labeling or moving messages. There is no explicit when-to-use/when-not-to-use statement and no guidance on choosing between this and gmail_folders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_listA
List conversations of the current list (folder, label or search results) or of a given folder.
Rows have an 'index' (0 = top of the list) usable with gmail.read / gmail.reply / gmail.archive ... The list and its rows are remembered: a follow-up op given only an index re-opens this list if the phone shows another one, and refuses (not_found) when the row at that index is no longer the same conversation (it is looked up nearby if it just moved).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of rows to return. | |
| start | No | Skip this many rows from the top (paging: start=20, limit=20). | |
| folder | No | Open this folder/label first (default: stay on the current list, Inbox if none). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so unusually well: it discloses that the list and row identity are remembered across calls, that a stale index causes a not_found refusal, and that a moved row is looked up nearby. It omits any statement of read-only nature, permissions, or cost of the implicit list re-opening.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The second paragraph is dense with genuinely useful state semantics, but the opening contains an abrupt ellipsis fragment ('... The list and its rows are remembered') and the trailing parenthetical about nearby lookup is wordy. Information is front-loaded reasonably, but the structure reads as patched-together prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should convey what a row contains; it only mentions the 'index' field and says nothing about subject, sender, snippet, or unread state. For a list tool whose return shape drives every subsequent index-based call, that leaves a meaningful 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 coverage is 100%, so limit, start, and folder are already fully documented in the schema, including folder's default of staying on the current list. The description adds no syntax or format beyond restating that a folder may be supplied; baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List conversations') and scopes it to the current list (folder, label, or search results) or an explicitly named folder, which separates it from actions like gmail_search or gmail_folders. It never names a sibling alternative outright, so differentiation is inferred from the 'current list' framing 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?
It implicitly tells the agent this is the enumeration step whose rows feed gmail.read / gmail.reply / gmail.archive, and it explains the current-list-vs-folder choice. There is no explicit 'use X instead when...' guidance toward gmail_search or gmail_folders, so the when-not side is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_mark_readB
Mark conversations as read (changed=false if they already were).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one useful behavioral trait — that unchanged conversations yield changed=false rather than an error, implying idempotency — but says nothing about permissions, scope of effect, or what a bulk 'all' action does to the mailbox.
Agents need to know what a tool does to the 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 tight sentence with the key outcome hint parenthesized, front-loaded and free of waste. It is arguably under-specified rather than verbose, but nothing in it is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with seven parameters and no annotations or output schema, the description is thin — it never explains that conversations must first be selected via list/search results. The fully documented schema compensates enough that an agent can still call it, but the mental model must be assembled from parameter descriptions.
Complex tools with many parameters or behaviors need more documentation. 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 seven selection parameters (all, index, indexes, match, query, folder, max_rows) are fully documented in the schema; baseline 3 applies. The description adds no meaning about how these selectors combine or which row source they draw from.
Input schemas describe structure but not intent. Descriptions should explain 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 ("Mark conversations as read"), which is clear enough to act on. However it does not distinguish itself from nearby siblings like gmail_mark_unread, or from gmail_read (which opens a message), so the agent must rely on the tool name alone for that 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?
No guidance on when to use this versus gmail_read, gmail_mark_unread, or gmail_read/scroll for reading mail. There are no stated preconditions tying it to a prior gmail_list or gmail_search selection, even though the parameters are all row-selection based.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_mark_unreadB
Mark conversations as unread (an open conversation is closed, as in the app).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the whole burden — but it does disclose one non-obvious UI side effect: an open conversation is closed, mirroring the app. It says nothing about behavior when the conversation is already unread, what 'all' does at scale, or whether the change is persisted server-side.
Agents need to know what a tool does to the 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 short sentence with the core action front-loaded and the side effect in parentheses. Efficient, though the parenthetical phrasing is slightly informal for a tool description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 selection model (index/match/query/folder/all) is complex but fully covered by the schema, and there is no output schema to explain. The description is adequate but omits selection defaults and how the tool responds when nothing is selected.
Complex tools with many parameters or behaviors need more documentation. 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 all seven parameters are already documented, including the constraint that 'all' needs query or folder. The description adds no parameter meaning beyond that, so 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?
States a specific verb and resource: 'Mark conversations as unread'. Clear enough to act on, but it never mentions the sibling gmail_mark_read, so an agent must infer the pairing from the name alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus gmail_mark_read, gmail_important, or gmail_mute, and no prerequisites stated. The only context is implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_message_actionsA
List the actions a message's own menu offers (Reply all, Forward, Block "x", Report spam ...).
Read-only: tells whether gmail.block_sender / gmail.unblock_sender / gmail.unsubscribe / gmail.report_phishing apply to this message.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| message_index | No | Message of the thread (0 = oldest, numbering of gmail.read); default the last. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does volunteer 'Read-only' plus the downstream applicability of the block/unblock/unsubscribe/phishing tools — useful context. However, it does not disclose that the tool navigates the UI (opening a conversation, honoring stay_open/keep_unread), so the 'read-only' framing is narrower than the actual behavior, and no auth/rate/return-shape info is given.
Agents need to know what a tool does to the 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: the primary purpose leads, followed by a single clarifying line on the read-only guarantee and the dependent tools. No waste or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition covers purpose and read-only status but leaves gaps for a 7-parameter, annotation-free tool: how the UI navigation side effects work and what the returned action list looks like (no output schema) are unaddressed. Adequate but 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 100% and all 7 parameters are documented in the schema (index, query, folder, message_index, stay_open, keep_unread, expect_subject). The description adds no parameter detail, 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 a specific verb and resource — enumerating the actions a message's own menu offers — and gives concrete examples (Reply all, Forward, Block, Report spam). It is distinguishable from action-executing siblings like gmail_block_sender because it frames itself as a query, though it never explicitly names a sibling to differentiate against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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: call this to learn whether gmail_block_sender / gmail_unblock_sender / gmail_unsubscribe / gmail_report_phishing apply to a message. That is a clear enough trigger, but there is no explicit when-not guidance or routing to gmail_read / gmail_open for other purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_moveA
Move conversations to another folder: an inbox category (Primary, Promotions...), a label, or the Inbox.
'Move to' is offered on folder lists (and, as 'Move to Inbox', for trashed/archived search results); it is not available on ordinary search results - use gmail.label there.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination as listed by the app's 'Move to' dialog ('inbox' = Inbox/Primary). | |
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses availability constraints and the alternative action, but it does not explain mutation side effects such as whether conversations are removed from their current folder, whether the move is reversible, or whether any confirmation 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?
The description is front-loaded and tightly structured: the first sentence states the action and destination types, and the second gives availability and alternative guidance. There is no redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema is rich and fully documented, so the description does not need to repeat parameter details. It supplies enough purpose and routing context for an agent to call the tool correctly, though it could say more about mutation effects given the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all eight parameters thoroughly. The description adds destination examples such as inbox categories and labels, but it does not add meaning for the selection parameters 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 gives a specific verb and resource: move conversations to a folder, inbox category, label, or the Inbox. It also distinguishes the tool from gmail.label in ordinary search results, so an agent can identify its role without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states where 'Move to' is available and where it is not, then names the alternative: use gmail.label on ordinary search results. This is clear when-to-use, when-not-to-use, and alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_muteA
Mute conversations: they are archived and later replies skip the Inbox (find them with 'is:muted').
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden and does disclose the key effects: conversations are archived, future replies bypass the Inbox, and they can be found with 'is:muted'. It stops short of mentioning reversibility via gmail_unmute or any permission prerequisites, but the core mute behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence that states the action and its most important consequences without filler. Every clause earns its place by clarifying what mute means in Gmail terms.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 seven selection parameters but complete schema coverage, the description sufficiently explains the mute effect and how to locate muted conversations. It lacks usage guidance relative to alternatives and does not mention reversibility, but an agent has enough information to understand the operation and use the documented selection 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 every parameter is already documented in the input schema, including selection modes like all, index, query, folder, and match. The description adds no parameter-specific meaning beyond calling the target 'conversations', so 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 ('Mute conversations') and explains the core effect: archived messages and future replies skipping the Inbox. It clearly identifies the action, though it does not explicitly distinguish it from nearby siblings such as gmail_archive or gmail_snooze.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what muting does but not when to choose it over alternatives like gmail_archive, gmail_snooze, or gmail_label. There are no explicit when-to-use or when-not-to-use conditions, leaving selection guidance to inference from the tool name and effect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_not_importantC
Mark conversations as not important.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say whether the flag is reversible, whether it affects a single conversation or a batch, or what happens to the rows after the action — all relevant for a selection-based mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no padding, and the action is front-loaded. It is efficient, though the terseness leaves the selection semantics entirely to 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?
The schema fully documents the selection machinery and there is no output schema to explain, so an agent can technically call it. However, with no annotations and no statement of reversibility or scope, the description alone does not fully prepare the agent for a batch mutation.
Complex tools with many parameters or behaviors need more documentation. 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 seven selection parameters (all, index, indexes, match, query, folder, max_rows) are each documented in the schema. The description adds no meaning beyond that, 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 a specific verb and resource ('Mark conversations as not important'), which is unambiguous on its own. It does not explicitly contrast with the sibling gmail_important, though the inverse relationship is easy to infer from the names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus gmail_important, gmail_mark_read, gmail_archive, or gmail_trash. The agent is left to infer that this only toggles the importance flag rather than removing the conversation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_not_spamB
Report conversations as not spam: they go back to the Inbox (default list: the Spam folder).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | Spam |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it usefully discloses the key mutation effect: conversations return to the Inbox and the default source is the Spam folder. However, it does not mention permissions, reversibility, confirmation behavior, or what happens if no selection parameters are supplied.
Agents need to know what a tool does to the world before calling 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 zero waste. It states the action, the destination, and the default list 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?
The core action is communicated, and the schema fully explains selection semantics, so the agent can determine how to select conversations. But for a mutation tool with no annotations and no output schema, the description is thin on behavioral context and usage routing, making it adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven selection parameters thoroughly. The description adds only a minor note about the default Spam folder, which corresponds to the folder parameter default, 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 states a specific verb and resource: report conversations as not spam, and it names the destination (Inbox) and default source folder (Spam). An agent can distinguish it from gmail_spam by operation, but the description never explicitly names that sibling or other alternatives like gmail_restore.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but gives no guidance on when to use it versus alternatives such as gmail_spam, gmail_restore, or gmail_move. There are no exclusions or context conditions, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_openB
Open Gmail on a folder or label (Inbox, Starred, Sent, Drafts, All mail, Spam, Trash, a user label...).
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder or label name as shown in the Gmail drawer (case-insensitive). 'inbox' opens the inbox (its 'Primary' tab when inbox categories are on). | inbox |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Open' implies navigation but the description never says whether this launches the app, whether it is a safe read-only view change, or what happens on success; for a UI-mutating navigation tool with zero annotation coverage this is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that states the action and resource immediately with a compact enumeration of values. No wasted text, though the trailing ellipsis list is slightly loose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 navigation tool with no output schema, the description covers what it does and valid values, but omits behavior on success or whether Gmail must already be running. Adequate but with clear gaps given the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents the single folder parameter including the default and 'Primary' tab behavior. The description adds a list of example folder names, which is useful but largely redundant with the schema's own detail; 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?
States a specific verb (Open) plus resource (Gmail) and scope (folder or label), with concrete example values (Inbox, Starred, Sent, etc.). An agent can tell this navigates to a folder view, distinguishing it from list-oriented siblings like gmail_folders, though it never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumerated folder values, but there is no explicit when-to-use guidance, no statement of prerequisites, and no routing to alternatives such as gmail_folders for listing labels or gmail_list for messages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_readA
Read a whole conversation: subject, labels, and every message (from, to, cc, date, full body, attachments).
Opens row index of the current list (or of query search results / folder); with no
index, reads the conversation already open. Collapsed messages are expanded and the whole
thread is scrolled. Opening an unread conversation marks it read unless keep_unread=true.
| Name | Required | Description | Default |
|---|---|---|---|
| full | No | Fetch full headers and body of each message ('View entire message'); false = only the thread overview (senders, dates, snippets, attachments), much faster. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| stay_open | No | Leave the conversation open on screen (default: go back to the list). | |
| keep_unread | No | If the conversation was unread, mark it unread again after reading. | |
| max_messages | No | Read full bodies of at most this many messages (oldest first). | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the key side effect: opening an unread conversation marks it read unless keep_unread=true. It also reveals UI-level behavior (collapsed messages expanded, thread scrolled, optional stay_open) that no structured field conveys. It omits error/return behavior beyond expect_subject's not_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?
Three short paragraphs: what is returned, how the target is selected, then side effects. The targeting rule and the read-marking side effect are both front-loaded and no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema and no annotations, the description covers targeting, side effects, the fast-path option, and the safety-check failure mode. Gaps remain on the exact return shape (truncation at max_messages) and what happens on index out of range.
Complex tools with many parameters or behaviors need more documentation. 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, but the description adds real meaning the schema doesn't: the precedence/interaction among index, query and folder, and the default behavior when index is absent. It still never mentions max_messages or expect_subject.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read a whole conversation') and immediately enumerates the payload (subject, labels, every message with from/to/cc/date/body/attachments). It also distinguishes the read-thread scope from list/search tools by explaining that it consumes their row index.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the call as operating on a row from gmail.list / gmail.search or a folder, and covers the no-index case (read the already-open conversation). It stops short of explicitly routing away from a sibling that opens a single message (gmail_open) or a summarizer (gmail_summarize).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_refreshA
Sync mail now: pull-to-refresh on the current list (goes to the list first).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that the tool navigates to the list first and performs a pull-to-refresh, but it does not clarify whether sync is synchronous, whether it requires auth/network, or what happens on failure.
Agents need to know what a tool does to the world 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 one front-loaded sentence with no wasted words. The core action is stated first and the navigation behavior is provided as a concise parenthetical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 no-parameter action with no output schema and no annotations, the description provides enough context to invoke it: it says what is synced and that it navigates to the list first. It could be more complete about whether the refresh is asynchronous or when the sync is considered finished.
Complex tools with many parameters or behaviors need more documentation. 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 tool has zero parameters, so parameter semantics are not a meaningful gap. The description appropriately adds no parameter details and the baseline score for zero-param tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: "Sync mail now" and "pull-to-refresh on the current list." It also clarifies the navigation side effect, "goes to the list first." However, it does not explicitly distinguish this from siblings such as gmail_list, gmail_search, or drive_refresh.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "Sync mail now" and "current list," suggesting it should be used when the visible mail list needs refreshing. There is no explicit when-not guidance and no named alternative such as gmail_list or calendar_sync.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_rename_labelA
Rename a user label (Gmail settings -> Manage labels -> label -> Name). Conversations keep it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact current name of the user label. | |
| new_name | Yes | New name ('Parent/Child' nests it under an existing label, as in Gmail). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Conversations keep it' is a genuine, useful disclosure that renaming does not strip the label from existing conversations, and 'user label' hints at the system-label restriction. However, nothing is said about name collisions, reversibility, or whether the old name remains searchable.
Agents need to know what a tool does to the 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 clauses with the operation stated first and the persistence note second; nothing is padded. The 'Conversations keep it' fragment is terse to the edge of ambiguity but still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool whose schema is fully documented, the essentials are covered. But it is a mutation with no annotations and no output schema, and the description leaves the agent without error/collision behavior or any confirmation of what the call returns.
Complex tools with many parameters or behaviors need more documentation. 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 both parameters are documented, including the 'Parent/Child' nesting behavior. The description adds nothing about parameters beyond what the schema already states, so 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?
States a specific verb ('Rename') and a scoped resource ('a user label'), which cleanly separates it from gmail_create_label, gmail_delete_label, and gmail_label without needing to name them. The 'user label' qualifier also implies the system-label boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb and the Gmail settings path, but there is no explicit when-to-use/when-not statement or named alternative. An agent must infer that create/delete exist elsewhere and that system labels are out of scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_replyA
Reply to the sender of the last message of a conversation (or of message_index).
Send is never repeated blind: when Gmail's reaction to Send is unclear the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with error 'send_state_unknown' and nothing is re-sent (check gmail.list folder='sent' before any retry). A result may carry verified_in='outbox' | 'sent' when the send was confirmed that way.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Additional Cc recipients. | |
| to | No | Additional To recipients. | |
| bcc | No | Additional Bcc recipients. | |
| body | No | Text written above the quoted message (any Unicode, newlines allowed). | |
| index | No | Row index of the conversation (from gmail.list / gmail.search); omit to use the conversation already open. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| draft_only | No | Save the reply as a draft instead of sending it. | |
| attachments | No | Paths of files on this computer to attach. | |
| drive_files | No | Google Drive files to insert as links: 'name' (found with Drive search) or '/Folder/name' (from My Drive). | |
| message_index | No | Answer this message of the thread (0 = oldest, numbering of gmail.read) through its own header actions; default: the last message. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is sent (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries real weight: it discloses idempotency protection for Send, the 'send_state_unknown' failure mode that prevents blind re-sends, and the verified_in='outbox'|'sent' result field. It does not explain what happens when confirm is omitted or how draft_only changes the flow, but the core safety behavior is unusually well documented.
Agents need to know what a tool does to the 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, front-loaded with the action, followed by the failure/retry guidance and the confirm requirement. No filler, though the send-safety paragraph could be trimmed slightly without losing 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 13-parameter outward-facing mutation with no annotations and no output schema, the description covers the highest-risk gaps: confirmation, idempotency, error code, and result field. Remaining behaviors (draft_only, attachments, expect_subject) are adequately handled by the schema descriptions.
Complex tools with many parameters or behaviors need more documentation. 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 13 parameters are already fully documented; baseline is 3. The description only adds the semantic that message_index defaults to the last message, which is a marginal supplement.
Input schemas describe structure but not intent. Descriptions should explain 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 with precise scope: replying to the sender of the last message (or of message_index) of a conversation. This cleanly separates it from gmail_reply_all and gmail_send without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives operational context (confirm=true required, check gmail.list folder='sent' before retrying) but never says when to choose this over gmail_reply_all, gmail_forward, or gmail_draft. Routing to sibling tools is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_reply_allA
Reply to everyone on the last message of a conversation (or of message_index).
Send is never repeated blind: when Gmail's reaction to Send is unclear the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with error 'send_state_unknown' and nothing is re-sent (check gmail.list folder='sent' before any retry). A result may carry verified_in='outbox' | 'sent' when the send was confirmed that way.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Additional Cc recipients. | |
| to | No | Additional To recipients. | |
| bcc | No | Additional Bcc recipients. | |
| body | No | Text written above the quoted message (any Unicode, newlines allowed). | |
| index | No | Row index of the conversation (from gmail.list / gmail.search); omit to use the conversation already open. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| draft_only | No | Save the reply as a draft instead of sending it. | |
| attachments | No | Paths of files on this computer to attach. | |
| drive_files | No | Google Drive files to insert as links: 'name' (found with Drive search) or '/Folder/name' (from My Drive). | |
| message_index | No | Answer this message of the thread (0 = oldest, numbering of gmail.read) through its own header actions; default: the last message. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is sent (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it discloses the outward-facing/destructive nature, the confirm requirement, no blind resend behavior, the 'send_state_unknown' failure mode, and the 'verified_in' result field. This is unusually rich behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first sentence, and the following paragraphs are compact and focused on non-obvious send/retry semantics. Every sentence contributes useful information without repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter mutation with no annotations and no output schema, it covers purpose, confirmation, retry safety, and one result field. It does not fully describe the return payload, but the schema already covers parameter-level 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 schema already documents all 13 parameters. The description only echoes message_index and confirm and does not add syntax or format meaning beyond the schema, 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 starts with a specific verb and scope: 'Reply to everyone on the last message of a conversation (or of message_index).' The 'everyone' scope distinguishes it from gmail_reply, and 'reply' distinguishes it from gmail_send.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a prerequisite ('Requires confirm=true') and retry guidance, but never states when to choose this over gmail_reply or gmail_send, nor any when-not conditions. Usage is therefore implied rather than fully routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_report_phishingA
Report a message as phishing to Google (irreversible), when Gmail offers it for that message.
Not every message has the entry: the op then fails with not_found and lists the actions the message menu offers (see gmail.message_actions); use gmail.spam to report spam instead.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| message_index | No | Message of the thread (0 = oldest, numbering of gmail.read); default the last. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and largely meets it: it declares the action irreversible and outward-facing, explains what happens on an unavailable entry (not_found plus a listing of offered actions), and notes the expect_subject safety guard. It stops short of saying what the user-visible outcome is on success (e.g. whether the message disappears from the inbox or is moved).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its irreversibility, then the fallback guidance. The failure-mode sentence is slightly long and wrapped across lines, but each clause carries distinct information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter, no-output-schema mutation tool, the description covers purpose, precondition, failure path, alternative tool, and the safety-check parameter. Nothing an agent needs in order to invoke it 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 every parameter is already documented, and the description only restates the confirm gate. It adds no addressing semantics for index/query/folder/message_index beyond what the schema already says, 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?
States a specific verb and resource ('Report a message as phishing to Google') and adds the irreversibility qualifier. It explicitly distinguishes itself from gmail.spam and gmail.message_actions, so an agent can choose without opening sibling 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?
Gives explicit when-to-use ('when Gmail offers it for that message'), when-not ('not every message has the entry'), the resulting failure mode (not_found), and the alternative to pick instead (gmail.spam). The confirm=true precondition is stated up front.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_restoreA
Bring conversations back to the Inbox from the Trash, Spam or the archive (All mail / search).
Uses 'Move to Inbox' / 'Move to' -> Inbox when offered, else adds the Inbox label.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the UI mechanism ('Move to Inbox' / 'Move to' -> Inbox when offered, else adds the Inbox label), which is useful, but omits permission requirements, whether the message is removed from Trash/Spam, and any side effects or reversibility.
Agents need to know what a tool does to the 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, front-loaded with the core action and followed by a compact mechanism note. Every sentence contributes; the second sentence is slightly technical but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 seven-parameter mutation tool with no annotations, the description plus a fully documented schema gives enough context to select and invoke it. It covers restore sources, destination, and fallback mechanism; only permission and side-effect details are left implicit, keeping it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters in detail. The description adds no parameter-specific semantics (e.g., how 'all', 'query', or 'match' interact), 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 states a specific verb ('Bring conversations back') and destination (Inbox) with sources (Trash, Spam, archive/All mail), making the tool's purpose clear. It distinguishes itself in practice from siblings like gmail_archive or gmail_trash, though it does not explicitly name alternative 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 implies the restoration scenario (from Trash/Spam/archive to Inbox) but gives no explicit 'use this when' or 'use X instead' guidance. It also omits prerequisites or when not to use it (e.g., for merely labeling a message), leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_save_attachment_to_driveA
Save an attachment of a conversation into Google Drive (the tile's 'Save to Drive').
Choose the attachment with name (case-insensitive substring) or attachment_index (from
gmail.attachments); with neither, the conversation must have exactly one attachment.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Attachment file name or part of it. | |
| path | No | Drive folder from My Drive ("/" = My Drive, "/A/B"); default: the folder Drive proposes. | |
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| title | No | File name in Drive (default: the attachment's name). | |
| folder | No | Open this folder/label first and take `index` from it. | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). | |
| attachment_index | No | Index from gmail.attachments (0 = first attachment of the thread). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses one real precondition (with neither selector, the thread must have exactly one attachment), but is silent on permission/scoping needs, whether the attachment is copied or moved, whether an existing Drive file is overwritten, and what a success response looks like.
Agents need to know what a tool does to the 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, front-loaded with the verb and destination, then the disambiguation rule. Nothing is redundant and the parenthetical tile reference is brief enough to be harmless 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 10-parameter mutation-with-side-effect tool with no annotations and no output schema, the description covers only the attachment-selection mechanics. It says nothing about the outcome, error cases (other than the implied not_found via expect_subject), or destination behavior for `path`/`title` beyond what the schema already states.
Complex tools with many parameters or behaviors need more documentation. 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 would be 3, but the description adds genuine semantics the schema lacks: `name` matching is a case-insensitive substring, and the two selectors are mutually alternative with a defined fallback when both are omitted. The remaining eight parameters are covered only by 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 pairs a specific verb and object (save an attachment of a conversation into Google Drive) with the target UI action, so the resource and effect are unambiguous. It does not explicitly name the closest sibling (gmail_download_attachment) or explain the difference, 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?
It gives a clear selection rule between `name` and `attachment_index` and states the fallback case (exactly one attachment), which is useful operational guidance. However, it never says when to prefer this over gmail_download_attachment or drive_upload, nor any prerequisites or failure conditions beyond the one-attachment rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_scheduledA
List mail scheduled to be sent later (the 'Scheduled' folder). Indexes feed gmail.cancel_scheduled.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows to return. | |
| query | No | Optional Gmail search terms; searches 'in:scheduled <query>'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'List' implies a read-only, non-destructive operation, which is helpful, but the description says nothing about pagination, ordering, or whether results are truncated at the limit — details that matter for a listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste: the first defines the operation, the second links results to the downstream cancel flow. Both are front-loaded and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-required-parameter list tool with full schema coverage and no output schema, the description covers what the tool returns and its relation to cancellation. It could be more complete by noting that output is a list of message rows and that results are capped by limit.
Complex tools with many parameters or behaviors need more documentation. 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 (limit, query) are already documented in the schema, including the fact that query is wrapped as 'in:scheduled <query>'. The description adds no parameter-specific syntax or defaults beyond 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?
States a specific verb ('List') and resource ('mail scheduled to be sent later') and names the 'Scheduled' folder, which is more precise than the tool name alone. It also points to the sibling it feeds (gmail.cancel_scheduled), though it doesn't contrast against general listing tools like gmail_list or gmail_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use it (to view scheduled sends), and the note that results 'feed gmail.cancel_scheduled' clarifies the downstream workflow. However, there is no explicit guidance on when to prefer this over gmail_list/gmail_search or what to do if the list is empty.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_scrollA
Scroll the current Gmail list or open conversation; 'top' returns to the top of the list.
On a list, the rows now visible are returned with their absolute 'index' (usable by gmail.read / gmail.reply / gmail.archive...) when the list is the one last returned by gmail.list / gmail.search / gmail.scroll; 'indexed' tells whether they could be numbered (direction=top always can). On an open conversation the visible messages are returned.
| Name | Required | Description | Default |
|---|---|---|---|
| times | No | Number of swipes for down/up. | |
| direction | No | down, up, or top (back to the first row). | down |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It correctly states that the visible rows are returned along with absolute index values and an 'indexed' flag, and it specifies how an open conversation differs. These caveats are the main behavioral risk in this tool. It does not state whether the scroll changes app state or has side effects, so it does not reach a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the 'top' behavior come first, and the indexing caveat follows in a tight second sentence. The nested parentheticals make it dense, but nearly every clause conveys a real constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description still explains the return shape (visible rows, absolute index, indexed flag) and conversation behavior. The main gap is how many rows one swipe returns and what happens at the end of the list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented, so the schema carries most of the weight. The description adds meaning beyond the schema by noting that direction=top always produces numbered rows, which clarifies the enum's 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?
It states a specific verb (scroll), the resource (the current Gmail list or open conversation), and the special 'top' behavior. The reference to the list last returned by gmail.list / gmail.search / gmail.scroll distinguishes it from those siblings and from the generic ui_scroll.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage context (paging through a Gmail list or conversation) and a precondition for index usability (the list must be the one last returned by gmail.list / gmail.search / gmail.scroll). It does not explicitly say when to prefer it over the sibling ui_scroll/ui_swipe, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_searchA
Search mail with Gmail query syntax and return the result rows.
Examples: 'from:alice has:attachment', 'is:unread label:work', 'subject:report after:2026/01/01'. The results stay on screen: gmail.read / gmail.list without arguments work on them.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of result rows to return. | |
| query | Yes | Gmail search query (from:, to:, subject:, has:attachment, is:unread, is:starred, label:, in:, before:/after: YYYY/MM/DD, newer_than:2d, "exact phrase", OR, -word). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a genuinely non-obvious behavioral trait: the result set persists as screen state so argument-less gmail.read/gmail.list operate on it. But it never states that the operation is read-only/non-destructive, nor anything about permissions or how many rows a default search returns.
Agents need to know what a tool does to the 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 lines: purpose first, examples second, the state/continuation note third. No filler, and the most load-bearing sentence leads.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's 'return the result rows' is the only clue about the return value, and it never says what a row contains (sender, subject, snippet, id) or how limit affects the output. Adequate to invoke correctly, but thin for a tool with zero annotations and no 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 query parameter already enumerates every supported operator, so the schema does the heavy lifting. The description's example queries add modest practical value by showing operator composition, but it says nothing about the 'limit' parameter or its default of 20.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Search mail with Gmail query syntax and return the result rows') and implicitly contrasts with browsing siblings by naming gmail.list and gmail.read as the no-argument consumers of the results. An agent can tell this is the query-driven entry point rather than a paged listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Concrete query examples ('from:alice has:attachment', 'is:unread label:work') show intended usage, and the note that results stay on screen tells the agent the correct follow-up call is gmail.read/gmail.list with no arguments. However, it never explicitly says when to prefer gmail_search over gmail_list or gmail_open, and gives no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_sendA
Send a new e-mail (any Unicode text) with optional Cc, Bcc, attachments, From alias, or schedule it.
The account's signature is added after the body by Gmail (signature=false removes it). Recipients are verified on the compose screen before sending; on any mismatch nothing is sent. Scheduled mail waits in the 'Scheduled' folder (gmail.scheduled, gmail.cancel_scheduled).
Send is never repeated blind: when Gmail's reaction to Send is unclear the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with error 'send_state_unknown' and nothing is re-sent (check gmail.list folder='sent' before any retry). A result may carry verified_in='outbox' | 'sent' when the send was confirmed that way; a scheduled send counts only once Gmail confirms it or it is found in 'Scheduled' (verified_in='scheduled').
Gmail offers 'Undo' for about 7 s after 'Sent' (undo_available tells whether it was still on screen when the op returned; gmail.undo uses it). undo=true taps that Undo within this op, the moment Gmail shows it: the result then has undone='send' and saved_as_draft=true only when the mail came back as a draft and is not in Outbox / Sent; undone=false (with undo_error) means it was sent anyway.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Cc addresses. | |
| to | Yes | Recipient addresses. | |
| bcc | No | Bcc addresses. | |
| body | No | Plain-text body (newlines allowed). | |
| undo | No | Recall the mail with Gmail's 'Undo' right after sending (it comes back as a draft and is not delivered); not with schedule. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| subject | No | Subject line. | |
| schedule | No | Send later instead of now: 'YYYY-MM-DD HH:MM' (24h, the phone's time zone) or a preset offered by Gmail's Schedule send dialog ('tomorrow morning', 'tomorrow afternoon', 'monday morning', ...). | |
| signature | No | Keep the signature Gmail appends after the body. | |
| attachments | No | Paths of files on this computer to attach (pushed to the phone first). | |
| drive_files | No | Google Drive files to insert as links: 'name' (found with Drive search) or '/Folder/name' (from My Drive). If a recipient has no access Gmail asks about sharing: the mail is then kept as a draft and an error is returned (share it with drive.share, then gmail.send_draft). | |
| from_address | No | Send from this address (an alias / delegated address of the account). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does so thoroughly: it discloses recipient verification, signature handling, send-confirmation logic, the 'send_state_unknown' failure mode, verified_in values, Gmail's ~7s Undo window, undo result fields, and confirm=true requirement. No annotation 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 long but front-loads the core action and then layers behavioral details that are relevant for a 12-parameter, outward-facing tool. It could be tightened or structured with clearer headings, but every sentence conveys useful operational 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?
Given the tool's complexity (12 parameters, no annotations, no output schema), the description is complete enough: it covers prerequisites, send verification, error states, undo semantics, scheduling, signature behavior, and drive-file sharing edge cases. An agent has what it needs to invoke the tool correctly and handle failure modes.
Complex tools with many parameters or behaviors need more documentation. 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, but the description adds meaningful semantics beyond the schema for undo (not with schedule), schedule presets/timezone, signature, attachments, drive_files sharing failures, and from_address aliases. It does not add much for to/cc/bcc/body/subject, but the added context is valuable.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Send a new e-mail') and distinguishes itself from reply/draft siblings by specifying new mail with optional Cc, Bcc, attachments, From alias, or scheduling. An agent can immediately tell what this tool does and how it differs from gmail_reply, gmail_draft, or gmail_send_draft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context and prerequisites: requires confirm=true, describes scheduled-mail behavior and its relationship to gmail.scheduled/gmail.cancel_scheduled, and routes drive-sharing failures to drive.share + gmail.send_draft. It does not explicitly state when to prefer this over gmail_send_draft or gmail_reply, but the 'new e-mail' framing and named alternatives provide strong guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_send_draftA
Send an existing draft (index from gmail.drafts, optionally with the same query).
Send is never repeated blind: when Gmail's reaction to Send is unclear the mail is looked up in Outbox / Sent; if that cannot tell, the op fails with error 'send_state_unknown' and nothing is re-sent (check gmail.list folder='sent' before any retry). A result may carry verified_in='outbox' | 'sent' when the send was confirmed that way; a scheduled send counts only once Gmail confirms it or it is found in 'Scheduled' (verified_in='scheduled').
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.drafts (default 0 when query is given). | |
| query | No | The query used with gmail.drafts (searches 'in:drafts <query>'); default: the query of the last gmail.drafts listing (else the Drafts folder). | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| schedule | No | Schedule the send instead of sending now (see gmail.send). | |
| expect_subject | No | Safety check: the draft's subject must contain this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does it well: it explains that sends are never blindly repeated, names the lookup path (Outbox/Sent/Scheduled), specifies the failure mode ('send_state_unknown' with nothing re-sent), and documents result fields verified_in='outbox'|'sent'|'scheduled'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, followed by the safety/idempotency semantics. The middle paragraph is dense but each clause carries real behavioral information; the confirm note at the end mildly duplicates the schema's own description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, no-annotation, no-output-schema mutation tool, this covers the hard parts: irreversibility/confirmation, ambiguity handling, error code, and verification fields. Auth requirements are the only meaningful 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 schema already documents index, query, confirm, schedule and expect_subject in detail. The description restates the index/query pairing and the confirm requirement but adds little syntax or meaning beyond what the schema fields already say.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Send an existing draft') and anchors it to the gmail.drafts listing, so an agent knows where the target comes from. It never explicitly contrasts itself with the sibling gmail_send (new message vs. existing draft), leaving that distinction to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 concrete operational guidance: confirm=true is mandatory, schedule defers instead of sending now, and it explicitly warns to check gmail.list folder='sent' before any retry. Missing only an explicit statement of when to choose this over gmail_send.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_set_signatureA
Set the mobile signature added to mail sent from the phone ('' removes it).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Signature text (any Unicode, newlines allowed); empty string = no mobile signature. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the key traits: this is a mutation, it only affects mobile-originated mail, and an empty string removes the signature. It says nothing about persistence, which account/profile is modified, or whether the change propagates to existing drafts.
Agents need to know what a tool does to the 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 short sentence, front-loaded with the action and scoped resource, with the removal case in a compact parenthetical. Nothing extraneous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers scope (mobile only) and the clearing case, which is what an agent needs to call it correctly. Only the target account and persistence behavior are left unstated, both minor here.
Complex tools with many parameters or behaviors need more documentation. 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 states 'any Unicode, newlines allowed; empty string = no mobile signature'. The description's '("" removes it)' restates that fact rather than adding new syntax or format detail, so 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?
Names a specific verb+resource ('Set the mobile signature') and narrows the scope to signatures on mail sent from the phone, which separates it operationally from the desktop/web signature. It doesn't explicitly name the read-side sibling gmail_signature, so differentiation is implicit 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?
Usage is only implied: the parenthetical shows how to clear the signature, which hints at when the tool applies, but there is no statement of prerequisites (e.g., which account), no when-not guidance, and no reference to gmail_signature for reading the current value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_set_vacationA
Turn the vacation responder (out-of-office auto-reply) on or off and set its dates and text.
While on, Gmail answers incoming mail automatically (outward-facing: needs confirm). Fields left out keep their current value. The result is the state read back from the screen.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| enabled | Yes | true = auto-reply on, false = off. | |
| message | No | Text of the auto-reply (any Unicode, newlines allowed). | |
| subject | No | Subject of the auto-reply. | |
| last_day | No | Last day, YYYY-MM-DD, or 'none' for no end date. | |
| first_day | No | First day, YYYY-MM-DD. | |
| domain_only | No | Only answer people of the account's organization (Workspace accounts). | |
| contacts_only | No | Only answer people in the account's contacts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and largely meets it: it discloses that enabling causes Gmail to auto-answer incoming mail (a real outward-facing side effect), requires confirm=true, and that the return value is the state read back from the screen. It stops short of saying how soon the responder takes effect or whether existing pending mail is answered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with what the tool does, then side effects, then the confirm precondition — good ordering. The only waste is the duplicated confirm message ('outward-facing: needs confirm' followed by 'Requires confirm=true (outward-facing or destructive)'), which repeats the same fact twice.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an 8-param, no-annotation, no-output-schema mutation tool, the description covers the gaps that matter: the real-world side effect, the safety precondition, partial-update behavior, and what the call returns. An agent can invoke this correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds genuinely additive semantics: fields left out keep their current value, which defines partial-update behavior for the seven optional params that the schema does not state. This is exactly the kind of cross-parameter rule the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource pair ('Turn the vacation responder ... on or off and set its dates and text') and parenthetically defines the concept as an out-of-office auto-reply. It does not explicitly point at the read-only sibling gmail_vacation, but the 'set' framing makes the divide clear 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?
Explains the activation semantics ('enabled' on/off) and the key operating rule that omitted fields keep their current value, which tells an agent it can do partial updates safely. It states the confirm=true precondition but gives no explicit exclusions or named alternative (e.g. use gmail_vacation to inspect current settings).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_signatureB
Read the mobile signature Gmail adds to mail sent from the phone ('' = none: the web signature is used).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the disclosure burden; the verb 'Read' implies non-mutation, and the '' = none note is useful behavioral context. It does not say how the value is scoped (account, device) or what happens if no mobile signature has ever been set.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single sentence with no padding, but the parenthetical '("" = none: the web signature is used)' is compressed into a form that is hard to parse on first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter read with no output schema needs the description to explain the return value, and it only partly does: '' is explained, but the shape otherwise (the raw signature string) is left implicit.
Complex tools with many parameters or behaviors need more documentation. 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 tool takes zero parameters, which is the automatic baseline of 4; the description adds nothing parameter-wise because there is nothing to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the mobile signature Gmail adds to mail sent from the phone'), which is enough to separate it from the mutating sibling gmail_set_signature. The parenthetical about the empty string muddies an otherwise clear purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to call this versus gmail_set_signature, which is the obvious alternative in the sibling list. The agent must infer that this reads and the sibling writes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_snoozeA
Snooze conversations until a preset moment or a chosen date and time (gmail.unsnooze reverts).
Gmail offers only the presets that make sense now (e.g. no 'later_today' in the evening); an unavailable preset fails with not_found listing the available ones.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| date | No | For preset=custom (or implied when given): day as YYYY-MM-DD. | |
| time | No | For custom: 'HH:MM' (24h) or morning / afternoon / evening (default morning). | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| preset | No | later_today, tomorrow, this_weekend, next_week, next_weekend, or custom (needs date). | tomorrow |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses a genuinely non-obvious behavioral trait: only presets valid at the current time are offered, and an unavailable preset fails with not_found listing available options. It also notes that gmail_unsnooze reverts the action. It does not describe the full side effect of snoozing (e.g. removal from inbox until the snooze expires), so it falls short of completely transparent for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by an important caveat. Every sentence earns its place and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a ten-parameter action tool with no annotations and no output schema, the description covers purpose, the undo alternative, and the critical preset-availability failure behavior. The selection parameters are fully documented in the schema, so the description is nearly complete; it could mention the return behavior or the conversation's temporary disappearance, but not critically so.
Complex tools with many parameters or behaviors need more documentation. 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 ten parameters, including enum values and defaults. The description adds context about preset availability but no additional parameter-level semantics beyond what the schema provides, making the baseline 3 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?
States a specific verb and resource: snoozing conversations until a preset or custom date/time. It also names the sibling gmail_unsnooze as the reversion mechanism, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to snooze and explicitly points to gmail_unsnooze for reverting. It stops short of spelling out when not to use this tool versus other Gmail actions, but the context and alternative are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_spamA
Report conversations as spam (moved to Spam; the report is sent to Google).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that conversations are moved to Spam and that a report is sent to Google, plus the confirmation requirement. It does not mention reversibility, permission requirements, or effects on sender reputation.
Agents need to know what a tool does to the 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 with no waste. The core action and outcome are front-loaded, and the confirmation requirement follows 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?
For a mutation tool with no annotations and no output schema, the description covers the essential effect and safety prerequisite. It leaves out reversibility and permission details, but the rich schema covers selection mechanics fully, making this largely 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 the schema already documents all eight selection parameters in detail. The description only echoes the confirm parameter's purpose, adding the rationale that the action is outward-facing/destructive, which is marginally helpful but does not add new selection semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Report conversations as spam,' and clarifies the outcome ('moved to Spam'). It is clearly distinct from siblings like gmail_not_spam or gmail_report_phishing, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the required prerequisite ('Requires confirm=true') and labels the action as outward-facing or destructive, which implies cautious use. However, it gives no explicit guidance on when to choose this over gmail_trash, gmail_block_sender, or gmail_report_phishing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_starC
Star conversations.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the whole burden, and it discloses nothing: not idempotency, not reversibility (gmail_unstar exists), not what happens when no target parameter is supplied despite zero required params, and not whether starring affects only the selected rows or the whole thread.
Agents need to know what a tool does to the 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 words are technically waste-free but represent under-specification rather than conciseness. There is no front-loaded context, no scope, and nothing for the agent to anchor on.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A mutation tool with 7 parameters, zero required fields, no annotations and no output schema demands far more than a two-word description. An agent cannot tell from this text what must be supplied to select conversations or what the outcome 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?
Schema description coverage is 100%, and the seven selection parameters (all, index, indexes, match, query, folder, max_rows) are thoroughly documented in the schema itself. The description adds no additional selection semantics, so 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?
"Star conversations" gives a recognizable verb and resource, so the action is identifiable. But with siblings gmail_unstar, gmail_important and gmail_not_important present, the description makes no attempt to distinguish starring from those closely-related actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 statement of when to use this versus gmail_important, gmail_label, or gmail_unstar. Nothing about required selection context, though the schema hints a target must come from gmail.list/gmail.search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_summarizeB
Summarize a conversation with Gemini in Gmail ('Summarize this email').
Raises gemini_unavailable when the account has no Gemini in Gmail.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index of the conversation (from gmail.list / gmail.search); omit to use the conversation already open. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| timeout | No | Max seconds to wait for the summary. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses the gemini_unavailable error condition, which is real behavioral context an agent can't get elsewhere. It omits other material traits: that this drives the Gmail UI (opening/targeting a conversation), that it can take up to the 120s timeout, and whether the summary replaces or adds to the view.
Agents need to know what a tool does to the 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, front-loaded with the action and followed immediately by the one precondition that matters. Nothing is redundant or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, zero-annotation, output-schema-less tool, the definition leaves gaps: it never says what comes back (summarized text, a screenshot, a UI state change) or that the operation manipulates the live Gmail view. The error disclosure helps, but not enough to be fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (index, query, folder, timeout, expect_subject) is already documented with its interaction rules. The description adds no parameter-level meaning beyond the schema, which is the correct baseline of 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?
States a specific verb and object ('Summarize a conversation with Gemini in Gmail') plus the underlying UI affordance ('Summarize this email'), so the agent knows exactly which action is triggered. It does not, however, distinguish itself from the sibling gmail_gemini, which plausibly covers the same Gemini-in-Gmail surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only conditional given is a failure mode ('Raises gemini_unavailable when the account has no Gemini in Gmail'), not a when-to-use rule. Nothing says when to summarize versus simply reading the thread with gmail_read, or how this differs from gmail_gemini.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_trashA
Delete conversations (move them to the Trash; gmail.restore or gmail.undo bring them back).
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does disclose the key traits: the operation is non-destructive in practice (Trash), reversible via gmail.restore/gmail.undo, and gated by confirm=true. What it omits is batch behavior — whether a bare call with no selector targets everything — which matters given the `all` parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no waste, and the most important fact — this is a Trash move, not a permanent delete — is front-loaded in the parenthetical before the precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 destructive-category tool with no annotations and no output schema, the description covers reversibility and the confirm gate, which are the two things an agent most needs. It leaves the selection-mode interaction (`all` vs `index`/`indexes`/`match`) entirely to the schema, which is acceptable at 100% 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 description coverage is 100% across all 8 parameters, so the schema already explains `all`, `index`, `match`, `query`, `folder`, `indexes`, and `max_rows`. The description's only parameter-level contribution is restating the confirm requirement, 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?
"Delete conversations (move them to the Trash)" gives a specific verb plus resource and immediately disambiguates the kind of delete — soft/trash, not permanent. It does not name gmail_delete_forever as the sibling for irreversible removal, but naming gmail_restore/gmail_undo establishes the reversibility boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 a hard precondition ("Requires confirm=true"), which is genuinely useful invocation guidance. However, it never says when to choose this over gmail_archive, gmail_spam, or gmail_delete_forever — the selection logic is only implied by "move them to the Trash."
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unblock_senderB
Unblock the sender of a message (banner 'Unblock sender' or message menu > Unblock).
A sender that is not blocked is left alone (was_blocked=false).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| stay_open | No | Leave the conversation open on screen. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| message_index | No | Message of the thread (0 = oldest, numbering of gmail.read); default the last. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses idempotent behavior: an unblocked sender is left alone and reports was_blocked=false. However, for a mutation tool it omits permissions, reversibility, and side effects on folder or thread state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the verb and resource. The parenthetical UI hint earns its place by locating the action, and the idempotency note is brief and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation with no annotations and no output schema, the description covers the core no-op outcome and UI entry point. It remains thin on permission/auth requirements and how the operation interacts with thread or folder placement, though the schema handles targeting fully.
Complex tools with many parameters or behaviors need more documentation. 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 7 parameters. The description adds no additional meaning for index, query, folder, stay_open, keep_unread, message_index, or expect_subject beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Unblock the sender of a message,' and the UI path reinforces that this is the Gmail unblock action. It does not explicitly name gmail_block_sender as the counterpart, so sibling differentiation is implied by the operation rather than spelled out.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains where the action appears in the UI and notes the no-op case, but gives no guidance on when to use this rather than gmail_block_sender, gmail_not_spam, or other message actions. There are no prerequisites, exclusions, or decision criteria for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_undoA
Undo the last Gmail action: tap 'Undo' on its snackbar if still shown, else revert it.
After gmail.send / reply / forward / send_draft it recalls the mail while Gmail still shows 'Undo' (about 7 s after 'Sent'; the send result's undo_available says whether it still did): undone='send' only when the message is back in Drafts and not in Outbox / Sent. Later it fails (not_found, the mail was sent). To be sure to recall a send, use gmail.send undo=true.
Reverting runs the opposite action on the same conversations (found again by subject): archive/trash/spam -> back to the Inbox, star <-> unstar, read <-> unread, label add <-> remove, mute -> unmute, snooze -> unsnooze, move -> move back (when it was done from a folder list).
| Name | Required | Description | Default |
|---|---|---|---|
| max_age_s | No | Only revert a recorded action at most this many seconds old. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden and does so: it discloses the ~7 s snackbar window, the undo_available signal on send results, the meaning of undone='send', the not_found failure mode, and a mapping of which actions are reversible and to what they revert. An agent knows exactly what gets changed and when it will fail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and mechanism, and the reversible-action list is compact. It is somewhat dense with parenthetical detail and could be trimmed slightly, but nearly every sentence adds operational 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?
With no annotations and no output schema, the description covers the behavior, timing window, success/failure signals, alternatives, and the full set of reversible actions. Nothing an agent needs to invoke it 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 coverage is 100% and max_age_s is already documented in the schema as a seconds-based age limit. The description adds useful timing context (7 s snackbar, recorded action age) but does not define max_age_s or its relationship to the hard 7 s window beyond implication. Baseline 3 is appropriate when the schema does the parameter-level work.
Input schemas describe structure but not intent. Descriptions should explain 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 ('Undo the last Gmail action') plus the mechanism ('tap Undo on its snackbar ... else revert it'). It clearly distinguishes itself from sibling operations like gmail_restore, gmail_unsnooze, and gmail_unstar, which are single-purpose reverters, by naming the combined snackbar-revert 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?
Explicitly names the triggering tools (gmail.send / reply / forward / send_draft) and the condition (about 7 s after 'Sent', while undo_available says it is still shown). It also gives an alternative for guaranteed recall ('use gmail.send undo=true') and states what happens later ('it fails (not_found, the mail was sent)').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unmuteA
Unmute conversations (e.g. query='is:muted'); they stay archived (use gmail.restore for the Inbox).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It valuably states the post-condition — conversations stay archived after unmuting — which is a non-obvious side effect and the main source of agent error. It says nothing about permissions, whether the change is reversible (gmail_mute exists, but that isn't linked), or what happens to conversations when no selector is given.
Agents need to know what a tool does to the 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 pair with zero filler: the action and its post-condition come first, the sibling redirect comes second. Nothing is repeated from the schema and nothing could be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 stateless action tool with no output schema, the essentials are covered: purpose, the state outcome, and the alternative for Inbox restoration, while the rich 100%-documented schema handles selection mechanics. What is missing is only a note on the failure mode when no selector is provided, which 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 coverage is 100%, so all 7 parameters (all/index/indexes/match/query/folder/max_rows) are already documented in the schema; baseline is 3. The description adds one genuinely useful semantic detail — the `is:muted` query value that enumerates the target set — but leaves the index-vs-query-vs-match selection choice entirely to 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?
States a specific verb and resource — unmute conversations — and disambiguates from the adjacent `gmail_mute` and `gmail_restore` siblings by naming the restore alternative for Inbox delivery. An agent can tell exactly what this does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete entry point (`query='is:muted'`) and an explicit routing rule — use gmail.restore when the goal is to bring mail back to the Inbox rather than merely unmute. Missing only an explicit statement that muting/unmuting is independent of archival state in general, but the key when-to-use signal is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unread_countB
Number of unread conversations in a folder or label, as shown in the Gmail drawer.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Folder or label name ('inbox' = the inbox / Primary tab). | inbox |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies the operation is read-only and reflects Gmail drawer state, but does not disclose return type, prerequisites, or whether the count is cached or real-time.
Agents need to know what a tool does to the 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 that wastes no words. The core action and scope are immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only count tool with full schema coverage and no output schema, the description is nearly complete. It conveys the return value implicitly but could explicitly state that it returns an integer count.
Complex tools with many parameters or behaviors need more documentation. 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 parameter is fully documented in the schema. The description adds no semantics beyond what the schema already provides (folder/label).
Input schemas describe structure but not intent. Descriptions should explain 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 resource (unread conversations) and scope (folder or label). It distinguishes itself from list/search siblings by focusing on a count, but does not explicitly name 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?
Provides no guidance on when to use this tool versus alternatives like gmail_list or gmail_search. The description is a bare statement of purpose with no context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unsnoozeA
Unsnooze conversations: they return to the Inbox now (default list: the Snoozed folder).
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | Snoozed |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the core outcome (conversations return to the Inbox now) and the default source list, but does not mention that this is a mutating action, whether it can be undone (e.g., via gmail_undo), or how selections using query/folder behave.
Agents need to know what a tool does to the 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 that states the action, the effect, and the default context with zero filler. 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 7-parameter tool with no annotations and no output schema, the description is quite thin. It covers the essential effect but leaves behavioral details (mutation/undo semantics, selection behavior) to be inferred, which is a moderate gap even though the schema fully documents the 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 schema already documents every parameter thoroughly. The description adds only that the default list is the Snoozed folder, which aligns with the folder parameter's default but does not materially extend parameter 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 states a specific verb and resource ('Unsnooze conversations') and the resulting effect ('they return to the Inbox now'), which is clearer than a tautology. It does not explicitly contrast with the sibling gmail_snooze, but the action is unambiguous on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'default list: the Snoozed folder' implies the appropriate context (act on snoozed conversations), but it gives no explicit when-to-use versus alternatives like gmail_restore or gmail_move. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unstarC
Remove the star from conversations.
| Name | Required | Description | Default |
|---|---|---|---|
| all | No | Act on EVERY conversation of the query/folder list (Gmail's 'Select all' after loading the whole list; repeated until the list is empty for actions that remove conversations from it). Needs query or folder; no index/indexes/match. | |
| index | No | Row index from gmail.list / gmail.search (0 = first row). | |
| match | No | Select every row whose subject contains this text (case-insensitive). | |
| query | No | Run this Gmail search first and take the rows from its results. | |
| folder | No | Open this folder/label first and take the rows from it. | |
| indexes | No | Several row indexes (multi-selection). | |
| max_rows | No | With match, look at most at this many rows from the top. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full disclosure burden and provides almost none: it doesn't say the change is reversible, whether it operates on one or many conversations, or whether a prior gmail.list/gmail.search is required to supply indexes. Only the bare implication of a star-removing mutation comes through.
Agents need to know what a tool does to the 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 zero filler. It is efficient, though its brevity is arguably under-specification rather than disciplined concision, which is penalized in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A tool with seven optional parameters, no required inputs, no annotations, and no output schema gets one sentence with no explanation of selection modes or prerequisites. An agent cannot determine from the description how to target the right conversations.
Complex tools with many parameters or behaviors need more documentation. 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 of the seven selection parameters (all, index, indexes, match, query, folder, max_rows) is already well documented in the schema. The description adds nothing beyond the plural 'conversations', so 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?
States a specific verb ('remove the star') and resource ('conversations'), which cleanly mirrors the sibling gmail_star. It does not explicitly name gmail_star as the inverse, but the operation is unambiguous from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 and no mention of alternatives such as gmail_star or gmail_important. Critically, it never explains that a conversation must be selected via index/indexes/match/query/folder/all, which is the central decision the agent must make before invoking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_unsubscribeA
Unsubscribe from a mailing list / newsletter with Gmail's own Unsubscribe (outward, irreversible).
Gmail offers it only for messages with a recognised unsubscribe header; otherwise the op fails with not_found and lists the available actions.
Requires confirm=true (outward-facing or destructive).
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Row index from gmail.list / gmail.search; omit to use the open conversation. | |
| query | No | Run this Gmail search first and take `index` from its results. | |
| folder | No | Open this folder/label first and take `index` from it. | |
| confirm | No | Must be true: this action is outward-facing or destructive. | |
| keep_unread | No | If the conversation was unread, mark it unread again afterwards. | |
| message_index | No | Message of the thread (0 = oldest, numbering of gmail.read); default the last. | |
| expect_subject | No | Safety check: the conversation's subject must contain this text (case-insensitive), otherwise nothing is done (not_found). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the load and does so well: it discloses that the effect is outward-facing and irreversible, states the confirm=true requirement, and describes the not_found failure mode. It doesn't say what happens to the message afterwards (archived, labelled, left in place), which is the main remaining behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences: purpose and risk first, precondition second, confirmation requirement last. No padding or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter destructive action with no annotations and no output schema, the description covers the two things an agent most needs: the confirm gate and the not_found behavior. Missing only the post-action effect and whether the operation is scoped to the whole thread versus a single message.
Complex tools with many parameters or behaviors need more documentation. 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 seven parameters including index/query/folder, message_index, and expect_subject are already self-documenting; the description only reinforces the confirm=true gate that the schema also states. Baseline 3 applies since the description adds no new 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?
States a specific verb and resource ('Unsubscribe from a mailing list / newsletter') and scopes it to 'Gmail's own Unsubscribe', which separates it from sibling mutators like gmail_block_sender, gmail_trash, or gmail_mute without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear precondition for use: only messages with a recognised unsubscribe header qualify, otherwise the op fails with not_found and lists available actions. It stops short of naming alternatives such as gmail_block_sender for lists that lack the header, so the routing guidance is contextual rather than exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gmail_vacationA
Read the vacation responder (out-of-office auto-reply): on/off, first/last day, subject, message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. 'Read' signals a non-mutating operation and the field list clarifies what is retrieved, but permissions, error behavior, and confirmation that no settings are changed are not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence, front-loaded with the key action and followed by the returned fields. Every part earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description provides the essential return contents by listing on/off, dates, subject, and message. It is nearly complete, though it omits account/permission context that could matter for Gmail vacation settings.
Complex tools with many parameters or behaviors need more documentation. 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 tool has zero parameters, so parameter semantics receive the baseline 4. There is no parameter information to add, and the empty schema is consistent with the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('vacation responder') and enumerates the exact fields returned: on/off, first/last day, subject, and message. The read-only framing also implicitly distinguishes it from the sibling gmail_set_vacation, which handles changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Read the vacation responder': call it when current out-of-office settings are needed. However, there is no explicit when-to-use guidance, no exclusion criteria, and no direct routing to gmail_set_vacation for modifying the responder.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_list_opsA
List every available operation with its parameters (JSON schema).
| Name | Required | Description | Default |
|---|---|---|---|
| app | No | Only operations of this app (device, ui, gmail, calendar, drive, ...). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that the result includes each operation's parameters as a JSON schema, but it does not discuss safety, side effects, rate limits, or pagination. For a read-only catalog tool this is adequate, though 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?
One front-loaded sentence with zero waste; it directly states what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 meta-listing tool with one optional filter and no output schema, the description says enough: it identifies the catalog output and the inclusion of parameter schemas. It could be slightly more complete by noting that the app filter is optional, but that is already covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single optional `app` parameter is already fully documented in the schema. The description does not add any parameter semantics beyond that 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?
States a specific verb and resource: list every available operation with its parameters and JSON schema. This clearly distinguishes the tool from the many sibling operation tools, which perform actions rather than catalog them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies discovery usage but gives no explicit when-to-use guidance, no when-not-to-use conditions, and no alternatives. An agent must infer that this is a catalog/discovery tool rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_double_tapA
Double-tap by coordinates or on the first element matching a selector (e.g. zoom in an image or PDF preview). Without the on-phone server a slow phone may see two single taps.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate (with y). | |
| y | No | Y coordinate (with x). | |
| rid | No | Resource id (full or after '/'). | |
| desc | No | Exact content description (accessibility label). | |
| text | No | Exact text. | |
| timeout | No | Seconds to wait for the element. | |
| label_re | No | Regex on text or description. | |
| desc_contains | No | Substring of the content description. | |
| text_contains | No | Case-insensitive substring of the text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses a meaningful caveat—without the on-phone server a slow phone may interpret the action as two single taps—but it does not describe side effects, permissions, or response behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loads the primary action and targeting modes, and adds a relevant limitation without unnecessary detail. Every sentence contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter optional UI action with full schema coverage and no output schema, the description is mostly complete: it explains the two targeting approaches and first-match behavior. A minor gap is that it does not clarify how the selector parameters interact or which takes precedence.
Complex tools with many parameters or behaviors need more documentation. 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 per-parameter schema already documents all nine parameters. The description only adds that coordinates or a first-match selector may be used, without clarifying precedence or combinations among rid, desc, text, label_re, desc_contains, and text_contains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 (double-tap) and two targeting modes: coordinates or the first element matching a selector. It adds a concrete example (zoom in an image or PDF preview), though it does not explicitly distinguish itself from the sibling ui_tap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 through the zoom example and the coordinate/selector targeting methods, but there is no explicit guidance on when to choose this over ui_tap or how to choose among the many optional selector parameters. The caveat about slow phones is useful context but not a when-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_dumpB
Describe the current screen: foreground app and visible elements (text, desc, id, bounds, flags).
| Name | Required | Description | Default |
|---|---|---|---|
| raw | No | Return the raw uiautomator XML instead. | |
| all_nodes | No | Include layout nodes without text/desc that are not clickable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only inspection operation, but does not explicitly state that it has no side effects, what permissions are needed, whether output is truncated for large screens, or how it behaves on inaccessible screens.
Agents need to know what a tool does to the 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 that is front-loaded with the core action and immediately lists the returned information. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter read tool with a fully documented schema, the description is nearly complete: it identifies the resource and lists the main returned fields. It could be stronger by mentioning how it relates to ui_screenshot/ui_find, but the core inspection purpose 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 both parameters (raw and all_nodes) are already well documented in the schema. The description does not add parameter-level meaning beyond the schema, which is acceptable given the high 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 states a specific verb and resource: describing the current screen, including foreground app and visible element fields. It is clearly distinct from action siblings like ui_tap or ui_scroll, though it does not explicitly contrast itself with ui_screenshot or ui_find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 ui_screenshot or ui_find. The agent must infer that this is for semantic/structural screen inspection rather than image capture or element search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_findC
Find elements on screen matching a selector (optionally wait up to timeout seconds).
| Name | Required | Description | Default |
|---|---|---|---|
| rid | No | Resource id. | |
| desc | No | Exact content description. | |
| text | No | Exact text. | |
| timeout | No | Seconds to wait for at least one match. | |
| label_re | No | Regex on text or description. | |
| desc_contains | No | Substring of the content description. | |
| text_contains | No | Substring of the text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses optional waiting, but not whether the operation is read-only, what happens on no match, or what the return value looks like.
Agents need to know what a tool does to the 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 wasted text. It states the core purpose and optional timeout 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?
No output schema exists, so the description should explain return behavior, match multiplicity, and selector semantics. It leaves these important details unspecified for a 7-parameter find 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 parameter meanings are already documented in the schema. The description only mentions timeout, adding no selector-combination 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?
States a specific verb+resource: find elements on screen matching a selector. Clear enough to distinguish from action tools like ui_tap, but it does not explicitly differentiate itself from ui_dump or ui_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 versus alternatives such as ui_dump, ui_wait, or ui_screenshot. The timeout mention is behavioral, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_global_actionA
Perform a system action like the navigation buttons or the status bar do.
lock_screen turns the screen off and locks the phone (the next UI op unlocks it); take_screenshot saves an image in the phone's gallery (prefer ui.screenshot); power_dialog needs the on-phone server.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | back, home, recents, notifications, quick_settings, power_dialog, lock_screen or take_screenshot. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and delivers meaningful side-effect disclosure: lock_screen turns off and locks the phone (with the recovery path that the next UI op unlocks it), take_screenshot writes to the gallery, and power_dialog has an infrastructure prerequisite. Gaps remain for the other five actions, whose on-screen state effects are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in a single sentence, then the caveats are grouped by action with semicolons. The line-broken formatting is slightly awkward but every sentence adds information; nothing is 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?
For a single required enum parameter with no output schema and no annotations, the description covers the surprising cases and prerequisites well. It would be fully complete with a note on what notifications/quick_settings actually do (toggle vs open panel) and whether any action alters persistent state.
Complex tools with many parameters or behaviors need more documentation. 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%, but the schema enum merely lists the values, so the description's per-value notes for lock_screen, take_screenshot, and power_dialog add genuine semantics the schema lacks. The remaining values (back, home, recents, notifications, quick_settings) are left to inference, which keeps it below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: 'perform a system action like the navigation buttons or the status bar do', which frames it as global device-level actions rather than in-app gestures. The enum plus the named special cases make it distinct from ui_tap/ui_swipe, though it doesn't explicitly contrast against ui_key or device_sleep.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 through the special-case notes: 'prefer ui.screenshot' explicitly routes the screenshot case to a sibling, and the power_dialog server requirement is stated. However, no guidance is given for when to use back/home/recents versus ui_key or when notifications/quick_settings should be triggered from this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_keyA
Press a key: BACK, HOME, ENTER, APP_SWITCH, DEL, TAB, DPAD_DOWN, MENU, SEARCH, or any KEYCODE_*.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Key name or numeric keycode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It lists valid values but says nothing about whether a device must be connected/unlocked, whether the key goes to the foreground app, or whether the call returns or blocks.
Agents need to know what a tool does to the 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 the verb front-loaded and the value domain immediately after; nothing is wasted or buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter input tool with no output schema and no annotations, the description covers what the tool does and what values are legal. The remaining gap is environmental context (device/foreground requirements) and sibling disambiguation, which are minor but real.
Complex tools with many parameters or behaviors need more documentation. 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 already describes the single parameter, so the baseline would be 3. The description goes beyond it by enumerating concrete accepted key names and the KEYCODE_* fallback, which is real value since the schema declares no enums.
Input schemas describe structure but not intent. Descriptions should explain 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 concrete verb ('Press') and resource ('a key') and enumerates the accepted key names, so the action is unmistakable. It does not distinguish itself from siblings such as ui_tap, ui_type, or ui_global_action, which could plausibly overlap for input events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the enumerated key names (navigation keys, DPAD, KEYCODE_*), suggesting hardware-key navigation rather than text entry. There is no explicit when-to-use statement, no exclusion of ui_tap/ui_type, and no prerequisite such as an app being in the foreground.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_screenshotB
Save a PNG screenshot of the phone screen on this computer (look at it to see the UI).
| Name | Required | Description | Default |
|---|---|---|---|
| local_path | No | Where to save it; default under the downloads dir. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden, yet it says nothing about required device state (unlocked, app running), failure modes, permissions, or what the call returns beyond the file. For a tool that has a sibling device_unlock, the missing precondition about screen state is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the action and location front-loaded and zero filler; the parenthetical adds a use hint rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the agent gets the deliverable but not the prerequisites: whether the device must be connected/unlocked, what happens if the screen is off, or the return value. Adequate but clearly short of complete for a device-dependent 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% and the single parameter's description ('Where to save it; default under the downloads dir') already explains the default. The description adds only the 'on this computer' framing, 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 names a concrete verb (save) and resource (PNG screenshot of the phone screen) plus a location, so the agent knows exactly what the call produces. It implicitly distinguishes itself from UI-interaction siblings like ui_tap or ui_scroll, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The parenthetical 'look at it to see the UI' implies the intended use—visual inspection of the current screen—but it never states when to prefer this over ui_dump or ui_find for examining the UI, nor any preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_scrollA
Scroll the main content ('down' shows what is below, 'up' goes back toward the top).
| Name | Required | Description | Default |
|---|---|---|---|
| times | No | Number of swipes. | |
| amount | No | Fraction of the scroll area per swipe (0.1-0.9). | |
| direction | No | down, up, left or right. | down |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does add genuinely useful semantics by defining what 'down' and 'up' mean relative to the page, but it says nothing about whether the action blocks or settles before returning, what happens when a scroll limit is reached, or whether any feedback is 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?
A single front-loaded sentence with the verb and resource first and the clarifying parenthetical after. No filler text, and the direction semantics come before any agent would need to consult the enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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, all three parameters are optional with defaults fully documented in the schema, and no output schema exists to explain. The description is nearly sufficient; only post-scroll observability (e.g. taking a screenshot to confirm movement) is left implicit.
Complex tools with many parameters or behaviors need more documentation. 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 baseline would be 3, but the description adds meaning the schema lacks by explaining the direction enum in terms of viewport behavior ('down' shows what is below, 'up' goes back toward the top). It leaves 'left'/'right' and the times/amount parameters to 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?
States a specific verb (scroll) and the target resource (the main content), and clarifies what the two primary directions mean. It does not explicitly name the nearest sibling (ui_swipe) or explain how this differs from a raw gesture, so differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'main content' — this is the scroll to use for the page body rather than a pane — but there is no explicit when-to-use versus ui_swipe, ui_dump, or gmail_scroll, and no guidance on needing a screenshot afterward to observe the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_swipeC
Raw swipe gesture between two points.
| Name | Required | Description | Default |
|---|---|---|---|
| x1 | Yes | Start X. | |
| x2 | Yes | End X. | |
| y1 | Yes | Start Y. | |
| y2 | Yes | End Y. | |
| duration_ms | No | Gesture duration. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and discloses almost nothing beyond the gesture existing — not whether it blocks, whether it changes UI state, how duration affects the swipe, or whether the device must be unlocked. 'Raw' hints that no path smoothing or targeting is applied, which is a small piece of the picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single front-loaded sentence with no waste, but the terseness shades into under-specification rather than genuine economy — one more clause on coordinate space or the ui_scroll alternative would have cost little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter device-input primitive with no annotations and no output schema, the description omits the essentials an agent needs: coordinate reference frame, whether duration changes gesture velocity, blocking behaviour, and required device state.
Complex tools with many parameters or behaviors need more documentation. 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 five parameters, and the description adds no coordinate-space, unit, or duration semantics beyond what is there. Baseline 3 applies when 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 states a specific verb and resource: a 'swipe gesture between two points', with 'raw' signalling a low-level primitive. It is clear what the tool performs, but it never names ui_scroll or ui_tap to say how it differs from the higher-level gesture 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?
There is no statement of when to reach for this instead of ui_scroll, ui_tap or ui_double_tap, and no preconditions (foreground app, device connected). The word 'raw' weakly implies 'use when you need exact coordinates', but nothing is explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_tapB
Tap by coordinates, or tap the first element matching a selector (waits for it).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate (with y). | |
| y | No | Y coordinate (with x). | |
| rid | No | Resource id (full or after '/'). | |
| desc | No | Exact content description (accessibility label). | |
| long | No | Long-press instead of tap. | |
| text | No | Exact text. | |
| timeout | No | Seconds to wait for the element. | |
| label_re | No | Regex on text or description. | |
| desc_contains | No | Substring of the content description. | |
| text_contains | No | Case-insensitive substring of the text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that selector-based tapping waits for the element and uses the first match, but it does not cover failure behavior, timeout outcomes, permissions, return values, or how multiple selector parameters interact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted wording. It is efficient, though its brevity leaves important operational details unstated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 UI action tool with ten parameters, no annotations, and no output schema, the description is too thin. It omits selector precedence, coordinate-space expectations, timeout/failure behavior, and return semantics, leaving significant gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all ten parameters are documented in the schema. The description adds only the selector-wait behavior and otherwise does not go beyond the schema's parameter explanations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious 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 two invocation modes: tapping by coordinates or tapping the first element matching a selector. It is clear what the tool does, but it does not explicitly differentiate from nearby siblings such as ui_double_tap or ui_find.
Agents choose between tools based on descriptions. A clear purpose with a specific verb 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 two usage paths: coordinate tapping and selector-based tapping with waiting. However, it gives no explicit guidance on when to prefer this over ui_find, ui_double_tap, ui_wait, or other UI interaction tools, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_typeB
Type text into the focused field.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to type (any Unicode through the on-phone server; ASCII only without it). | |
| clear | No | Clear the field first. | |
| enter | No | Press Enter afterwards. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden and does a single bare sentence: it does not say whether typing appends to or replaces existing content, what happens if no field is focused, or what the response looks like. For a device-mutating UI action with zero annotation coverage, that is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and target appear immediately. Nothing is padded or restated from 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?
For a 3-parameter input tool with no annotations and no output schema, the description leaves out failure modes, focus prerequisites, and how typing interacts with the clear/enter flags. The schema covers parameters, but the behavioral envelope of a UI device action remains undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (text, clear, enter) are already documented in the schema, including the Unicode caveat. The description adds nothing beyond the schema, which is the expected baseline when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain 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 (type) and target (focused field), making the action unambiguous. However, it never distinguishes itself from the sibling ui_key or clarifies the relationship to ui_tap, which an agent would need when deciding how to enter text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Focused field" implies the precondition that a field must already have focus, so the agent can infer tapping first. But there is no explicit when-to-use guidance, no mention of when to prefer ui_key for special keys, and no note on when clear/enter should be set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ui_waitB
Wait until an element appears (or disappears with gone=true).
| Name | Required | Description | Default |
|---|---|---|---|
| rid | No | Resource id. | |
| desc | No | Exact content description. | |
| gone | No | Wait for disappearance instead. | |
| text | No | Exact text. | |
| timeout | No | Seconds. | |
| label_re | No | Regex on text or description. | |
| desc_contains | No | Substring of the content description. | |
| text_contains | No | Substring of the text. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It describes the core wait condition but omits important behavior such as what happens on timeout, whether the tool blocks, and what it returns or raises when the element never appears.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The condition and the gone variant are stated immediately, and every clause contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. 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 an 8-parameter wait tool with no annotations and no output schema, the description is quite thin. It leaves out timeout semantics, failure behavior, and return-value information that an agent would need to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. 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 is already documented in the schema. The description restates the gone=true behavior, which is useful but does not add much beyond the schema's own explanation; 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?
States a specific verb and resource: wait until an element appears, with an explicit disappearance variant via gone=true. It is clear what the tool does, though it does not distinguish itself from the sibling ui_find tool, which likely serves a similar UI-element-location purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this when you need to wait for an element to appear or disappear. It does not explicitly say when to prefer ui_wait over ui_find, ui_screenshot, or other UI inspection tools, so the guidance remains implicit.
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.
156 tool updates
v0.1.0- First observed
app_intent - First observed
app_launch - First observed
app_stop - First observed
calendar_add_meet - First observed
calendar_attendee_add - First observed
calendar_attendee_remove - First observed
calendar_calendars - First observed
calendar_create - First observed
calendar_delete - First observed
calendar_delete_special - First observed
calendar_events - First observed
calendar_focus_time - First observed
calendar_free_busy - First observed
calendar_get - First observed
calendar_meet_link - First observed
calendar_next - First observed
calendar_open - First observed
calendar_open_event - First observed
calendar_out_of_office - First observed
calendar_reminder_add - First observed
calendar_reminder_remove - First observed
calendar_remove_meet - First observed
calendar_respond - First observed
calendar_rsvp - First observed
calendar_search - First observed
calendar_set_calendar - First observed
calendar_set_working_location - First observed
calendar_sync - First observed
calendar_sync_background - First observed
calendar_task_complete - First observed
calendar_task_create - First observed
calendar_task_delete - First observed
calendar_task_list_create - First observed
calendar_task_list_delete - First observed
calendar_task_lists - First observed
calendar_task_update - First observed
calendar_tasks - First observed
calendar_update - First observed
calendar_view_screen - First observed
calendar_working_location - First observed
device_accounts - First observed
device_install_adb_keyboard - First observed
device_ls - First observed
device_pull - First observed
device_push - First observed
device_rm - First observed
device_shell - First observed
device_sleep - First observed
device_status - First observed
device_unlock - First observed
drive_cd - First observed
drive_copy - First observed
drive_create_doc - First observed
drive_delete_forever - First observed
drive_download - First observed
drive_empty_trash - First observed
drive_info - First observed
drive_list - First observed
drive_location - First observed
drive_menu - First observed
drive_mkdir - First observed
drive_move - First observed
drive_offline - First observed
drive_open - First observed
drive_read_text - First observed
drive_refresh - First observed
drive_rename - First observed
drive_restore - First observed
drive_search - First observed
drive_set_role - First observed
drive_share - First observed
drive_share_link - First observed
drive_sharing - First observed
drive_sort - First observed
drive_star - First observed
drive_storage - First observed
drive_trash - First observed
drive_unshare - First observed
drive_unstar - First observed
drive_up - First observed
drive_upload - First observed
drive_upload_files - First observed
drive_upload_folder - First observed
drive_view - First observed
gmail_archive - First observed
gmail_attachments - First observed
gmail_back - First observed
gmail_block_sender - First observed
gmail_cancel_scheduled - First observed
gmail_compose_state - First observed
gmail_create_label - First observed
gmail_delete_draft - First observed
gmail_delete_forever - First observed
gmail_delete_label - First observed
gmail_discard - First observed
gmail_download_attachment - First observed
gmail_draft - First observed
gmail_drafts - First observed
gmail_edit_draft - First observed
gmail_empty - First observed
gmail_folders - First observed
gmail_forward - First observed
gmail_gemini - First observed
gmail_important - First observed
gmail_label - First observed
gmail_labels - First observed
gmail_list - First observed
gmail_mark_read - First observed
gmail_mark_unread - First observed
gmail_message_actions - First observed
gmail_move - First observed
gmail_mute - First observed
gmail_not_important - First observed
gmail_not_spam - First observed
gmail_open - First observed
gmail_read - First observed
gmail_refresh - First observed
gmail_rename_label - First observed
gmail_reply - First observed
gmail_reply_all - First observed
gmail_report_phishing - First observed
gmail_restore - First observed
gmail_save_attachment_to_drive - First observed
gmail_scheduled - First observed
gmail_scroll - First observed
gmail_search - First observed
gmail_send - First observed
gmail_send_draft - First observed
gmail_set_signature - First observed
gmail_set_vacation - First observed
gmail_signature - First observed
gmail_snooze - First observed
gmail_spam - First observed
gmail_star - First observed
gmail_summarize - First observed
gmail_trash - First observed
gmail_unblock_sender - First observed
gmail_undo - First observed
gmail_unmute - First observed
gmail_unread_count - First observed
gmail_unsnooze - First observed
gmail_unstar - First observed
gmail_unsubscribe - First observed
gmail_vacation - First observed
meta_list_ops - First observed
ui_double_tap - First observed
ui_dump - First observed
ui_find - First observed
ui_global_action - First observed
ui_key - First observed
ui_screenshot - First observed
ui_scroll - First observed
ui_swipe - First observed
ui_tap - First observed
ui_type - First observed
ui_wait
TDQS
Scored across 156 tools
Tools are grouped by domain and mostly distinct, but many near-neighbors require close reading, such as calendar_respond vs calendar_rsvp, calendar_sync vs calendar_sync_background, gmail_move vs gmail_label, and gmail_delete_forever vs gmail_empty. Descriptions clarify most boundaries, but the large surface creates real misselection risk.
All names use snake_case with a clear domain prefix (calendar_, drive_, gmail_, ui_, device_, app_), giving predictable grouping. The pattern is not strictly verb_noun throughout—several names are noun/state-oriented such as drive_location, gmail_compose_state, and calendar_calendars—but consistency is mostly maintained.
At 156 tools, this is far beyond the well-scoped 3-15 range and exceeds the 50-tool threshold for extreme mismatch. Even though the server spans multiple app domains, the surface is too large to navigate efficiently as a coherent tool set.
Coverage across Gmail, Calendar, Drive, UI automation, and device control is extensive, including CRUD, sharing, labels, drafts, sync, tasks, and escape hatches. No obvious dead ends are apparent; unsupported edge cases can generally be reached through device_shell.
Maintenance
Related MCP Connectors
Cloud Android phones for AI agents: create a phone, read the screen, tap, type, install APKs, park.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
1Real Android phones in the cloud for AI agents: give phones a task in plain words and get the answer
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables full Android control from any AI agent via 7 MCP tools, including screen capture, touch interaction, app management, and system control.25 PyPIMIT
- AlicenseAqualityDmaintenanceDrive an Android phone over ADB and expose it to AI agents via MCP, enabling natural language-driven interaction for native app testing.13MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Android devices via ADB, providing tools for screen capture, tap/swipe/input, app management, and diagnostics. Works locally over USB or WiFi and integrates with MCP clients like Claude and Cursor.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to see and operate a real Android phone over adb by fusing live screenshots with UI-tree data, supporting look, tap, swipe, type, and screenshot actions through any MCP client.4MIT