Skip to main content

Matimo provider — Slack tools (send messages, manage channels, users)

Project description

matimo-slack

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

PyPI Docs


Installation

pip install matimo matimo-slack

Available Tools (19 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 Upload file (modern API)
slack_upload_file_v2 Get upload URL for large files
slack_complete_file_upload Complete upload and share to channel
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

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/appsCreate 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, chat:write
slack-list-channels conversations.list channels:read, groups:read, im:read, mpim:read
slack_create_channel conversations.create channels:manage
slack_join_channel conversations.join channels:join
slack_set_channel_topic conversations.setTopic channels:write.topic
slack_upload_file / slack_upload_file_v2 files.getUploadURLExternal files:write
slack_complete_file_upload files.completeUploadExternal files:write
slack_get_channel_history conversations.history channels:history
slack_get_thread_replies conversations.replies channels: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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

matimo_slack-0.1.0a14.post1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

matimo_slack-0.1.0a14.post1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file matimo_slack-0.1.0a14.post1.tar.gz.

File metadata

  • Download URL: matimo_slack-0.1.0a14.post1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for matimo_slack-0.1.0a14.post1.tar.gz
Algorithm Hash digest
SHA256 df05e1445ef3338dfea460cd171c157d1c7f45e2db2552ec04be775ae859c04d
MD5 57c44ca51cd879e54279be30dff8cc1e
BLAKE2b-256 24cf6ae21fae9461093a2ecb9f93f7d3ac3f6de5062722bdc34d0e2fafe8639d

See more details on using hashes here.

File details

Details for the file matimo_slack-0.1.0a14.post1-py3-none-any.whl.

File metadata

File hashes

Hashes for matimo_slack-0.1.0a14.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 b225003b941a99524878cc3f319f602b0d0d2c8b49ca599cb03f31272438d0d9
MD5 579c58ab8766d9aa09142a4183dd1a5f
BLAKE2b-256 d46f1f76c0b33e83a2334821de4e4e0b6d8fefd27ae0b271867b293fdac2ca34

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page