strands-teams
Microsoft Teams notifications tool for Strands Agents SDK. Enables powerful adaptive card notifications and rich messaging for AI agents.
Features
- Adaptive Cards: Rich, interactive message cards
- Pre-built Templates: Notifications, approvals, status updates
- Custom Cards: Full adaptive card schema support
- Action Buttons: Add interactive elements to messages
- Rich Formatting: Markdown support, images, and media
- Type Safe: Full type hints and validation
- Easy Integration: Drop-in tool for Strands agents
Requirements
- Python 3.9+
- Strands Agents SDK 1.11.0+
- Microsoft Teams webhook URL
Installation
pip install strands-teams
Quick Start
from strands import Agent
from strands_teams import teams
# Create an agent with Teams tool
agent = Agent(tools=[teams])
# Simple notification
agent("send a Teams message: New lead from Acme Corp")
# Use pre-built templates
agent("send an approval request to Teams for the Q4 budget")
# Status updates
agent("send a status update to Teams: website redesign is 75% complete")
Configuration
Set your Teams webhook URL as an environment variable:
TEAMS_WEBHOOK_URL=your_webhook_url # Optional - can be provided per call
Setup webhook: Teams Channel → Connectors → Incoming Webhook
Supported Templates
Notification Template
agent("send a notification to Teams about new sales leads")
Features:
- Color-coded cards (default, good, attention, warning, accent)
- Title and message content
- Markdown formatting support
Approval Template
agent("send an approval request to Teams for budget approval")
Features:
- Attention-grabbing style
- Approve and Reject action buttons
- Detailed description section
Status Update Template
agent("send a status update to Teams: project is 75% complete")
Features:
- Project and status information
- Color-coded by status
- Status emojis (✅, 🔄, ⏸️, 🚫, ❌)
Simple Message
agent("send a simple message to Teams: Meeting in 15 minutes")
Features:
- Basic title and message
- Clean formatting
- Quick notifications
Custom Adaptive Cards
You can send fully custom adaptive cards:
from strands import Agent
from strands_teams import teams
agent = Agent(tools=[teams])
agent("""
Send this custom Teams card:
{
"type": "AdaptiveCard",
"version": "1.3",
"body": [
{
"type": "TextBlock",
"text": "Custom Card",
"weight": "Bolder",
"size": "Large"
}
]
}
""")
For more information on adaptive cards, see: adaptivecards.io
Testing
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Links
- PyPI: pypi.org/project/strands-teams
- GitHub: github.com/eraykeskinmac/strands-teams
- Strands Agents SDK: github.com/strands-agents/strands
- Adaptive Cards: adaptivecards.io
Built for the Strands community 🚀
Metadata
Release files for strands-teams 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| strands_teams-0.1.0.tar.gz | 11.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| strands_teams-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.9 kB
Release files / strands_teams-0.1.0.tar.gz
| Download URL | strands_teams-0.1.0.tar.gz |
|---|---|
| Size | 11.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
249880da419bb2d27776df87fc2c3d417190273ab1497e2f4d54492b5d3dcd87
|
|
BLAKE2b-256 checksum How to use checksums |
7ca2c26c3fdeea725ba7a66ecc2807857179e2764af9d82a0e8f97b22e81c60b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2025.
Transparency logRelease files / strands_teams-0.1.0-py3-none-any.whl
| Download URL | strands_teams-0.1.0-py3-none-any.whl |
|---|---|
| Size | 10.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2d087ece5bed0774b68bcd6c4e0119e0356d1e68dd47e2679aeb3d09a7c0c33c
|
|
BLAKE2b-256 checksum How to use checksums |
39da9651ed40f9affa2699132a8a69a6d83e3e69f76637d2deca93a95c9e4c4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2025.
Transparency log