# Teams SDK - TypeScript Documentation > Microsoft Teams SDK - A comprehensive framework for building AI-powered Teams applications using TypeScript. Using this SDK, you can easily build and integrate a variety of features in Microsoft Teams by building Agents or Tools. The documentation here helps by giving background information and code samples on how best to do this. IMPORTANT THINGS TO REMEMBER: - This SDK is NOT based off of BotFramework (which the _previous_ version of the Teams SDK was based on). This SDK is a completely new framework. Use this guide to find snippets to drive your decisions. - When scaffolding new applications, using the CLI is a lot simpler and preferred than doing it all by yourself. See the Quickstart guide for that. - It's a good idea to build the application using `npm run build` and fix compile time errors to help ensure the app works as expected. - The SDK uses typescript to help you make the right decisions when using the APIs. You may check type definitions and type checkers to make sure your code is correct. YOU MUST FOLLOW THE ABOVE GUIDANCE. ### 🚀 Getting Started - [Quickstart](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/quickstart.txt): Quick start guide for Teams SDK using the Teams CLI to create and run your first agent. - [Code Basics](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/code-basics.txt): Understanding the structure and key components of a Teams SDK application including the Application class, dependency injection, and project organization. ### Essentials - [App Basics](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/app-basics.txt): Comprehensive guide to the App class, the main entry point for Teams SDK agents that handles server hosting, request routing, authentication, and plugin management. - [Essentials](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/essentials.txt): Introduction to the core concepts of Teams SDK applications including events, activities, handlers, and the reactive paradigm for building intelligent agents. - [Listening To Events](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/listening-to-events.txt): Understanding how to listen to and handle events in Teams SDK applications, including user actions and application server events. - [App Authentication](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/app-authentication.txt): Configure app authentication in your Teams SDK application using client secrets, user managed identities, or federated identity credentials - [Teams API Client](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/teams-api-client.txt): Overview of the Teams API Client and how to use it to interact with conversations, meetings, and teams in your application. - [Graph API Client](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/graph-api-client.txt): Guide to using the Microsoft Graph API client to access Microsoft 365 data and services from your Teams SDK application. - Listening to Activities - [Listening To Activities](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/listening-to-activities.txt): Guide to handling Teams-specific activities like chat messages, card actions, and installs using the fluent router API. - [Activity Type Reference](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/activity-type-reference.txt): Complete reference guide for all activity types and routes available in Teams SDK applications, including core activities and configuration routes. - Sending Messages - [Proactive Messaging](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/proactive-messaging.txt): Learn how to send proactive messages to users without waiting for them to initiate the conversation, including storing conversation IDs and sending notifications. - [Sending Messages](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/sending-messages.txt): Guide to sending messages from your Teams SDK agent, including replies, proactive messages, and different message types. ### In-Depth Guides - [In-Depth Guides](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/in-depth-guides.txt): Advanced guides covering complex topics like AI integration, adaptive cards, dialogs, message extensions, and user authentication. - [🔒 User Authentication](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/user-authentication.txt): API guide to implement User Authentication with SSO in Teams Apps. - [Feedback](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/feedback.txt): Guide to implementing user feedback functionality in Teams applications, covering feedback UI components, event handling, and storage mechanisms for gathering and managing user responses to improve application performance. - [Meeting Events](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/meeting-events.txt): Guide to handling meeting events in Teams applications, covering meeting lifecycle events such as meeting start, meeting end, participant join, and participant leave events. - Adaptive Cards - [Building Adaptive Cards](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/building-adaptive-cards.txt): Guide to building Adaptive Cards with builder helpers for type-safe, maintainable UI development. - [Adaptive Cards](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/adaptive-cards.txt): Introduction to Adaptive Cards in Teams SDK applications for creating rich, interactive user experiences across various scenarios. - [Executing Actions](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/executing-actions.txt): How to implement interactive elements in Adaptive Cards through actions like buttons, links, and input submission triggers. - Dialogs - [Creating Dialogs](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/creating-dialogs.txt): :::tip If you're not familiar with how to build Adaptive Cards, check out the cards guide. Understan... - [Handling Dialog Submissions](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/handling-dialog-submissions.txt): Guide to processing dialog submissions in Teams applications, showing how to handle form data from both Adaptive Cards and web pages using dialog submission event handlers. - [Dialogs](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/dialogs.txt): Dialogs are a helpful paradigm in Teams which improve interactions between your agent and users. Whe... - [Handling Multi-Step Forms](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/handling-multi-step-forms.txt): Tutorial on implementing multi-step dialogs in Teams, demonstrating how to create dynamic form flows that adapt based on user input, with examples of handling state between steps and conditional navigation. - Message Extensions - [Action commands](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/action-commands.txt): Learn how to create action commands for message extensions that present modal dialogs to collect or display information in Teams. - [🔍 Search commands](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/search-commands.txt): Create search commands that allow users to search external systems and insert results as cards in Teams messages. - [📖 Message Extensions](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/message-extensions.txt): Overview of message extensions for enhancing user productivity with quick access to information and actions within Teams. - [⚙️ Settings](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/settings.txt): Add configurable settings pages to your message extensions to allow users to customize app behavior. - [🔗 Link unfurling](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/link-unfurling.txt): Enable your app to respond when users paste URLs by creating preview cards with additional information and actions. - 🤖 AI - [Setup & Prerequisites](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/setup-prerequisites.txt): Prerequisites and setup guide for integrating LLMs into Teams SDK applications, including API keys and configuration. - [💬 Chat Generation](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/chat-generation.txt): Comprehensive guide to implementing chat generation with LLMs in Teams, covering setup with ChatPrompt and Model objects, basic message handling, and streaming responses for improved user experience. - [Function / Tool calling](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/function-tool-calling.txt): How to implement function calling in AI models, allowing the LLM to execute functions as part of its response generation. - [Keeping State](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/keeping-state.txt): Guide to managing conversation state in LLM interactions, explaining how to maintain chat history using ChatPrompt's state management capabilities and implementing custom persistence strategies for multi-conversation scenarios. - [Best Practices](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/best-practices.txt): Best practices for AI integration in Teams applications, including AI-generated message indicators, feedback collection for prompt improvement, and citation handling to ensure transparency and accuracy in AI responses. - [🤖 AI](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/ai.txt): Overview of AI components in Teams SDK, including Prompts for orchestration and Models for LLM interfaces. - MCP - [MCP Server](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/mcp-server.txt): How to convert your Teams app into an MCP server using the McpPlugin to expose tools, resources, and prompts to other MCP applications. - [MCP Client](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/mcp-client.txt): How to implement an MCP client to leverage remote MCP servers and their tools in your AI agent application. - [MCP](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/mcp.txt): Overview of Model Context Protocol (MCP) integration in Teams SDK for dynamic function and tool loading. - A2A Protocol - [A2A Server](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/a2a-server.txt): How to implement an A2A server to expose your Teams app capabilities to other agents using the A2A protocol. - [A2A Client](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/a2a-client.txt): How to implement an A2A client to proactively send tasks to A2A servers using the AgentManager. - [A2A (Agent-to-Agent) Protocol](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/a2a-agent-to-agent-protocol.txt): Overview of the experimental A2A (Agent-to-Agent) protocol for enabling programmatic communication between AI agents. - Tabs - [Getting started](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/getting-started.txt): Set up new tab app projects or add Teams client capabilities to existing tab applications. - [Using The App](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/using-the-app.txt): Initialize and use the Teams client App to call Graph APIs and remote agent functions. - [App Options](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/app-options.txt): Configure app settings for observability, MSAL authentication, and remote agent function calling. - [Microsoft Graph Client](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/microsoft-graph-client.txt): Access Microsoft Graph APIs with type-safe client and manage user consent for permissions. - [Tabs](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/tabs.txt): Build Teams tab apps with Graph integration, authentication, and remote agent function calling capabilities. - Functions - [Executing Functions](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/executing-functions.txt): Call remote agent functions from tab apps with authentication and custom headers using the exec() method. - [Functions](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/functions.txt): Details on how to register REST endpoints that can be called from Tab apps. - Observability - [Middleware](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/middleware.txt): Create middleware for logging, validation, and other cross-cutting concerns using the app.use method. - [🗃️ Custom Logger](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/custom-logger.txt): Configure custom loggers in your Teams app to control log levels and output destinations. - [Observability](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/observability.txt): Monitor and track your Teams app performance with logging, middleware, and observability tools. - Server - [Static Pages](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/static-pages.txt): Shows how to host web apps. - [Self-Managing Your Server](https://microsoft.github.io/teams-sdk/llms_docs/docs_typescript/self-managing-your-server.txt): How to self-manage the HTTP server — bring your own Express, FastAPI, or any framework by implementing the HttpServerAdapter interface.