Skip to main content

matimo-slack

Slack tools for Matimo - send messages, manage channels, upload files, and more.

PyPI Docs


Installation

pip install matimo matimo-slack

Available Tools (16 Total)

Category Tool Description
Messaging slack_send_channel_message Post message with markdown/blocks
slack-send-message Post plain message to channel
slack_reply_to_message Reply in thread
slack_send_dm Send direct message
Channels slack-list-channels List all channels/DMs
slack_create_channel Create public/private channel
slack_join_channel Add bot to channel
slack_set_channel_topic Update channel description/topic
Files slack_upload_file Request an upload URL for a file (modern API, step 1 of 2 - see note below)
Reading slack_get_channel_history Read messages from channel
slack_get_thread_replies Get thread replies
slack_search_messages Search message history
Reactions slack_add_reaction Add emoji reaction to message
slack_get_reactions Get reactions on a message
Users slack_get_user_info Get user profile details
slack-get-user Alias of slack_get_user_info

⚠️ slack_upload_file only performs step 1 of Slack's modern upload flow (files.getUploadURLExternal) - it returns an upload_url you must PUT the file binary to yourself, then call Slack's files.completeUploadExternal directly. Matimo does not ship tools for those remaining two steps.


Quick Start

import asyncio
import os
from matimo import Matimo
from matimo_slack import get_tools_path

async def main():
    matimo = await Matimo.init(get_tools_path())

    # Send a message
    await matimo.execute('slack_send_channel_message', {
        'channel': '#general',
        'text': 'Hello from Matimo!',
    })

    # List channels
    result = await matimo.execute('slack-list-channels', {})
    print(result)

asyncio.run(main())

Authentication

All tools authenticate using a Slack Bot Token:

export SLACK_BOT_TOKEN="xoxb-your-bot-token"

Setting Up a Slack App

  1. Go to api.slack.com/apps → Create New App → From scratch
  2. Navigate to OAuth & Permissions and add scopes (see table below)
  3. Click Install to Workspace and copy the Bot User OAuth Token
  4. Set SLACK_BOT_TOKEN in your environment

Required OAuth Scopes

Tool Slack API Method Required Scopes
slack_send_channel_message / slack-send-message chat.postMessage chat:write
slack_reply_to_message chat.postMessage chat:write
slack_send_dm conversations.open + chat.postMessage im:write, mpim:write
slack-list-channels conversations.list channels:read, groups:read, im:read, mpim:read
slack_create_channel conversations.create channels:manage, channels:write, groups:write
slack_join_channel conversations.join channels:manage
slack_set_channel_topic conversations.setTopic conversations:manage
slack_upload_file files.getUploadURLExternal files:write
slack_get_channel_history conversations.history conversations:history
slack_get_thread_replies conversations.replies conversations:history
slack_search_messages search.messages search:read
slack_add_reaction reactions.add reactions:write
slack_get_reactions reactions.get reactions:read
slack_get_user_info / slack-get-user users.info users:read

LangChain Agent Example

from matimo import Matimo
from matimo_slack import get_tools_path
from matimo.integrations.langchain import convert_tools_to_langchain
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate

matimo = await Matimo.init(get_tools_path())
lc_tools = convert_tools_to_langchain(
    matimo.list_tools(),
    matimo,
    credentials={'SLACK_BOT_TOKEN': os.environ['SLACK_BOT_TOKEN']},
)
llm = ChatOpenAI(model='gpt-4o-mini')
prompt = ChatPromptTemplate.from_messages([
    ('system', 'You are a Slack assistant.'),
    ('human', '{input}'),
    ('placeholder', '{agent_scratchpad}'),
])
agent = create_tool_calling_agent(llm, lc_tools, prompt)
executor = AgentExecutor(agent=agent, tools=lc_tools)
result = await executor.ainvoke({'input': 'List all public channels'})

Usage Notes

  • The bot must be a member of a channel before it can post messages or read history
  • Use slack_upload_file (not the deprecated files.upload) for file uploads
  • slack_search_messages requires the search:read scope which needs special approval from Slack
  • Rate limits apply - add delays between rapid API calls in bulk operations

Documentation


Links

Release files for matimo-slack 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for matimo-slack 0.1.3
File Size Uploaded
matimo_slack-0.1.3.tar.gz 8.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for matimo-slack 0.1.3
File Interpreter ABI Platform
matimo_slack-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 26.4 kB

Release files / matimo_slack-0.1.3.tar.gz

Download URL matimo_slack-0.1.3.tar.gz
Size 8.8 kB
Tags Source
SHA-256 checksum
How to use checksums
6f57a31cdf54a34817312c61816810fcb7f4d3bed2fbbc240b160fe11318050a
BLAKE2b-256 checksum
How to use checksums
08f09ffea54f36a440bc114a19697582885c6f33ba85d9796abfb2f386886a3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / matimo_slack-0.1.3-py3-none-any.whl

Download URL matimo_slack-0.1.3-py3-none-any.whl
Size 17.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aee01a2742b134d71a0d4502b3bfbef5c41800e94823214e8bd3465235611a04
BLAKE2b-256 checksum
How to use checksums
10c8d134252c82476743f9fd894384f0463c9b077a96824c660ccd7e79124998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page