> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the You.com MCP server

The You.com MCP connector routes your AI agent's tool calls to You.com's own MCP server through Scalekit. Each user connects their own You.com access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 6 tools.

**Authentication:** Bearer Token
**Categories:** Search, AI
**Tools:** 6: 3 read, 3 write, 0 destructive
**Users sign in with:** Access token
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=YOUMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the You.com MCP connection

   In **AgentKit > Connections**, create a You.com MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   **Console steps with screenshots:**

   Register your You.com API key with Scalekit so it can authenticate and proxy search requests on behalf of your users. You.com MCP uses API key authentication.

   1. ### Get a You.com API key

      - Go to [you.platform](https://you.platform) and sign in or create an account.
      - In the left sidebar, under **API Management**, click **API Keys**.
      - Enter a name for your key (e.g. `Agent Auth`) and click **Create**.

      > Image: You.com API Keys page showing the Create new key form and existing keys list

      - Copy the generated key — it starts with `ydc-sk-`.

   2. ### Create a connection in Scalekit

      - In the [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**.
      - Search for **You.com MCP** and click **Create**.
      - Note the **Connection name** — use this as `connection_name` in your code (e.g., `youmcp`).

   3. ### Add a connected account

      Connected accounts link a specific user identifier in your system to a You.com API key. Add one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.

      **In the dashboard, to test**

      - Open the connection and click the **Connected Accounts** tab → **Add account**.
      - Fill in **Your User's ID** and **API Key**, then click **Save**.

      **From your backend, if your app already has the credentials**

      For example, when users enter them on a settings page in your app:

        **Node.js**

        ```ts
        import { ConnectorStatus } from '@scalekit-sdk/node'

        const authorizationDetails = {
          details: {
            case: 'staticAuth',
            value: { details: { token: 'ydc-sk-...' } },
          },
        }

        let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({
          connectionName: 'youmcp',
          identifier: 'user_123',
          authorizationDetails,
        })

        // Make sure the account is ACTIVE before the first tool call.
        if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {
          ;({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({
            connectionName: 'youmcp',
            identifier: 'user_123',
            authorizationDetails,
          }))
        }
        ```

        **Python**

        ```python
        authorization_details = {"static_auth": {"token": "ydc-sk-..."}}

        response = scalekit_client.actions.upsert_connected_account(
            connection_name="youmcp",
            identifier="user_123",
            authorization_details=authorization_details,
        )

        # Make sure the account is ACTIVE before the first tool call.
        if response.connected_account.status != "ACTIVE":
            response = scalekit_client.actions.upsert_connected_account(
                connection_name="youmcp",
                identifier="user_123",
                authorization_details=authorization_details,
            )
        ```

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'youmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize You.com MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'youmcp_you-balance',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "youmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize You.com MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="youmcp_you-balance",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user opens the link once and enters their You.com MCP server credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'youmcp_you-answer',
  toolInput: {
    query: '<query>',
  },
  connector: 'youmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="youmcp_you-answer",
    tool_input={
        "query": "<query>",
    },
    connection_name="youmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `youmcp_you-answer`

You Answer · Read-only

Fast live-web answer generation returning one synthesized answer with verified inline citations, citation excerpts, and supporting web results. Use when the caller wants a single sourced answer; use research for deeper multi-step investigation, effort control, structured output, or background tasks. Supports freshness, country, language, and domain filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`string`, required): Focused live-web question or lookup request. Returns a synthesized answer with inline citations, citation excerpts, and supporting web results.
- `boost_domains` (`array`, optional): Domains to prefer in ranking (up to 500). Can combine with exclude_domains, not include_domains.
- `country` (`string`, optional): A supported country code that determines the geographical focus. One of: `AR`, `AU`, `AT`, `BE`, `BR`, `CA`, `CL`, `DK`, `FI`, `FR`, `DE`, `HK`, `IN`, `ID`, `IT`, `JP`, `KR`, `MY`, `MX`, `NL`, `NZ`, `NO`, `CN`, `PL`, `PT`, `PH`, `RU`, `SA`, `ZA`, `ES`, `SE`, `CH`, `TW`, `TR`, `GB`, `US`.
- `exclude_domains` (`array`, optional): Domains to exclude from results (up to 500).
- `freshness` (`string`, optional): day/week/month/year or YYYY-MM-DDtoYYYY-MM-DD.
- `include_domains` (`array`, optional): Domains to exclusively include (up to 500).
- `language` (`string`, optional): A supported BCP 47 language tag that determines the language. One of: `AR`, `EU`, `BN`, `BG`, `CA`, `HR`, `CS`, `DA`, `NL`, `EN`, `EN-GB`, `ET`, `FI`, `FR`, `GL`, `DE`, `EL`, `GU`, `HE`, `HI`, `HU`, `IS`, `IT`, `KN`, `KO`, `LV`, `LT`, `MS`, `ML`, `MR`, `NB`, `PL`, `PA`, `RO`, `RU`, `SR`, `SK`, `SL`, `ES`, `SV`, `TA`, `TE`, `TH`, `TR`, `UK`, `VI`.

Example input: `{"query":"<query>"}`

### `youmcp_you-balance`

You Account Balance · Read-only

Get the remaining credit balance for the billing entity associated with your You.com API key. Balance is in cents (divide by 100 for USD).

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `youmcp_you-discover`

You Agent Discovery · Read-only

Discover AI agents, MCP servers, A2A agents, and skills via ARD Agent Finder services. Search-only — never installs or connects. Returns ranked results with relevance scores.

Read only: yes. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`string`, required): Natural-language task to find agents/tools for.
- `finder` (`string`, optional): Which Agent Finder discovery service(s) to query. One of: `github`, `huggingface`, `all`. Default: `all`.
- `finder_url` (`string`, optional): Optional custom finder URL (must be public http/https). Augments selected finders.
- `limit` (`integer`, optional): Max consolidated results (1–25). Default: `10`.

Example input: `{"query":"<query>"}`

### `youmcp_you-contents`

You Contents · Write

Extract content from one or more web pages in markdown, HTML, or structured metadata format. Supports up to 100 URLs per call.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `urls` (`array`, required): One or more public HTTP/HTTPS URLs to extract content from (up to 100).
- `crawl_timeout` (`number`, optional): Timeout in seconds for live-crawling pages (1–60).
- `format` (`string`, optional): (Deprecated) Output format - use formats array instead. One of: `markdown`, `html`.
- `formats` (`array`, optional): Output formats to return: markdown (plain text), html (layout preserved), or metadata (structured data).

Example input: `{"urls":[]}`

### `youmcp_you-research`

You Research · Write

Research a topic in depth using You.com's AI. Returns comprehensive answers with cited sources at configurable effort levels (lite, standard, deep, exhaustive).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `input` (`string`, required): The research question or complex query for in-depth multi-step investigation (max 40,000 characters).
- `research_effort` (`string`, optional): How much effort to spend: lite (fast), standard (balanced), deep (thorough), exhaustive (most comprehensive). One of: `lite`, `standard`, `deep`, `exhaustive`. Default: `standard`.

Example input: `{"input":"<input>"}`

### `youmcp_you-search`

You Search · Write

Search the web and news using You.com. Supports domain filtering, language and country targeting, freshness filters, and live-crawl for full page content.

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `query` (`string`, required): Search query string. Supports operators: site:domain.com, filetype:pdf, +term, -term, AND/OR/NOT, lang:en.
- `count` (`integer`, optional): Maximum number of results to return per section (1–100).
- `country` (`string`, optional): Country code to localize search results (ISO 3166-1 alpha-2). One of: `AR`, `AU`, `AT`, `BE`, `BR`, `CA`, `CL`, `DK`, `FI`, `FR`, `DE`, `HK`, `IN`, `ID`, `IT`, `JP`, `KR`, `MY`, `MX`, `NL`, `NZ`, `NO`, `CN`, `PL`, `PT`, `PH`, `RU`, `SA`, `ZA`, `ES`, `SE`, `CH`, `TW`, `TR`, `GB`, `US`.
- `crawl_timeout` (`integer`, optional): Timeout in seconds for live-crawling pages (1–60).
- `exclude_domains` (`array`, optional): List of domains to exclude from search results (up to 500).
- `freshness` (`string`, optional): Limit results by recency: day, week, month, year, or a date range YYYY-MM-DDtoYYYY-MM-DD.
- `include_domains` (`array`, optional): List of domains to restrict search results to (up to 500).
- `language` (`string`, optional): Language code (BCP 47) to filter search results. One of: `AR`, `EU`, `BN`, `BG`, `CA`, `ZH-HANS`, `ZH-HANT`, `HR`, `CS`, `DA`, `NL`, `EN`, `EN-GB`, `ET`, `FI`, `FR`, `GL`, `DE`, `EL`, `GU`, `HE`, `HI`, `HU`, `IS`, `IT`, `JP`, `KN`, `KO`, `LV`, `LT`, `MS`, `ML`, `MR`, `NB`, `PL`, `PT-BR`, `PT-PT`, `PA`, `RO`, `RU`, `SR`, `SK`, `SL`, `ES`, `SV`, `TA`, `TE`, `TH`, `TR`, `UK`, `VI`.
- `livecrawl` (`string`, optional): Enable live-crawling of full page content for the specified section: web, news, or all. One of: `web`, `news`, `all`.
- `livecrawl_formats` (`array`, optional): Output formats for live-crawled content: html and/or markdown.
- `offset` (`integer`, optional): Pagination offset for results (0–9).
- `safesearch` (`string`, optional): Safe-search filter level applied to results. One of: `off`, `moderate`, `strict`.

Example input: `{"query":"<query>"}`

## Related

Other Search connectors ([all 36](/agentkit/connectors/?category=search)):

- [Supadata](/agentkit/connectors/supadata/): Scalekit connector, API key, 21 tools
- [Exa](/agentkit/connectors/exa/): Scalekit connector, API key, 21 tools
- [Brave Search](/agentkit/connectors/brave/): Scalekit connector, API key, 18 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
