home / skills / youdotcom-oss / agent-skills / ydc-openai-agent-sdk-integration

ydc-openai-agent-sdk-integration skill

/skills/ydc-openai-agent-sdk-integration

This skill assists developers integrate OpenAI Agents SDK with You.com MCP, enabling hosted or streamable HTTP MCP setups for Python and TypeScript.

npx playbooks add skill youdotcom-oss/agent-skills --skill ydc-openai-agent-sdk-integration

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
17.5 KB
---
name: ydc-openai-agent-sdk-integration
description: |
  Integrate OpenAI Agents SDK with You.com MCP server - Hosted and Streamable HTTP support for Python and TypeScript.
  - MANDATORY TRIGGERS: OpenAI Agents SDK, OpenAI agents, openai-agents, @openai/agents, integrating OpenAI with MCP
  - Use when: developer mentions OpenAI Agents SDK, needs MCP integration with OpenAI agents
license: MIT
compatibility: Python 3.10+ or Node.js 18+ or Bun 1.0+ with TypeScript
allowed-tools: Read Write Edit Bash(pip:install) Bash(npm:install) Bash(bun:add)
metadata:
  author: youdotcom-oss
  category: sdk-integration
  version: "1.1.0"
  keywords: openai,openai-agents,agent-sdk,mcp,you.com,integration,hosted-mcp,streamable-http,web-search,python,typescript
---

# Integrate OpenAI Agents SDK with You.com MCP

Interactive workflow to set up OpenAI Agents SDK with You.com's MCP server.

## Workflow

1. **Ask: Language Choice**
   * Python or TypeScript?

2. **Ask: MCP Configuration Type**
   * **Hosted MCP** (OpenAI-managed with server URL): Recommended for simplicity
   * **Streamable HTTP** (Self-managed connection): For custom infrastructure

3. **Install Package**
   * Python: `pip install openai-agents`
   * TypeScript: `npm install @openai/agents`

4. **Ask: Environment Variables**

   **For Both Modes:**
   * `YDC_API_KEY` (You.com API key for Bearer token)
   * `OPENAI_API_KEY` (OpenAI API key)

   Have they set them?
   * If NO: Guide to get keys:
     - YDC_API_KEY: https://you.com/platform/api-keys
     - OPENAI_API_KEY: https://platform.openai.com/api-keys

5. **Ask: File Location**
   * NEW file: Ask where to create and what to name
   * EXISTING file: Ask which file to integrate into (add MCP config)

6. **Create/Update File**

   **For NEW files:**
   * Use the complete template code from the "Complete Templates" section below
   * User can run immediately with their API keys set

   **For EXISTING files:**
   * Add MCP server configuration to their existing code

   **Hosted MCP configuration block (Python)**:
   ```python
   from agents import Agent, Runner
   from agents import HostedMCPTool

   # Validate: ydc_api_key = os.getenv("YDC_API_KEY")
   agent = Agent(
       name="Assistant",
       instructions="Use You.com tools to answer questions.",
       tools=[
           HostedMCPTool(
               tool_config={
                   "type": "mcp",
                   "server_label": "ydc",
                   "server_url": "https://api.you.com/mcp",
                   "headers": {
                       "Authorization": f"Bearer {ydc_api_key}"
                   },
                   "require_approval": "never",
               }
           )
       ],
   )
   ```

   **Hosted MCP configuration block (TypeScript)**:
   ```typescript
   import { Agent, hostedMcpTool } from '@openai/agents';

   // Validate: const ydcApiKey = process.env.YDC_API_KEY;
   const agent = new Agent({
     name: 'Assistant',
     instructions: 'Use You.com tools to answer questions.',
     tools: [
       hostedMcpTool({
        serverLabel: 'ydc',
         serverUrl: 'https://api.you.com/mcp',
         headers: {
           Authorization: `Bearer ${ydcApiKey}`,
         },
       }),
     ],
   });
   ```

   **Streamable HTTP configuration block (Python)**:
   ```python
   from agents import Agent, Runner
   from agents.mcp import MCPServerStreamableHttp

   # Validate: ydc_api_key = os.getenv("YDC_API_KEY")
   async with MCPServerStreamableHttp(
       name="You.com MCP Server",
       params={
           "url": "https://api.you.com/mcp",
           "headers": {"Authorization": f"Bearer {ydc_api_key}"},
           "timeout": 10,
       },
       cache_tools_list=True,
       max_retry_attempts=3,
   ) as server:
       agent = Agent(
           name="Assistant",
           instructions="Use You.com tools to answer questions.",
           mcp_servers=[server],
       )
   ```

   **Streamable HTTP configuration block (TypeScript)**:
   ```typescript
   import { Agent, MCPServerStreamableHttp } from '@openai/agents';

   // Validate: const ydcApiKey = process.env.YDC_API_KEY;
   const mcpServer = new MCPServerStreamableHttp({
     url: 'https://api.you.com/mcp',
     name: 'You.com MCP Server',
     requestInit: {
       headers: {
         Authorization: `Bearer ${ydcApiKey}`,
       },
     },
   });

   const agent = new Agent({
     name: 'Assistant',
     instructions: 'Use You.com tools to answer questions.',
     mcpServers: [mcpServer],
   });
   ```

## Complete Templates

Use these complete templates for new files. Each template is ready to run with your API keys set.

### Python Hosted MCP Template (Complete Example)

```python
"""
OpenAI Agents SDK with You.com Hosted MCP
Python implementation with OpenAI-managed infrastructure
"""

import os
import asyncio
from agents import Agent, Runner
from agents import HostedMCPTool

# Validate environment variables
ydc_api_key = os.getenv("YDC_API_KEY")
openai_api_key = os.getenv("OPENAI_API_KEY")

if not ydc_api_key:
    raise ValueError(
        "YDC_API_KEY environment variable is required. "
        "Get your key at: https://you.com/platform/api-keys"
    )

if not openai_api_key:
    raise ValueError(
        "OPENAI_API_KEY environment variable is required. "
        "Get your key at: https://platform.openai.com/api-keys"
    )


async def main():
    """
    Example: Search for AI news using You.com hosted MCP tools
    """
    # Configure agent with hosted MCP tools
    agent = Agent(
        name="AI News Assistant",
        instructions="Use You.com tools to search for and answer questions about AI news.",
        tools=[
            HostedMCPTool(
                tool_config={
                    "type": "mcp",
                    "server_label": "ydc",
                    "server_url": "https://api.you.com/mcp",
                    "headers": {
                        "Authorization": f"Bearer {ydc_api_key}"
                    },
                    "require_approval": "never",
                }
            )
        ],
    )

    # Run agent with user query
    result = await Runner.run(
        agent,
        "Search for the latest AI news from this week"
    )

    print(result.final_output)


if __name__ == "__main__":
    asyncio.run(main())
```

### Python Streamable HTTP Template (Complete Example)

```python
"""
OpenAI Agents SDK with You.com Streamable HTTP MCP
Python implementation with self-managed connection
"""

import os
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

# Validate environment variables
ydc_api_key = os.getenv("YDC_API_KEY")
openai_api_key = os.getenv("OPENAI_API_KEY")

if not ydc_api_key:
    raise ValueError(
        "YDC_API_KEY environment variable is required. "
        "Get your key at: https://you.com/platform/api-keys"
    )

if not openai_api_key:
    raise ValueError(
        "OPENAI_API_KEY environment variable is required. "
        "Get your key at: https://platform.openai.com/api-keys"
    )


async def main():
    """
    Example: Search for AI news using You.com streamable HTTP MCP server
    """
    # Configure streamable HTTP MCP server
    async with MCPServerStreamableHttp(
        name="You.com MCP Server",
        params={
            "url": "https://api.you.com/mcp",
            "headers": {"Authorization": f"Bearer {ydc_api_key}"},
            "timeout": 10,
        },
        cache_tools_list=True,
        max_retry_attempts=3,
    ) as server:
        # Configure agent with MCP server
        agent = Agent(
            name="AI News Assistant",
            instructions="Use You.com tools to search for and answer questions about AI news.",
            mcp_servers=[server],
        )

        # Run agent with user query
        result = await Runner.run(
            agent,
            "Search for the latest AI news from this week"
        )

        print(result.final_output)


if __name__ == "__main__":
    asyncio.run(main())
```

### TypeScript Hosted MCP Template (Complete Example)

```typescript
/**
 * OpenAI Agents SDK with You.com Hosted MCP
 * TypeScript implementation with OpenAI-managed infrastructure
 */

import { Agent, run, hostedMcpTool } from '@openai/agents';

// Validate environment variables
const ydcApiKey = process.env.YDC_API_KEY;
const openaiApiKey = process.env.OPENAI_API_KEY;

if (!ydcApiKey) {
  throw new Error(
    'YDC_API_KEY environment variable is required. ' +
      'Get your key at: https://you.com/platform/api-keys'
  );
}

if (!openaiApiKey) {
  throw new Error(
    'OPENAI_API_KEY environment variable is required. ' +
      'Get your key at: https://platform.openai.com/api-keys'
  );
}

/**
 * Example: Search for AI news using You.com hosted MCP tools
 */
async function main() {
  // Configure agent with hosted MCP tools
  const agent = new Agent({
    name: 'AI News Assistant',
    instructions:
      'Use You.com tools to search for and answer questions about AI news.',
    tools: [
      hostedMcpTool({
        serverLabel: 'ydc',
        serverUrl: 'https://api.you.com/mcp',
        headers: {
          Authorization: `Bearer ${ydcApiKey}`,
        },
      }),
    ],
  });

  // Run agent with user query
  const result = await run(
    agent,
    'Search for the latest AI news from this week'
  );

  console.log(result.finalOutput);
}

main().catch(console.error);
```

### TypeScript Streamable HTTP Template (Complete Example)

```typescript
/**
 * OpenAI Agents SDK with You.com Streamable HTTP MCP
 * TypeScript implementation with self-managed connection
 */

import { Agent, run, MCPServerStreamableHttp } from '@openai/agents';

// Validate environment variables
const ydcApiKey = process.env.YDC_API_KEY;
const openaiApiKey = process.env.OPENAI_API_KEY;

if (!ydcApiKey) {
  throw new Error(
    'YDC_API_KEY environment variable is required. ' +
      'Get your key at: https://you.com/platform/api-keys'
  );
}

if (!openaiApiKey) {
  throw new Error(
    'OPENAI_API_KEY environment variable is required. ' +
      'Get your key at: https://platform.openai.com/api-keys'
  );
}

/**
 * Example: Search for AI news using You.com streamable HTTP MCP server
 */
async function main() {
  // Configure streamable HTTP MCP server
  const mcpServer = new MCPServerStreamableHttp({
    url: 'https://api.you.com/mcp',
    name: 'You.com MCP Server',
    requestInit: {
      headers: {
        Authorization: `Bearer ${ydcApiKey}`,
      },
    },
  });

  try {
    // Connect to MCP server
    await mcpServer.connect();

    // Configure agent with MCP server
    const agent = new Agent({
      name: 'AI News Assistant',
      instructions:
        'Use You.com tools to search for and answer questions about AI news.',
      mcpServers: [mcpServer],
    });

    // Run agent with user query
    const result = await run(
      agent,
      'Search for the latest AI news from this week'
    );

    console.log(result.finalOutput);
  } finally {
    // Clean up connection
    await mcpServer.close();
  }
}

main().catch(console.error);
```

## MCP Configuration Types

### Hosted MCP (Recommended)

**What it is:** OpenAI manages the MCP connection and tool routing through their Responses API.

**Benefits:**
- ✅ Simpler configuration (no connection management)
- ✅ OpenAI handles authentication and retries
- ✅ Lower latency (tools run in OpenAI infrastructure)
- ✅ Automatic tool discovery and listing
- ✅ No need to manage async context or cleanup

**Use when:**
- Building production applications
- Want minimal boilerplate code
- Need reliable tool execution
- Don't require custom transport layer

**Configuration:**

**Python:**
```python
from agents import HostedMCPTool

tools=[
    HostedMCPTool(
        tool_config={
            "type": "mcp",
            "server_label": "ydc",
            "server_url": "https://api.you.com/mcp",
            "headers": {
                "Authorization": f"Bearer {os.environ['YDC_API_KEY']}"
            },
            "require_approval": "never",
        }
    )
]
```

**TypeScript:**
```typescript
import { hostedMcpTool } from '@openai/agents';

tools: [
  hostedMcpTool({
    serverLabel: 'ydc',
    serverUrl: 'https://api.you.com/mcp',
    headers: {
      Authorization: `Bearer ${process.env.YDC_API_KEY}`,
    },
  }),
]
```

### Streamable HTTP MCP

**What it is:** You manage the MCP connection and transport layer yourself.

**Benefits:**
- ✅ Full control over network connection
- ✅ Custom infrastructure integration
- ✅ Can add custom headers, timeouts, retry logic
- ✅ Run MCP server in your own environment
- ✅ Better for testing and development

**Use when:**
- Need custom transport configuration
- Running MCP server in your infrastructure
- Require specific networking setup
- Development and testing scenarios

**Configuration:**

**Python:**
```python
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(
    name="You.com MCP Server",
    params={
        "url": "https://api.you.com/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['YDC_API_KEY']}"},
        "timeout": 10,
    },
    cache_tools_list=True,
    max_retry_attempts=3,
) as server:
    agent = Agent(mcp_servers=[server])
```

**TypeScript:**
```typescript
import { MCPServerStreamableHttp } from '@openai/agents';

const mcpServer = new MCPServerStreamableHttp({
  url: 'https://api.you.com/mcp',
  name: 'You.com MCP Server',
  requestInit: {
    headers: {
      Authorization: `Bearer ${process.env.YDC_API_KEY}`,
    },
  },
});

await mcpServer.connect();
try {
  const agent = new Agent({ mcpServers: [mcpServer] });
  // Use agent
} finally {
  await mcpServer.close();
}
```

## Available You.com Tools

After configuration, agents can discover and use:
- `mcp__ydc__you_search` - Web and news search
- `mcp__ydc__you_contents` - Web page content extraction

## Environment Variables

Both API keys are required for both configuration modes:

```bash
# Add to your .env file or shell profile
export YDC_API_KEY="your-you-api-key-here"
export OPENAI_API_KEY="your-openai-api-key-here"
```

**Get your API keys:**
- You.com: https://you.com/platform/api-keys
- OpenAI: https://platform.openai.com/api-keys

## Validation Checklist

Before completing:

- [ ] Package installed: `openai-agents` (Python) or `@openai/agents` (TypeScript)
- [ ] Environment variables set: `YDC_API_KEY` and `OPENAI_API_KEY`
- [ ] Template copied or configuration added to existing file
- [ ] MCP configuration type chosen (Hosted or Streamable HTTP)
- [ ] Authorization headers configured with Bearer token
- [ ] File is executable (Python) or can be compiled (TypeScript)
- [ ] Ready to test with example query

## Testing Your Integration

**Python:**
```bash
python your-file.py
```

**TypeScript:**
```bash
# With tsx (recommended for quick testing)
npx tsx your-file.ts

# Or compile and run
tsc your-file.ts && node your-file.js
```

## Common Issues

<details>
<summary><strong>Cannot find module @openai/agents</strong></summary>

Install the package:

```bash
# NPM
npm install @openai/agents

# Bun
bun add @openai/agents

# Yarn
yarn add @openai/agents

# pnpm
pnpm add @openai/agents
```

</details>

<details>
<summary><strong>YDC_API_KEY environment variable is required</strong></summary>

Set your You.com API key:

```bash
export YDC_API_KEY="your-api-key-here"
```

Get your key at: https://you.com/platform/api-keys

</details>

<details>
<summary><strong>OPENAI_API_KEY environment variable is required</strong></summary>

Set your OpenAI API key:

```bash
export OPENAI_API_KEY="your-api-key-here"
```

Get your key at: https://platform.openai.com/api-keys

</details>

<details>
<summary><strong>MCP connection fails with 401 Unauthorized</strong></summary>

Verify your YDC_API_KEY is valid:
1. Check the key at https://you.com/platform/api-keys
2. Ensure no extra spaces or quotes in the environment variable
3. Verify the Authorization header format: `Bearer ${YDC_API_KEY}`

</details>

<details>
<summary><strong>Tools not available or not being called</strong></summary>

**For Both Modes:**
- Ensure `server_url: "https://api.you.com/mcp"` is correct
- Verify Authorization header includes `Bearer` prefix
- Check `YDC_API_KEY` environment variable is set
- Confirm `require_approval` is set to `"never"` for automatic execution

**For Streamable HTTP specifically:**
- Ensure MCP server is connected before creating agent
- Verify connection was successful before running agent

</details>

<details>
<summary><strong>Connection timeout or network errors</strong></summary>

**For Streamable HTTP only:**

Increase timeout or retry attempts:

**Python:**
```python
async with MCPServerStreamableHttp(
    params={
        "url": "https://api.you.com/mcp",
        "headers": {"Authorization": f"Bearer {os.environ['YDC_API_KEY']}"},
        "timeout": 30,  # Increased timeout
    },
    max_retry_attempts=5,  # More retries
) as server:
    # ...
```

**TypeScript:**
```typescript
const mcpServer = new MCPServerStreamableHttp({
  url: 'https://api.you.com/mcp',
  requestInit: {
    headers: { Authorization: `Bearer ${process.env.YDC_API_KEY}` },
    // Add custom timeout via fetch options
  },
});
```

</details>



## Additional Resources

* **OpenAI Agents SDK (Python)**: https://openai.github.io/openai-agents-python/
* **OpenAI Agents SDK (TypeScript)**: https://openai.github.io/openai-agents-js/
* **MCP Configuration (Python)**: https://openai.github.io/openai-agents-python/mcp/
* **MCP Configuration (TypeScript)**: https://openai.github.io/openai-agents-js/guides/mcp/
* **You.com MCP Server**: https://documentation.you.com/developer-resources/mcp-server
* **API Keys**:
  - You.com: https://you.com/platform/api-keys
  - OpenAI: https://platform.openai.com/api-keys

Overview

This skill integrates the OpenAI Agents SDK with You.com MCP so agents can call You.com tools from Python or TypeScript. It provides ready-to-run templates for both Hosted MCP and Streamable HTTP modes, plus validation checks and environment guidance. Use it to wire @openai/agents or openai-agents into your MCP-enabled agent workflows quickly.

How this skill works

The integration configures an Agent instance with either a HostedMCPTool (OpenAI-managed) or an MCPServerStreamableHttp (self-managed) and injects You.com authorization headers using YDC_API_KEY. It validates required environment variables (YDC_API_KEY and OPENAI_API_KEY), installs the proper package (openai-agents or @openai/agents), and offers complete Python and TypeScript templates to run immediately. After setup, the agent can discover You.com tools like web search and content extraction.

When to use it

  • You mention OpenAI Agents SDK or OpenAI agents and need You.com tool access
  • Building production apps that prefer Hosted MCP for simplicity and reliability
  • Implementing custom transport, timeouts, or retries with Streamable HTTP
  • Adding You.com tool discovery (mcp__ydc__you_search, mcp__ydc__you_contents) to agent workflows
  • Integrating @openai/agents or openai-agents into developer tools or CI pipelines

Best practices

  • Choose Hosted MCP for production to offload connection management and reduce boilerplate
  • Use Streamable HTTP when you need custom headers, timeouts, or to run MCP in your infra
  • Store keys in environment variables (.env) and validate YDC_API_KEY and OPENAI_API_KEY at startup
  • Add require_approval or tool-level restrictions if agents will run untrusted prompts
  • Follow the validation checklist: package installed, env vars set, templates integrated, and Authorization headers configured

Example use cases

  • Python agent that searches the web for latest AI news using Hosted MCP template
  • TypeScript dev tool that extracts web page content via mcp__ydc__you_contents using Streamable HTTP
  • CI job that runs agent tests against You.com tools with mocked MCP server
  • Embedding You.com search and extraction into an AI development platform using @openai/agents

FAQ

Which package should I install?

Install openai-agents for Python or @openai/agents for TypeScript depending on your language choice.

When should I use Hosted MCP vs Streamable HTTP?

Use Hosted MCP for simplicity, reliability, and lower maintenance; use Streamable HTTP when you need custom transport, headers, or local control.

What environment variables are required?

Set YDC_API_KEY (You.com) and OPENAI_API_KEY (OpenAI). Validate both before running the agent.