Skip to content

v3.0.0

Latest

Choose a tag to compare

@karbassi karbassi released this 29 Jun 15:55
· 20 commits to main since this release
v3.0.0
0178943

Added

  • New tools: blocks_validate, assistant_search_context, assistant_search_info, apps_activities_list, oauth_v2_user_access, and messages_list (batch fetch of full message objects by channel and timestamp).
  • Per-parameter descriptions for every remaining tool family, extracted from each function's docstring into the MCP tool schema. Building on 2.2.0 (which covered conversations, chat, and search), all tools now expose per-argument guidance to clients.
  • Exposed previously-missing optional parameters: PKCE code_verifier on oauth_v2_access and openid_connect_token; additional_channels/enable_section on usergroups_create/usergroups_update and additional_channels/is_shared on usergroups_users_update; archived/include_is_subscribed/include_archived on the slackLists item and download tools; and sort_dir on assistant_search_context.

Fixed

  • tooling_tokens_rotate now sends only refresh_token (was also sending client_id/client_secret/grant_type, which the method does not accept). Breaking: the client_id/client_secret/grant_type parameters were removed.
  • entity_present_details now sends trigger_id plus optional metadata/user_auth_required/user_auth_url/error. Breaking: the previous app_id/entity_id/entity_type parameters (none accepted by the API) were replaced.
  • files_upload_v2 now runs Slack's real upload flow via the slack_sdk helper (files.upload.v2 is not an HTTP method, so the call always failed). Breaking: content is now required, channel_id became channel, and the unused filetype/length parameters were removed.
  • workflows_featured_add, workflows_featured_remove, and workflows_featured_set now send the channel_id and trigger_ids the Slack Web API actually requires, instead of a bare workflow_ids list that would fail.
  • Tools forwarding a dict or list parameter (blocks, attachments, view, recurrence, trigger_ids, emails, …) now send a JSON request body. Form-encoding mangled nested values (a dict collapsed to its first key, a list of dicts to a Python repr), so those calls silently sent malformed data.
  • Corrected the chat streaming tools: chat_append_stream and chat_stop_stream now use ts/markdown_text (was thread_ts/text), chat_start_stream exposes the recipient_user_id/recipient_team_id required for channel streams, and the non-existent chat_stream (chat.stream is not a Web API method) was removed.
  • Corrected slackLists tool parameters to match the Slack API: slack_lists_create uses schema/description_blocks (was columns/description), slack_lists_items_create uses initial_fields (was column_values), slack_lists_items_update uses cells (was item_id/column_values), and slack_lists_update uses description_blocks. Previously the field data was silently dropped.
  • Corrected conversations shared-invite tools: conversations_request_shared_invite_approve drops the unsupported is_approved and adds is_external_limited; conversations_external_invite_permissions_set adds the required target_team; and conversations_request_shared_invite_deny's message is now a string (the API rejects an object there).
  • users_get_presence's user argument is now optional (defaults to the authenticated user, matching the API). functions_complete_success now requires outputs (the API requires it). Breaking: users_set_photo now takes image_base64 (base64-encoded image bytes, uploaded via multipart) instead of image — the old form-string path could never upload a real image.
  • drafts_delete no longer raises KeyError on a malformed drafts.list entry while auto-fetching the latest timestamp.

Internal

  • Added the ty type checker (mise run typecheck, included in mise run check) and pre-commit hooks.