feat: add activity_unreads and activity_mark_read tools#229
Open
jonzarecki wants to merge 1 commit intokorotovsky:masterfrom
Open
feat: add activity_unreads and activity_mark_read tools#229jonzarecki wants to merge 1 commit intokorotovsky:masterfrom
jonzarecki wants to merge 1 commit intokorotovsky:masterfrom
Conversation
Two new tools for managing Slack Activity panel unreads: - activity_unreads: Returns unread Activity items (thread subscriptions and @mentions) via Slack's activity.feed API (mode: priority_unreads_v1). Matches the Activity panel's Unreads tab exactly — zero false positives. Supports include_messages mode that fetches only unread replies per thread using min_unread_ts as the oldest boundary. - activity_mark_read: Marks Activity items as read via activity.markRead API. Accepts key, feed_ts, and type from activity_unreads output. Clears items from the Activity panel. Both tools require browser session tokens (xoxc/xoxd) and are not registered for OAuth (xoxp) or bot (xoxb) tokens. No changes to existing tools or behavior. Purely additive diff. Made-with: Cursor
jonzarecki
added a commit
to jonzarecki/slack-mcp-server
that referenced
this pull request
Mar 15, 2026
The README had documentation for activity_unreads and activity_mark_read which belong to the separate feat/activity-tools branch (PR korotovsky#229). Renumber saved-items tools to 16-18. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two new tools for managing Slack Activity panel unreads:
activity_unreads— Returns unread Activity items (thread subscriptions and @mentions) via Slack'sactivity.feedAPI (mode: priority_unreads_v1). Matches the Activity panel's Unreads tab exactly — zero false positives. Supportsinclude_messagesmode that fetches only unread replies per thread usingmin_unread_tsas the oldest boundary.activity_mark_read— Marks Activity items as read viaactivity.markReadAPI. Acceptskey,feed_ts, andtypefromactivity_unreadsoutput. Clears items from the Activity panel.Motivation
After
conversations_unreads+conversations_markclear channel-level unreads, the Activity panel still shows unread thread replies and @mentions. These are tracked by a separate system and can't be cleared byconversations.mark. This PR closes that gap — enabling true "inbox zero" workflows.Design
Both tools require browser session tokens (
xoxc/xoxd). They are not registered for OAuth (xoxp) or bot (xoxb) tokens — guarded by!IsBotToken() && !IsOAuth().The diff is purely additive — 612 insertions, 0 deletions. No changes to existing tools or behavior.
pkg/handler/activity.goActivityUnreadsHandlerandActivityMarkReadHandlerpkg/handler/activity_test.gopkg/provider/edge/client.goActivityFeed+ActivityMarkReadtypes and methodspkg/provider/api.goSlackAPIinterface + wrapperspkg/server/server.gopkg/server/server_test.goValidToolNamesassertionsREADME.mdToken Compatibility
activity_unreadsactivity_mark_readxoxc/xoxdxoxpxoxbThe
activity.feedandactivity.markReadendpoints are undocumented browser-session APIs — they reject non-xoxctokens withnot_allowed_token_type, similar toclient.counts.Status: Draft — Testing & Feedback Welcome
I'm actively using this in my daily workflow and haven't hit issues so far. Opening as draft to get your feedback on the approach while I continue validating. Specifically interested in your thoughts on:
activity_unreads/activity_mark_readvs alternativesactivity.gofile vs adding toconversations.goactivity.feedresponse types are based on observed Slack client behavior; happy to adjust if you've seen different response shapesxoxc/xoxdtokens in CI; happy to add if there's a path for thatNo rush on review — will update based on feedback and convert to ready when stable.
Made with Cursor