Images come back as real images now: Slides pages and Drive image files are returned as MCP image content the model can see, instead of thumbnail URLs or base64 text. Alongside that, Docs gets heading-addressed edits and color read-back, Contacts gets incremental sync, Gmail gets reply-all and smarter reply subjects, and a broad sweep of input validation and pagination fixes lands across the suite.
Breaking:
get_page_thumbnailis gone fromgslides. Userender_page_to_image, which returns the rendered page as image content.
New
- gslides:
render_page_to_imagereplacesget_page_thumbnailand returns the slide as image content with a requested width, so the model sees the page directly (#1291) - feat(slides)!: replace get_page_thumbnail with render_page_to_image returning image content by @georgebashi in #1291 - gdocs:
modify_doc_textcan target a section byheading(andheading_level) instead of a rawstart_index(#1276) - feat(gdocs): add heading parameter to modify_doc_text for section-addressed edits by @johntrandall in #1276 - gdocs:
get_doc_as_markdowntakes an opt-ininclude_colorsthat annotates colored text runs in the markdown output (#1272) - Add opt-in text color read-back to Google Docs markdown converter by @damiendaemon in #1272 - gcontacts:
list_contactssupports incremental sync viarequest_sync_token/sync_token, returning only what changed since the last call (#1281) - feat(contacts): add optional incremental sync to list_contacts by @addibbi in #1281 - gcalendar:
manage_eventaccepts event colors by name or ID (1-11), validated before the API call; Out-of-Office and Focus Time events now require timezone-aware boundaries (#1288) - enh: calendar colors by @taylorwilsdon in #1288 - gmail:
send_gmail_messagereplies inherit the thread's subject when none is given, andRe:detection sees past[list]/ticket tags so prefixes stop piling up (#1234) - feat(gmail): inherit the parent subject on send replies, tag-aware Re: prefix by @seidnerj in #1234 - core/all services: reply-all for Gmail sends and drafts, multi-page Chat space search, clearing contact addresses with an empty value, consistent validation errors across Calendar/Contacts/Gmail/comments, correct combined row+column resizes in Sheets, Drive search escaping for backslashes and apostrophes, and refreshed bundled skills (#1294) - enh + fix: skills & bugs by @taylorwilsdon in #1294
Fixes
- gdrive:
get_drive_file_contentreturns images as image content and SVGs as markup (with embedded rasters attached) instead of base64 text (#1292) - fix(drive): return images as image content and SVG as markup from get_drive_file_content by @georgebashi in #1292 - gappsscript:
list_script_deploymentsand version listing follownextPageToken, so scripts with many deployments or versions are listed in full (#1286) - fix(gappsscript): read every page in list_script_deployments and version list by @ConnorMoss02 in #1286 - gmail: HTML-to-plain-text conversion separates table cells, so signatures and tabular emails no longer run words together (#1293) - fix(gmail): separate table cells when converting HTML to plain text by @ConnorMoss02 in #1293
- core: streamable-http startup no longer aborts with "port already in use" over the previous server's TIME_WAIT sockets, ending restart crash loops under PM2 (#1282) - fix(server): don't refuse to restart over the old server's TIME_WAIT sockets by @cfdude in #1282
Dependencies
- deps: pypdf and certifi updates, picking up pypdf security hardening (#1284) - chore(deps): bump the uv group across 1 directory with 2 updates by @dependabot[bot] in #1284
- deps: pypdf 6.21.1 (#1289) - chore(deps): bump pypdf from 6.20.1 to 6.21.1 in the uv group across 1 directory by @dependabot[bot] in #1289
New Contributors
- @damiendaemon made their first contribution in #1272
- @addibbi made their first contribution in #1281
Full Changelog: v2.1.2...v2.2.0