This release consolidates the Apps Script toolset into a few action-based tools and adds trigger management. It also adds Sheets smart chips, and hosted servers can now accept Drive uploads without routing file bytes through the model. It also fixes contact name updates, calendar attendee objects, and missing Excel text.
Apps Script
- gappsscript: The Apps Script tools are now consolidated into action-based tools (
get_script_project,manage_script_project,manage_script_content,manage_script_version,get_script_version,list_script_deployments,get_script_activity,manage_script_trigger), which frees up a large share of tool-list space. The old per-operation tools are gone, and project deletion now requests the fulldrivescope. Overhaul Tool Endpoints for Apps Script, Add Script Trigger Management by @taylorwilsdon in #1157 - gappsscript: Installable triggers can now be listed and deleted without opening the editor. A small helper file is provisioned in the project and run through the Execution API, since the REST API has no triggers resource (shipped as
manage_script_triggervia #1157). feat(gappsscript): list and delete Apps Script triggers by @CapitalX in #1122
Sheets & Docs
- gsheets: New
insert_smart_chipstool places Drive file/folder and People chips into a cell or range, andread_sheet_valuescan return chip metadata withinclude_smart_chips. feat(gSheets) Manage “Smart Chips” by @antoine2711 in #1147 - gdocs / gsheets:
create_docandcreate_spreadsheettake an optionalfolder_id, so agents no longer need a second call to move the new file. Optional folder_id argument for creating a document or spreadsheet by @fmgs31 in #1158 - core: Excel text is no longer silently dropped: inline-string cells and Strict Open XML workbooks now extract their labels instead of returning numbers only (or nothing). fix(utils): preserve spreadsheet text fidelity in extract_office_xml_text by @123andy in #1163
Drive & remote deployments
- gdrive / gmail: New
WORKSPACE_MCP_DISABLE_LOCAL_FILESsetting (implied by stateless mode) for hosted servers that can't see the caller's disk. When it is set, tools stop advertisingfile_path, and a local path gets an error that names the routes that do work (URL or inline content). fix(drive,gmail): stop advertising client-side file_path on remote transports; honest boundary errors by @123andy in #1036 - gdrive:
create_drive_file,update_drive_file, and theimport_to_google_*tools acceptreturn_upload_url, which returns a resumable upload URL the clientPUTs to directly. Large and binary files skip the MCP server and the model context entirely. The parameter is offered only whenWORKSPACE_MCP_DISABLE_LOCAL_FILESis set, and upload session creation retries transient failures. feat(drive): optional return_upload_url parameter on the Drive upload tools - no new tools by @123andy in #1160
Gmail, Calendar & Contacts
- gmail:
manage_gmail_labelcan now set the third visibility value,labelShowIfUnread. feat(gmail): let manage_gmail_label set labelShowIfUnread by @ConnorMoss02 in #1165 - gmail / core:
get_gmail_message_contentacceptsformat="metadata"for headers only, matching the batch tool. Tool schemas are also now advertised without null unions orconst, so Gemini clients accept the tool list. Accept format on get_gmail_message_content by @taylorwilsdon in #1172 - gcalendar:
manage_eventcreation accepts attendee objects as well as plain emails, fixing a400 Missing attendee emailerror. fix(gcalendar): normalize attendee objects on event creation (#1145) by @truecallerabreham in #1155 - gcontacts: Updating one part of a contact's name (e.g.
given_name) no longer wipes the family name, middle name, and suffix, in bothmanage_contactandmanage_contacts_batch. Keep unchanged name parts when updating a contact by @taylorwilsdon in #1170
Auth
- auth: New
WORKSPACE_MCP_OAUTH_PROXY_REFRESH_TOKEN_EXPIRY_SECONDSshortens the OAuth 2.1 refresh-token lifetime, and with it how long per-login proxy records sit in storage, which otherwise defaults to a year. It first landed in #1161, was reverted in #1166, and re-landed in #1167.- feat(auth): expose OAuthProxy refresh token expiry as env var by @star67 in #1161
- Revert "feat(auth): expose OAuthProxy refresh token expiry as env var" by @taylorwilsdon in #1166
- feat(auth): expose OAuthProxy refresh token expiry as env varrefac by @taylorwilsdon in #1167
New Contributors
- @star67 made their first contribution in #1161
- @truecallerabreham made their first contribution in #1155
Full Changelog: v1.28.0...v1.29.0