# Send Build Teams.ai Apps with Anthropic Claude to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "teams-anthropic-integration",
    "name": "Build Teams.ai Apps with Anthropic Claude",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/EdwardIrby/teams-anthropic-integration",
    "canonicalUrl": "https://clawhub.ai/EdwardIrby/teams-anthropic-integration",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/teams-anthropic-integration",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=teams-anthropic-integration",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/teams-anthropic-integration"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/teams-anthropic-integration",
    "downloadUrl": "https://openagent3.xyz/downloads/teams-anthropic-integration",
    "agentUrl": "https://openagent3.xyz/skills/teams-anthropic-integration/agent",
    "manifestUrl": "https://openagent3.xyz/skills/teams-anthropic-integration/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/teams-anthropic-integration/agent.md"
  }
}
```
## Documentation

### Build Teams.ai Apps with Anthropic Claude

Use @youdotcom-oss/teams-anthropic to add Claude models (Opus, Sonnet, Haiku) to Microsoft Teams.ai applications. Optionally integrate You.com MCP server for web search and content extraction.

### Choose Your Path

Path A: Basic Setup (Recommended for getting started)

Use Anthropic Claude models in Teams.ai
Chat, streaming, function calling
No additional dependencies

Path B: With You.com MCP (For web search capabilities)

Everything in Path A
Web search and content extraction via You.com
Real-time information access

### Decision Point

Ask: Do you need web search and content extraction in your Teams app?

NO → Use Path A: Basic Setup (simpler, faster)
YES → Use Path B: With You.com MCP

### Path A: Basic Setup

Use Anthropic Claude models in your Teams.ai app without additional dependencies.

### A1. Install Package

npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai

### A2. Get Anthropic API Key

Get your API key from console.anthropic.com

# Add to .env
ANTHROPIC_API_KEY=your-anthropic-api-key

### A3. Ask: New or Existing App?

New Teams app: Use entire template below
Existing app: Add Claude model to existing setup

### A4. Basic Template

For NEW Apps:

import { App } from '@microsoft/teams.apps';
import { AnthropicChatModel, AnthropicModel } from '@youdotcom-oss/teams-anthropic';

if (!process.env.ANTHROPIC_API_KEY) {
  throw new Error('ANTHROPIC_API_KEY environment variable is required');
}

const model = new AnthropicChatModel({
  model: AnthropicModel.CLAUDE_SONNET_4_5,
  apiKey: process.env.ANTHROPIC_API_KEY,
  requestOptions: {
    max_tokens: 2048,
    temperature: 0.7,
  },
});

const app = new App();

app.on('message', async ({ send, activity }) => {
  await send({ type: 'typing' });

  const response = await model.send(
    { role: 'user', content: activity.text }
  );

  if (response.content) {
    await send(response.content);
  }
});

app.start().catch(console.error);

For EXISTING Apps:

Add to your existing imports:

import { AnthropicChatModel, AnthropicModel } from '@youdotcom-oss/teams-anthropic';

Replace your existing model:

const model = new AnthropicChatModel({
  model: AnthropicModel.CLAUDE_SONNET_4_5,
  apiKey: process.env.ANTHROPIC_API_KEY,
});

### A5. Choose Your Model

// Most capable - best for complex tasks
AnthropicModel.CLAUDE_OPUS_4_5

// Balanced intelligence and speed (recommended)
AnthropicModel.CLAUDE_SONNET_4_5

// Fast and efficient
AnthropicModel.CLAUDE_HAIKU_3_5

### A6. Test Basic Setup

npm start

Send a message in Teams to verify Claude responds.

### Path B: With You.com MCP

Add web search and content extraction to your Claude-powered Teams app.

### B1. Install Packages

npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk @microsoft/teams.ai @microsoft/teams.mcpclient

### B2. Get API Keys

Anthropic API key: console.anthropic.com
You.com API key: you.com/platform/api-keys

# Add to .env
ANTHROPIC_API_KEY=your-anthropic-api-key
YDC_API_KEY=your-you-com-api-key

### B3. Ask: New or Existing App?

New Teams app: Use entire template below
Existing app: Add MCP to existing Claude setup

### B4. MCP Template

For NEW Apps:

import { App } from '@microsoft/teams.apps';
import { ChatPrompt } from '@microsoft/teams.ai';
import { ConsoleLogger } from '@microsoft/teams.common';
import { McpClientPlugin } from '@microsoft/teams.mcpclient';
import {
  AnthropicChatModel,
  AnthropicModel,
  getYouMcpConfig,
} from '@youdotcom-oss/teams-anthropic';

// Validate environment
if (!process.env.ANTHROPIC_API_KEY) {
  throw new Error('ANTHROPIC_API_KEY environment variable is required');
}

if (!process.env.YDC_API_KEY) {
  throw new Error('YDC_API_KEY environment variable is required');
}

// Configure logger
const logger = new ConsoleLogger('mcp-client', { level: 'info' });

// Create prompt with MCP integration
const prompt = new ChatPrompt(
  {
    instructions: 'You are a helpful assistant with access to web search and content extraction. Use these tools to provide accurate, up-to-date information.',
    model: new AnthropicChatModel({
      model: AnthropicModel.CLAUDE_SONNET_4_5,
      apiKey: process.env.ANTHROPIC_API_KEY,
      requestOptions: {
        max_tokens: 2048,
      },
    }),
  },
  [new McpClientPlugin({ logger })],
).usePlugin('mcpClient', getYouMcpConfig());

const app = new App();

app.on('message', async ({ send, activity }) => {
  await send({ type: 'typing' });

  const result = await prompt.send(activity.text);
  if (result.content) {
    await send(result.content);
  }
});

app.start().catch(console.error);

For EXISTING Apps with Claude:

If you already have Path A setup, add MCP integration:

Install MCP dependencies:
npm install @microsoft/teams.mcpclient



Add imports:
import { ChatPrompt } from '@microsoft/teams.ai';
import { ConsoleLogger } from '@microsoft/teams.common';
import { McpClientPlugin } from '@microsoft/teams.mcpclient';
import { getYouMcpConfig } from '@youdotcom-oss/teams-anthropic';



Validate You.com API key:
if (!process.env.YDC_API_KEY) {
  throw new Error('YDC_API_KEY environment variable is required');
}



Replace model with ChatPrompt:
const logger = new ConsoleLogger('mcp-client', { level: 'info' });

const prompt = new ChatPrompt(
  {
    instructions: 'Your instructions here',
    model: new AnthropicChatModel({
      model: AnthropicModel.CLAUDE_SONNET_4_5,
      apiKey: process.env.ANTHROPIC_API_KEY,
    }),
  },
  [new McpClientPlugin({ logger })],
).usePlugin('mcpClient', getYouMcpConfig());



Use prompt.send() instead of model.send():
const result = await prompt.send(activity.text);

### B5. Test MCP Integration

npm start

Ask Claude a question that requires web search:

"What are the latest developments in AI?"
"Search for React documentation"
"Extract content from https://example.com"

### Available Claude Models

ModelEnumBest ForClaude Opus 4.5AnthropicModel.CLAUDE_OPUS_4_5Complex tasks, highest capabilityClaude Sonnet 4.5AnthropicModel.CLAUDE_SONNET_4_5Balanced intelligence and speed (recommended)Claude Haiku 3.5AnthropicModel.CLAUDE_HAIKU_3_5Fast responses, efficiencyClaude Sonnet 3.5AnthropicModel.CLAUDE_SONNET_3_5Previous generation, stable

### Streaming Responses

const response = await model.send(
  { role: 'user', content: 'Write a short story' },
  {
    onChunk: async (delta) => {
      // Stream each token as it arrives
      process.stdout.write(delta);
    },
  }
);

### Function Calling

const response = await model.send(
  { role: 'user', content: 'What is the weather in San Francisco?' },
  {
    functions: {
      get_weather: {
        description: 'Get the current weather for a location',
        parameters: {
          location: { type: 'string', description: 'City name' },
        },
        handler: async (args: { location: string }) => {
          // Your API call here
          return { temperature: 72, conditions: 'Sunny' };
        },
      },
    },
  }
);

### Conversation Memory

import { LocalMemory } from '@microsoft/teams.ai';

const memory = new LocalMemory();

// First message
await model.send(
  { role: 'user', content: 'My name is Alice' },
  { messages: memory }
);

// Second message - Claude remembers
const response = await model.send(
  { role: 'user', content: 'What is my name?' },
  { messages: memory }
);
// Response: "Your name is Alice."

### Path A Checklist

Package installed: @youdotcom-oss/teams-anthropic
 Environment variable set: ANTHROPIC_API_KEY
 Model configured with AnthropicChatModel
 Model selection chosen (Opus/Sonnet/Haiku)
 App tested with basic messages

### Path B Checklist

All Path A items completed
 Additional package installed: @microsoft/teams.mcpclient
 Environment variable set: YDC_API_KEY
 Logger configured
 ChatPrompt configured with getYouMcpConfig()
 App tested with web search queries

### Path A Issues

"Cannot find module @youdotcom-oss/teams-anthropic"

npm install @youdotcom-oss/teams-anthropic @anthropic-ai/sdk

"ANTHROPIC_API_KEY environment variable is required"

Get key from: https://console.anthropic.com/
Add to .env: ANTHROPIC_API_KEY=your-key-here

"Invalid model identifier"

Use enum: AnthropicModel.CLAUDE_SONNET_4_5
Don't use string: 'claude-sonnet-4-5-20250929'

### Path B Issues

"YDC_API_KEY environment variable is required"

Get key from: https://you.com/platform/api-keys
Add to .env: YDC_API_KEY=your-key-here

"MCP connection fails"

Verify API key is valid at https://you.com/platform/api-keys
Check network connectivity
Review logger output for details

"Cannot find module @microsoft/teams.mcpclient"

npm install @microsoft/teams.mcpclient

### getYouMcpConfig() Utility

Automatically configures You.com MCP connection:

URL: https://api.you.com/mcp
Authentication: Bearer token from YDC_API_KEY
User-Agent: Includes package version for telemetry

// Option 1: Use environment variable (recommended)
getYouMcpConfig()

// Option 2: Custom API key
getYouMcpConfig({ apiKey: 'your-custom-key' })

### Resources

Package: https://github.com/youdotcom-oss/dx-toolkit/tree/main/packages/teams-anthropic
You.com MCP: https://documentation.you.com/developer-resources/mcp-server
Anthropic API: https://console.anthropic.com/
You.com API Keys: https://you.com/platform/api-keys
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: EdwardIrby
- Version: 1.1.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/teams-anthropic-integration)
- [Send to Agent page](https://openagent3.xyz/skills/teams-anthropic-integration/agent)
- [JSON manifest](https://openagent3.xyz/skills/teams-anthropic-integration/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/teams-anthropic-integration/agent.md)
- [Download page](https://openagent3.xyz/downloads/teams-anthropic-integration)