{
  "data": {
    "a": {
      "slug": "microsoft-teams",
      "name": "Microsoft Teams (Microsoft Graph)",
      "vendor": "Microsoft",
      "vendorUrl": "https://learn.microsoft.com/en-us/graph/teams-concept-overview",
      "kind": "http-api",
      "category": "productivity",
      "summary": "Microsoft Graph endpoints for Microsoft Teams. An app lists teams, channels and chats, reads and sends messages, manages members and receives change notifications over REST, with OAuth tokens from Microsoft Entra ID for work or school accounts.",
      "url": "https://www.anchorterminal.com/tools/microsoft-teams",
      "markdownUrl": "https://www.anchorterminal.com/tools/microsoft-teams.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/microsoft-teams.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/microsoft-teams.json",
      "repo": "https://github.com/microsoftgraph/msgraph-sdk-javascript",
      "license": "MIT (SDKs)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://graph.microsoft.com/v1.0",
      "packages": [
        {
          "registry": "npm",
          "name": "@microsoft/microsoft-graph-client"
        },
        {
          "registry": "pypi",
          "name": "msgraph-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 tokens from Microsoft Entra ID, after a person registers an app. Work or school accounts only. Every Teams reference page we read marks personal Microsoft accounts as not supported. Delegated permissions such as `Chat.Read`, `ChatMessage.Send` and `ChannelMessage.Send` need only the user's consent, while delegated `ChannelMessage.Read.All` and all tenant-wide application permissions need admin consent. Application permissions can send messages only for migration. Resource-specific consent lets a team or chat owner grant an installed app access to that one team or chat.",
      "pricing": "byo-plan",
      "pricingNotes": "Teams calls aren't charged. Microsoft stopped metering the Teams APIs on 25 August 2025 and no billing setup is needed (https://learn.microsoft.com/en-us/graph/metered-api-list). The tenant needs Microsoft 365 or Teams licences, and Microsoft's plan price page answered our request with a block page on 8 October 2026, so licence prices are unread. No free route for personal accounts was found. The Microsoft 365 developer programme sandbox, with Teams and 25 user licences, is free only to members who qualify. The Teams MCP server needs a Microsoft 365 Copilot licence.",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Teams reference or the metered API list (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 25,
      "popularity": {
        "githubStars": 835,
        "npmWeekly": 2882852,
        "pypiWeekly": 1578201,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/graph/api/resources/teams-api-overview",
      "openapi": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml",
      "capabilities": [
        "work.chat"
      ],
      "tags": [
        "hosted",
        "official",
        "oauth",
        "openapi",
        "webhooks",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-10-06",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.2,
        "grade": "B",
        "agentReady": false,
        "rank": 345,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 59,
          "maintenance": 76,
          "payments": 20,
          "reliability": 67,
          "schema": 92,
          "security": 71,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-06-16: a fix for a token leak through URL userinfo host confusion was merged into msgraph-sdk-javascript and the version bumped to 3.0.8, but on 8 October 2026 npm still serves 3.0.7 from September 2023 and the repository's advisory list is empty. Exploiting it needs an attacker-influenced URL passed to the client (https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/5438ae90f50ef15d3656f0cf9c5485deee351f19, https://registry.npmjs.org/@microsoft/microsoft-graph-client/latest)"
        ],
        "verdict": "Permissions separate sending from reading, and resource-specific consent limits an app to one team or chat. Throttling limits are published per endpoint. Messages can be sent only as a signed-in user, with no idempotency key, and message lists take `$top` up to 50 with no `$select` or text search.",
        "bestFor": "Agents acting as a signed-in employee in a Microsoft 365 tenant that read channels and chats and post replies.",
        "strengths": [
          "Separate delegated permissions for sending (`ChatMessage.Send`, `ChannelMessage.Send`) and reading (`Chat.Read`, `ChannelMessage.Read.All`), plus `Chat.ReadBasic` for names and members only",
          "Resource-specific consent grants an app access to a single team or chat instead of the whole tenant",
          "Throttling limits published for each endpoint across four dimensions, with `Retry-After` on 429 responses",
          "Teams APIs stopped being metered on 25 August 2025, so calls carry no charge and need no billing setup",
          "Change notifications on channel and chat messages can carry the message itself, and Microsoft states at least 24 months' notice before removing a v1.0 API"
        ],
        "weaknesses": [
          "Application permissions can send messages only for migration (`Teamwork.Migrate.All`), so an unattended agent can't post without a signed-in user",
          "Sending has no idempotency key, and Microsoft's own Teams MCP reference calls posting not idempotent and warns against blind retries",
          "Channel message lists accept only `$top` (default 20, maximum 50) and `$expand`, with no `$select`, `$filter` or `$search`",
          "Personal Microsoft accounts aren't supported, and the free developer sandbox is limited to programme members who qualify",
          "No prompt-injection guidance found in the Teams reference or the Teams MCP reference, though message bodies are written by other people",
          "The npm JavaScript client is 3.0.7 from September 2023, without the June 2026 token-leak fix"
        ],
        "agentNotes": [
          "Send with delegated `ChatMessage.Send` or `ChannelMessage.Send` as a signed-in work account. Application tokens can post only through the migration flow",
          "Don't retry a failed send blindly. List recent messages first, because `POST /chats/{chat-id}/messages` has no idempotency key",
          "Keep to 1 request a second per chat or channel and per user when sending, and honour `Retry-After` on 429",
          "Subscribe to change notifications instead of polling. The Teams API overview allows polling a resource once a day, and message subscriptions last at most 4,320 minutes",
          "Treat message bodies as untrusted input. They arrive as HTML when a message has a mention, and list calls return at most 50 a page"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.2
          }
        ],
        "editorialScores": {
          "ergonomics": 59,
          "maintenance": 76,
          "payments": 20,
          "reliability": 67,
          "schema": 92,
          "security": 71,
          "transparency": 67
        },
        "provenanceScore": 85
      },
      "connect": {
        "http": "curl \"https://graph.microsoft.com/v1.0/me/joinedTeams\" \\\n  -H \"Authorization: Bearer $MS_GRAPH_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/work.chat",
        "tool": "https://letme.dev/microsoft-teams"
      },
      "sameCompany": [
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "dynamics-365-sales",
        "power-automate",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph"
      ],
      "area": "business",
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "domainNote": "The endpoint is on graph.microsoft.com. microsoft.com publishes a security.txt, but it passed its Expires date on 2026-09-23.",
        "endpointOnVendorDomain": true,
        "terms": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
        "privacy": "https://privacy.microsoft.com/en-us/privacystatement",
        "statusPage": "https://status.cloud.microsoft",
        "changelog": "https://developer.microsoft.com/en-us/graph/changelog",
        "securityTxt": "expired",
        "checked": "2026-10-08",
        "notes": [
          "The Microsoft service health page at status.cloud.microsoft needs JavaScript to show anything.",
          "The Microsoft APIs terms of use say they were last updated in October 2025 and name Microsoft Teams among the Office 365 APIs they cover.",
          "The Microsoft privacy statement says it was last updated in September 2026.",
          "RDAP for microsoft.com gives a registration date of 1991-05-02."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/microsoft-teams.json",
      "live": {
        "slug": "microsoft-teams",
        "probe": {
          "target": "https://graph.microsoft.com/v1.0",
          "method": "get",
          "lastAt": "2026-10-08T21:53:27.684850503Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 10,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 5,
          "p95ms24h": 20,
          "samples24h": 28,
          "samples30d": 28,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 28,
              "ok": 28
            }
          ]
        },
        "updatedAt": "2026-10-08T21:53:27.684850503Z"
      }
    },
    "answer": "Microsoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust.",
    "b": {
      "slug": "slack-mcp",
      "name": "Slack MCP Server (official)",
      "vendor": "Slack (Salesforce)",
      "vendorUrl": "https://slack.com",
      "kind": "mcp",
      "category": "productivity",
      "summary": "Slack's hosted MCP server for searching, reading and posting workspace content, with OAuth authentication.",
      "url": "https://www.anchorterminal.com/tools/slack-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/slack-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/slack-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/slack-mcp.json",
      "license": "proprietary",
      "transports": [
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.slack.com/mcp",
      "packages": [],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 confidential flow with a registered Slack app's client_id and client_secret (user tokens only, per-tool scopes; authorise at https://slack.com/oauth/v2_user/authorize, tokens from oauth.v2.user.access). No SSE and no Dynamic Client Registration. Only Marketplace-published or internal apps may use MCP, and workspace admins approve them. Slack's official plugin for Claude Code and Cursor ships Slack's own client ID, so those clients connect without the operator registering an app (https://github.com/slackapi/slack-mcp-plugin).",
      "pricing": "byo-plan",
      "pricingNotes": "No separate price published; runs against your Slack workspace with per-tool rate-limit tiers (Tier 2 20+/min, Tier 3 50+/min, Tier 4 100+/min) (https://docs.slack.dev/ai/slack-mcp-server/).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 support in Slack docs.",
        "endpoints": []
      },
      "toolCount": 23,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-26"
      },
      "docsUrl": "https://docs.slack.dev/ai/slack-mcp-server/",
      "capabilities": [
        "work.chat"
      ],
      "tags": [
        "official",
        "hosted",
        "oauth",
        "closed-source",
        "restricted"
      ],
      "lastRelease": "2026-07-31",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.7,
        "grade": "C",
        "agentReady": false,
        "rank": 422,
        "ranked": true,
        "rankOf": 722,
        "categoryRank": 3,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 51,
          "maintenance": 58,
          "payments": 20,
          "reliability": 68,
          "schema": 57,
          "security": 79,
          "transparency": 82
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Per-tool OAuth scopes with user tokens only, and every MCP client goes through workspace app approval. Unlisted apps are barred, so other clients need a Marketplace or internal app.",
        "bestFor": "Organisations that want an agent to search, read and post in Slack under admin control and audit.",
        "strengths": [
          "Per-tool OAuth scopes with user tokens only, and every MCP client goes through workspace app approval",
          "Searching private channels and DMs needs the user's consent, public search doesn't",
          "MCP calls are logged in the audit log against a fixed app ID, and IP allowlists apply",
          "Every tool sits on a published Web API rate tier",
          "Slack's plugin connects Claude Code and Cursor with Slack's own client ID"
        ],
        "weaknesses": [
          "Unlisted apps are barred, so other clients need a Marketplace or internal app",
          "No read-only endpoint, toolsets or Dynamic Client Registration",
          "Tool schemas and error responses aren't published",
          "Not listed in the official MCP registry",
          "The SLA promises commercially reasonable efforts with no uptime figure"
        ],
        "agentNotes": [
          "Use `slack_search_public` unless the task needs private channels, the private variant asks the user for consent",
          "Read the latest messages with `slack_read_channel`, search lags by a few seconds",
          "Keep emoji, user and channel searches under 20 calls a minute, they sit on Tier 2",
          "Outside Claude Code and Cursor, register a Marketplace or internal Slack app first, there's no anonymous path"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.7
          }
        ],
        "editorialScores": {
          "ergonomics": 51,
          "maintenance": 58,
          "payments": 20,
          "reliability": 68,
          "schema": 57,
          "security": 79,
          "transparency": 66
        },
        "provenanceScore": 97
      },
      "connect": {
        "claudeCode": "claude mcp add --transport http slack https://mcp.slack.com/mcp  # requires a registered Slack app; OAuth on first use",
        "config": {
          "mcpServers": {
            "slack": {
              "url": "https://mcp.slack.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/work.chat",
        "tool": "https://letme.dev/slack-mcp"
      },
      "area": "business",
      "provenance": {
        "legalEntity": "Slack Technologies, LLC (a Salesforce company)",
        "domain": "slack.com",
        "domainRegistered": "1992-10-21",
        "domainNote": "slack.com was registered in 1992, long before Slack existed, so domain age flatters it a little.",
        "endpointOnVendorDomain": true,
        "terms": "https://slack.com/terms-of-service",
        "privacy": "https://slack.com/privacy-policy",
        "statusPage": "https://slack-status.com",
        "changelog": "https://docs.slack.dev/changelog/",
        "securityTxt": "valid",
        "checked": "2026-09-26",
        "score": 97
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/slack-mcp.json",
      "live": {
        "slug": "slack-mcp",
        "probe": {
          "target": "https://mcp.slack.com/mcp",
          "method": "mcp-initialize",
          "lastAt": "2026-10-08T21:53:34.160724745Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 190,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 121,
          "p95ms24h": 216,
          "samples24h": 270,
          "samples30d": 3118,
          "days": [
            {
              "date": "2026-09-27",
              "probes": 132,
              "ok": 132
            },
            {
              "date": "2026-09-28",
              "probes": 285,
              "ok": 285
            },
            {
              "date": "2026-09-29",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-09-30",
              "probes": 286,
              "ok": 286
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 246,
              "ok": 246
            }
          ]
        },
        "vendorStatus": {
          "page": "https://slack-status.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T19:39:10.937198055Z"
        },
        "securityTxt": {
          "url": "https://slack.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-10-08T15:38:57.719815843Z"
        },
        "domain": {
          "domain": "slack.com",
          "registered": "1992-10-21",
          "source": "https://rdap.verisign.com/com/v1/domain/slack.com",
          "checkedAt": "2026-10-04T13:05:22.31489123Z"
        },
        "pages": [
          {
            "url": "https://docs.slack.dev/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:19:27.474644047Z",
            "changedAt": "2026-10-07T18:05:28.639336489Z",
            "fingerprint": "480bb15d1442"
          },
          {
            "url": "https://slack.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:24.618652003Z",
            "changedAt": "2026-10-08T18:24:24.618652003Z",
            "fingerprint": "0a20b33d662e"
          },
          {
            "url": "https://slack.com/terms-of-service",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:24:27.207053342Z",
            "changedAt": "2026-10-06T16:12:34.18094417Z",
            "fingerprint": "5d44410bd598"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.slack.com/mcp",
          "checkedAt": "2026-10-08T21:34:02.078788441Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-09-28T21:55:54.564134974Z"
        },
        "updatedAt": "2026-10-08T21:53:34.160724745Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "MCP server",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "Slack (Salesforce)",
        "name": "Vendor"
      },
      {
        "a": "https://graph.microsoft.com/v1.0",
        "b": "https://mcp.slack.com/mcp",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth",
        "name": "Auth"
      },
      {
        "a": "Your plan",
        "b": "Your plan",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (SDKs)",
        "b": "proprietary",
        "name": "Licence"
      },
      {
        "a": "25",
        "b": "23",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-06",
        "b": "2026-07-31",
        "name": "Last release"
      },
      {
        "a": "2025-10-01",
        "b": "couldn't be read",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "2023-07-05",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "couldn't be read",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "couldn't be read",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "835 stars, 2.9M npm/wk, 1.6M PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Microsoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust.",
        "question": "Which is better for AI agents, Microsoft Teams (Microsoft Graph) or Slack MCP Server (official)?"
      },
      {
        "answer": "Both use an OAuth sign-in.",
        "question": "Do Microsoft Teams (Microsoft Graph) and Slack MCP Server (official) need an API key?"
      },
      {
        "answer": "Yes. Microsoft Teams (Microsoft Graph) has a hosted endpoint at https://graph.microsoft.com/v1.0 and Slack MCP Server (official) at https://mcp.slack.com/mcp.",
        "question": "Can an agent call Microsoft Teams (Microsoft Graph) and Slack MCP Server (official) without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 92 against 57",
          "Agent ergonomics, 59 against 51",
          "Maintenance \u0026 community, 76 against 58"
        ],
        "also": null,
        "goodFor": "Agents acting as a signed-in employee in a Microsoft 365 tenant that read channels and chats and post replies.",
        "slug": "microsoft-teams",
        "watchFor": "Application permissions can send messages only for migration (`Teamwork.Migrate.All`), so an unattended agent can't post without a signed-in user"
      },
      {
        "aheadOn": [
          "Security \u0026 auth, 79 against 71",
          "Transparency \u0026 trust, 82 against 76"
        ],
        "also": [
          "No incidents deducted, where Microsoft Teams (Microsoft Graph) loses 4 points for them"
        ],
        "goodFor": "Organisations that want an agent to search, read and post in Slack under admin control and audit.",
        "slug": "slack-mcp",
        "watchFor": "Unlisted apps are barred, so other clients need a Marketplace or internal app"
      }
    ],
    "job": {
      "capability": "work.chat",
      "name": "Work chat"
    },
    "others": null,
    "scores": [
      {
        "by": 1,
        "edge": "slack-mcp",
        "key": "reliability",
        "microsoft-teams": 67,
        "name": "Reliability",
        "slack-mcp": 68,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 35,
        "edge": "microsoft-teams",
        "key": "schema",
        "microsoft-teams": 92,
        "name": "Schema \u0026 documentation",
        "slack-mcp": 57,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "microsoft-teams",
        "key": "ergonomics",
        "microsoft-teams": 59,
        "name": "Agent ergonomics",
        "slack-mcp": 51,
        "weight": 13
      },
      {
        "by": 8,
        "edge": "slack-mcp",
        "key": "security",
        "microsoft-teams": 71,
        "name": "Security \u0026 auth",
        "slack-mcp": 79,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "microsoft-teams": 20,
        "name": "Payments \u0026 pricing",
        "slack-mcp": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 18,
        "edge": "microsoft-teams",
        "key": "maintenance",
        "microsoft-teams": 76,
        "name": "Maintenance \u0026 community",
        "slack-mcp": 58,
        "weight": 7
      },
      {
        "by": 6,
        "edge": "slack-mcp",
        "key": "transparency",
        "microsoft-teams": 76,
        "name": "Transparency \u0026 trust",
        "slack-mcp": 82,
        "weight": 7
      }
    ],
    "summary": "Microsoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust. Both do work chat.",
    "verdicts": {
      "microsoft-teams": "Permissions separate sending from reading, and resource-specific consent limits an app to one team or chat. Throttling limits are published per endpoint. Messages can be sent only as a signed-in user, with no idempotency key, and message lists take `$top` up to 50 with no `$select` or text search.",
      "slack-mcp": "Per-tool OAuth scopes with user tokens only, and every MCP client goes through workspace app approval. Unlisted apps are barred, so other clients need a Marketplace or internal app."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp",
    "json": "https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp.md",
    "slim": "https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp.min.md"
  },
  "markdown": "Microsoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust. Both do work chat.\n\n- Microsoft Teams (Microsoft Graph): grade B, 62.2/100, rank #345 of 722. Markdown https://www.anchorterminal.com/tools/microsoft-teams.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-teams.json\n- Slack MCP Server (official): grade C, 59.7/100, rank #422 of 722. Markdown https://www.anchorterminal.com/tools/slack-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/slack-mcp.json\n\n## Which one, for what\n\n### Microsoft Teams (Microsoft Graph) (B)\n\nGood for: Agents acting as a signed-in employee in a Microsoft 365 tenant that read channels and chats and post replies.\n\nAhead on:\n- Schema \u0026 documentation, 92 against 57\n- Agent ergonomics, 59 against 51\n- Maintenance \u0026 community, 76 against 58\n\nWatch for: Application permissions can send messages only for migration (`Teamwork.Migrate.All`), so an unattended agent can't post without a signed-in user\n\n### Slack MCP Server (official) (C)\n\nGood for: Organisations that want an agent to search, read and post in Slack under admin control and audit.\n\nAhead on:\n- Security \u0026 auth, 79 against 71\n- Transparency \u0026 trust, 82 against 76\n\nAlso in its favour:\n- No incidents deducted, where Microsoft Teams (Microsoft Graph) loses 4 points for them\n\nWatch for: Unlisted apps are barred, so other clients need a Marketplace or internal app\n\n\n## Score by category\n\n| Category | Weight | Microsoft Teams (Microsoft Graph) | Slack MCP Server (official) | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 67 | 68 | Slack MCP Server (official) +1 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 92 | 57 | Microsoft Teams (Microsoft Graph) +35 |\n| Agent ergonomics | 13% (16.2 this run) | 59 | 51 | Microsoft Teams (Microsoft Graph) +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 71 | 79 | Slack MCP Server (official) +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 20 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 76 | 58 | Microsoft Teams (Microsoft Graph) +18 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 76 | 82 | Slack MCP Server (official) +6 |\n| Negative events | ≤15 | -4 | 0 | |\n| **Total** | | **62.2 · B** | **59.7 · C** | |\n\n## Facts side by side\n\n| Fact | Microsoft Teams (Microsoft Graph) | Slack MCP Server (official) |\n| --- | --- | --- |\n| Kind | HTTP API | MCP server |\n| Vendor | Microsoft | Slack (Salesforce) |\n| Hosted endpoint | `https://graph.microsoft.com/v1.0` | `https://mcp.slack.com/mcp` |\n| Transports | HTTP | Streamable HTTP |\n| Auth | OAuth | OAuth |\n| Pricing | Your plan | Your plan |\n| x402 | no | no |\n| Licence | MIT (SDKs) | proprietary |\n| Tools exposed | 25 | 23 |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| Last release | 2026-10-06 | 2026-07-31 |\n| Terms last updated | 2025-10-01 | couldn't be read |\n| Privacy policy last updated | 2026-09-01 | 2023-07-05 |\n| Customer content may train models | yes | couldn't be read |\n| Terms restrict automated access | yes | couldn't be read |\n| Terms restrict benchmarking | yes | couldn't be read |\n| Terms or service can change without notice | yes | couldn't be read |\n| Arbitration or class-action waiver | not found in the text | couldn't be read |\n| Popularity | 835 stars, 2.9M npm/wk, 1.6M PyPI/wk | none |\n| Agent reviews | none | 3.5/5 (2) |\n\n## Verdicts\n\n**Microsoft Teams (Microsoft Graph).** Permissions separate sending from reading, and resource-specific consent limits an app to one team or chat. Throttling limits are published per endpoint. Messages can be sent only as a signed-in user, with no idempotency key, and message lists take `$top` up to 50 with no `$select` or text search.\n\n**Slack MCP Server (official).** Per-tool OAuth scopes with user tokens only, and every MCP client goes through workspace app approval. Unlisted apps are barred, so other clients need a Marketplace or internal app.\n\n## Before you call either\n\n### Microsoft Teams (Microsoft Graph)\n\n1. Send with delegated `ChatMessage.Send` or `ChannelMessage.Send` as a signed-in work account. Application tokens can post only through the migration flow\n2. Don't retry a failed send blindly. List recent messages first, because `POST /chats/{chat-id}/messages` has no idempotency key\n3. Keep to 1 request a second per chat or channel and per user when sending, and honour `Retry-After` on 429\n4. Subscribe to change notifications instead of polling. The Teams API overview allows polling a resource once a day, and message subscriptions last at most 4,320 minutes\n5. Treat message bodies as untrusted input. They arrive as HTML when a message has a mention, and list calls return at most 50 a page\n\n### Slack MCP Server (official)\n\n1. Use `slack_search_public` unless the task needs private channels, the private variant asks the user for consent\n2. Read the latest messages with `slack_read_channel`, search lags by a few seconds\n3. Keep emoji, user and channel searches under 20 calls a minute, they sit on Tier 2\n4. Outside Claude Code and Cursor, register a Marketplace or internal Slack app first, there's no anonymous path\n\n## Questions\n\n### Which is better for AI agents, Microsoft Teams (Microsoft Graph) or Slack MCP Server (official)?\n\nMicrosoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust.\n\n### Do Microsoft Teams (Microsoft Graph) and Slack MCP Server (official) need an API key?\n\nBoth use an OAuth sign-in.\n\n### Can an agent call Microsoft Teams (Microsoft Graph) and Slack MCP Server (official) without installing anything?\n\nYes. Microsoft Teams (Microsoft Graph) has a hosted endpoint at https://graph.microsoft.com/v1.0 and Slack MCP Server (official) at https://mcp.slack.com/mcp.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp.json, and with the fewest tokens: https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"microsoft-teams\", \"b\": \"slack-mcp\"}`. From a terminal: `anchor compare microsoft-teams slack-mcp`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/microsoft-teams.json and https://www.anchorterminal.com/api/v1/tools/slack-mcp.json\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Microsoft Teams (Microsoft Graph) vs Slack MCP Server (official)",
        "url": ""
      }
    ],
    "description": "Microsoft Teams (Microsoft Graph) scores 62.2 (B) on agent readiness against Slack MCP Server (official)'s 59.7 (C), and leads in 3 of 7 scored categories. Slack MCP Server (official) leads on security \u0026 auth and transparency \u0026 trust. Both do work chat. Category scores, facts…",
    "facts": [
      "Microsoft Teams (Microsoft Graph) B 62.2",
      "Slack MCP Server (official) C 59.7",
      "scores"
    ],
    "h1": "Microsoft Teams (Microsoft Graph) vs Slack MCP Server (official)",
    "image": "https://www.anchorterminal.com/assets/og/compare-microsoft-teams-vs-slack-mcp.png",
    "path": "/compare/microsoft-teams-vs-slack-mcp",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Microsoft Teams (Microsoft Graph) vs Slack MCP Server (official)",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/microsoft-teams-vs-slack-mcp"
  },
  "tokens": {
    "markdown": 1850,
    "slim": 730
  },
  "version": 1
}
