Uh oh!
There was an error while loading. Please reload this page.
feat(integrations): extend Telegram, Outlook, and Notion tool depth - #5265
Conversation
…, reaction, chat-action, and chat-info tools
…d message-update tools
The latest updates on your projects. Learn more about Vercel for GitHub.
|
PR SummaryMedium Risk Overview Notion gains block-child CRUD ( Outlook adds search, reply/reply-all, folder list/create, attachment list/get (with file output), message metadata updates (categories, flag, importance), and reorders copy alongside the new operations in the block UI. Telegram adds edit/forward/copy, location/contact/poll/chat-action sends, pin/unpin/reactions, and Integration copy and usage instructions are updated to reflect the broader capability sets; Telegram docs add example templates for polls and pin/reaction flows. Reviewed by Cursor Bugbot for commit 628f5cd. Configure here. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Greptile SummaryThis PR is Wave 2 of integration tool-depth, adding 36 new tools across Telegram (12), Outlook (8), and Notion (16 including v1/v2 pairs) — all reusing existing auth without new OAuth scopes. Prior review threads raised JSON-coercion and error-masking issues; all have been addressed in follow-up commits (
Confidence Score: 5/5Safe to merge — all 36 new tools reuse existing auth flows, JSON-coercion edge cases raised in prior reviews have been fixed, and the block routing changes are additive and isolated. The tool implementations follow established patterns throughout the codebase: No files require special attention. The Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
subgraph Telegram["Telegram Block (12 new tools)"]
TG_OP[operation param] --> TG_TOOL["tool = params.operation"]
TG_TOOL --> TG_EDIT[telegram_edit_message_text]
TG_TOOL --> TG_FWD[telegram_forward_message]
TG_TOOL --> TG_COPY[telegram_copy_message]
TG_TOOL --> TG_LOC[telegram_send_location]
TG_TOOL --> TG_CONTACT[telegram_send_contact]
TG_TOOL --> TG_POLL[telegram_send_poll
normalizePollOptions]
TG_TOOL --> TG_PIN[telegram_pin_message]
TG_TOOL --> TG_UNPIN[telegram_unpin_message]
TG_TOOL --> TG_REACT[telegram_set_message_reaction]
TG_TOOL --> TG_ACTION[telegram_send_chat_action]
TG_TOOL --> TG_CHAT[telegram_get_chat]
TG_TOOL --> TG_MEMBER[telegram_get_chat_member]
end
subgraph Outlook["Outlook Block (8 new tools)"]
OL_OP[operation param] --> OL_TOOL[tool switch]
OL_TOOL --> OL_REPLY[outlook_reply
outlook_reply_all]
OL_TOOL --> OL_SEARCH[outlook_search
$search param]
OL_TOOL --> OL_FOLDERS[outlook_list_folders
outlook_create_folder]
OL_TOOL --> OL_ATTACH[outlook_list_attachments
outlook_get_attachment]
OL_TOOL --> OL_UPDATE[outlook_update_message
normalizeCategories]
end
subgraph Notion["Notion Block (8 new tools × v1+v2)"]
NO_OP[operation param] --> NO_TOOL[tool switch]
NO_TOOL --> NO_BLOCK[append_blocks
retrieve_block_children
update_block
delete_block]
NO_TOOL --> NO_COMMENT[create_comment
list_comments]
NO_TOOL --> NO_USER[list_users
retrieve_user]
NO_BLOCK -->|JSON-typed params| PARSE["parseChildren / parseBlock
(coerce string → object/array)"]
end
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
subgraph Telegram["Telegram Block (12 new tools)"]
TG_OP[operation param] --> TG_TOOL["tool = params.operation"]
TG_TOOL --> TG_EDIT[telegram_edit_message_text]
TG_TOOL --> TG_FWD[telegram_forward_message]
TG_TOOL --> TG_COPY[telegram_copy_message]
TG_TOOL --> TG_LOC[telegram_send_location]
TG_TOOL --> TG_CONTACT[telegram_send_contact]
TG_TOOL --> TG_POLL[telegram_send_poll
normalizePollOptions]
TG_TOOL --> TG_PIN[telegram_pin_message]
TG_TOOL --> TG_UNPIN[telegram_unpin_message]
TG_TOOL --> TG_REACT[telegram_set_message_reaction]
TG_TOOL --> TG_ACTION[telegram_send_chat_action]
TG_TOOL --> TG_CHAT[telegram_get_chat]
TG_TOOL --> TG_MEMBER[telegram_get_chat_member]
end
subgraph Outlook["Outlook Block (8 new tools)"]
OL_OP[operation param] --> OL_TOOL[tool switch]
OL_TOOL --> OL_REPLY[outlook_reply
outlook_reply_all]
OL_TOOL --> OL_SEARCH[outlook_search
$search param]
OL_TOOL --> OL_FOLDERS[outlook_list_folders
outlook_create_folder]
OL_TOOL --> OL_ATTACH[outlook_list_attachments
outlook_get_attachment]
OL_TOOL --> OL_UPDATE[outlook_update_message
normalizeCategories]
end
subgraph Notion["Notion Block (8 new tools × v1+v2)"]
NO_OP[operation param] --> NO_TOOL[tool switch]
NO_TOOL --> NO_BLOCK[append_blocks
retrieve_block_children
update_block
delete_block]
NO_TOOL --> NO_COMMENT[create_comment
list_comments]
NO_TOOL --> NO_USER[list_users
retrieve_user]
NO_BLOCK -->|JSON-typed params| PARSE["parseChildren / parseBlock
(coerce string → object/array)"]
end
Reviews (10): Last reviewed commit: "fix(outlook): use consistent set/replace..." | Re-trigger Greptile |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…ric input isn't forwarded as NaN
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…wlines) so json-typed input can't crash on .map
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…ult, and telegram poll options - outlook: strip embedded double quotes from the $search term so they can't break the quoted KQL query - notion: default the update_block Archive dropdown to 'Leave unchanged' so updates don't send an unintended archived:false restore flag - telegram: pass raw poll options through to the tool's normalizePollOptions (handles array/JSON-string/newlines) so the block layer no longer mishandles JSON-string input
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
…n pageSize - outlook: normalize update_message categories (array, JSON string, or comma/newline) so a JSON-string value isn't silently dropped - notion: clamp pageSize to Notion's 1-100 range (truncated) so out-of-range values don't hit an API error
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
…o the block handles JSON-string input too
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
…rray An explicit empty array now sends categories:[] to clear all labels, a non-empty value replaces, and an absent/empty value leaves them untouched — matching the documented replace semantics.
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
… delimiter-only string A string that normalizes to no categories (e.g. just commas) is now a no-op rather than clearing all labels; clearing requires an explicit empty array.
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
…ents/users and block children Adds a shared clampNotionPageSize helper so the agent-direct path is bounded to Notion's range, not just the block path.
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
Uh oh!
There was an error while loading. Please reload this page.
…ries Categories are replaced with the provided non-empty list and left unchanged when empty, consistent across the block and agent paths. Drops the ambiguous empty-array clear (clearing all categories isn't expressible unambiguously from the comma-separated field) and updates the description to match.
waleedlatif1
commented
Jun 29, 2026
@greptile review |
waleedlatif1
commented
Jun 29, 2026
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 628f5cd. Configure here.
Uh oh!
There was an error while loading. Please reload this page.
Summary
Wave 2 of integration tool-depth: deepens three high-adoption blocks that were shallow relative to their APIs. Every operation reuses the integration's existing auth — no new OAuth scopes, so connected users don't re-consent.
lib/oauth/oauth.tsis untouched.What's added (36 new tools)
Telegram (bot token, no scopes) — outbound was send-only; adds interactivity
telegram_edit_message_text,telegram_forward_message,telegram_copy_message,telegram_send_location,telegram_send_contact,telegram_send_poll,telegram_pin_message,telegram_unpin_message,telegram_set_message_reaction,telegram_send_chat_action,telegram_get_chat,telegram_get_chat_memberOutlook (reuses
Mail.ReadWrite+Mail.Send) — was much thinner than Gmailoutlook_reply,outlook_reply_all,outlook_list_folders,outlook_create_folder,outlook_list_attachments,outlook_get_attachment,outlook_search,outlook_update_message(categories/flag/importance)Notion (capability-based,
scopes: []) — could create pages but not edit page contentappend_blocks,retrieve_block_children,update_block,delete_block),create_comment,list_comments,list_users,retrieve_user— added to both thenotionandnotion_v2blocksNotes
tools.config.params(execution-time), never intools.config.tool.integrations.jsoncatalog regenerated from the block registry.Validation
bunx tsc --noEmit: clean across changed filesbunx biome check: clean (39 files)blocks/blocks.test.ts: 83/83 pass (incl. canonical-param test)bun run check:api-validation: passed