A fixes release with one new trick: modify_sheet_values can now copy a range the way the Sheets UI does. The rest tightens up behavior that was quietly wrong, including Gmail links opening the wrong account in multi-account browsers, plain-text emails with attachments getting hard-wrapped, calendar time ranges ignoring timezone, and noisy, URL-leaking error logs.
New
- gsheets:
modify_sheet_valuestakessource_rangeandpaste_type(defaultPASTE_NORMAL) to copy a range within a spreadsheet, across tabs too, with formulas shifting and formatting coming along;range_namecan be just the top-left destination cell (#1369) - feat(sheets): copy a range with source_range on modify_sheet_values by @taylorwilsdon in #1369
Fixes
- gcalendar: offset-free date-times like
2026-11-10T09:00:00in out-of-office and focus-time ranges are read in the giventimezoneinstead of being treated as UTC, still falling back to UTC whentimezoneis unset or unknown (#1365) - fix(calendar): honor timezone for offset-free date-times in time range params by @taylorwilsdon in #1365 - gcontacts: URL matching lowercases only the scheme and host, so contact URLs that differ by path or query case are no longer merged and
removedeletes the right one (#1366) - fix(contacts): lowercase only scheme and host when normalizing URLs by @taylorwilsdon in #1366 - gchat:
search_messagesresults includespace_id,message_idandthread_idfor each hit, so a result can be passed straight toget_messageseven when the conversation label is ausers/...ID (#1324) - Include canonical resource IDs in Chat search results by @yavzius in #1324 - gslides:
batch_update_presentationreportsReplaced N occurrence(s)for eachreplaceAllTextrequest instead of a generic completion message (#1362) - fix(gslides): report replaceAllText counts in batch_update_presentation by @ConnorMoss02 in #1362 - gmail: web links address the mailbox by email (
/mail/u/<email>/) rather than/u/0/, so in a browser signed in to several Google accounts they open the account the message actually belongs to (#1356) - fix(gmail): account-specific web links for multi-account browsers by @jorgebaptista in #1356 - gmail: plain-text drafts and sends with attachments get the same HTML alternative as attachment-free messages, so Gmail no longer opens them in plain-text compose and hard-wraps every line at ~76 characters on send (#1360) - fix(gmail): give plain bodies with attachments an HTML alternative by @BlaisedEstais in #1360
- core: a failing Google API call logs one scrubbed ERROR line instead of two tracebacks, one of which exposed the full request URI with its query string; client-facing errors also drop the
Error calling tool 'x':prefix (#1367) - fix(core): log tool API errors once without tracebacks or query strings by @taylorwilsdon in #1367 - gdrive:
create_drive_file,update_drive_fileand theimport_to_google_*tools read this server's own/attachments/<id>links from local storage instead of rejecting them as localhost in the SSRF guard; links on any other origin are still guarded (#1368) - fix(drive): read this server's own /attachments links from storage by @taylorwilsdon in #1368
New Contributors
- @jorgebaptista made their first contribution in #1356
- @BlaisedEstais made their first contribution in #1360
Full Changelog: v2.4.0...v2.4.1