> **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 MrScraper MCP server

The MrScraper MCP connector routes your AI agent's tool calls to MrScraper's own MCP server through Scalekit. Each user signs in to MrScraper once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 3 tools.

**Authentication:** OAuth2.1/DCR
**Categories:** AI, Automation, Developer Tools
**Tools:** 3: 3 read, 0 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own MrScraper MCP server app
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=MRSCRAPERMCP)

## 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 MrScraper MCP connection

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

4. ### Register an OAuth app

   MrScraper MCP server connections use your own OAuth app. Register one with MrScraper MCP server and add the redirect URI you copied.

   Then enter the app's Client ID and Client Secret on the MrScraper MCP connection.

5. ### 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 = 'mrscrapermcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize MrScraper 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: 'mrscrapermcp_status',
     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 = "mrscrapermcp"
   identifier = "user_123"

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

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

   ```bash
   python quickstart.py
   ```

   Each user signs in once. 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: 'mrscrapermcp_scraperapi',
  toolInput: {
    url: '<url>',
  },
  connector: 'mrscrapermcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="mrscrapermcp_scraperapi",
    tool_input={
        "url": "<url>",
    },
    connection_name="mrscrapermcp",
    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.

### `mrscrapermcp_scraperapi`

Scraper API · Read-only

Retrieves a known page through MrScraper's Scraper API as HTML, Markdown, a screenshot, or a combination. Matches the Python SDK's scraper_api options. Omit browser_rendering for automatic browser fallback; screenshot=true always enables it. super enables real-device routing independently. home_page maps to warmStart. Proxy, cookie, target-header, retry, and timeout options control page loading. Returns status_code, data, and sanitized headers.

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

Inputs:

- `url` (`string`, required): Required absolute HTTP or HTTPS page URL.
- `block_resources` (`boolean`, optional): Block images, CSS, and fonts during loading. Default: `false`.
- `browser_rendering` (`boolean`, optional): True forces browser rendering, false disables it; omit or use null for automatic fallback.
- `bypass_proxy` (`boolean`, optional): Enable the API's proxy-bypass/resource-blocking behavior. Default: `false`.
- `cookie_jar` (`string`, optional): Cookie configuration string, such as domain=example.com&country=us&max_used=100&max_age=50m.
- `discard_token_secret` (`string`, optional): Optional value for the x-discard-token-secret upstream header. Default: ``.
- `geo_code` (`string`, optional): Proxy geolocation country code, such as US, ID, or SG. Default: `US`.
- `headers` (`object`, optional): Target page request headers as an object or JSON string.
- `home_page` (`boolean`, optional): Visit the site's root before the target URL; sent as warmStart=true. Default: `false`.
- `html` (`boolean`, optional): Request HTML page content. Default: `true`.
- `markdown` (`boolean`, optional): Request Markdown page content. Default: `false`.
- `max_retries` (`integer`, optional): Maximum Web Unblocker retries; 0 disables retries. Default: `3`.
- `proxy` (`string`, optional): Custom proxy in username:password@host:port form.
- `proxy_country` (`string`, optional): Compatibility country option sent as proxyCountry.
- `screenshot` (`boolean`, optional): Capture a screenshot; always enables browser rendering. Default: `false`.
- `stream` (`boolean`, optional): Ask the API to stream; the MCP server buffers the response into the normal envelope.
- `super` (`boolean`, optional): Use real-device routing independently of browser rendering. Default: `false`.
- `timeout` (`integer`, optional): Page timeout in seconds (1–300); transport allows 30 additional seconds. Default: `120`.
- `token_cap` (`integer`, optional): Optional nonnegative retry-token budget.
- `use_proxy` (`boolean`, optional): Allow the service to use a configured proxy. Default: `true`.
- `wait_for_selector` (`string`, optional): CSS selector to wait for before returning page content.

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

### `mrscrapermcp_status`

Account Status · Read-only

Returns the connected MrScraper account's identity (name, email, and verification state), subscription status, token limit, token usage, remaining tokens, and rate limit. Use it to check the account and remaining quota, for example before a large batch of requests. It takes no input and reports account usage, not the progress of a request.

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

Inputs: none.

Example input: `{}`

### `mrscrapermcp_websearch`

Web Search · Read-only

Searches Google from query text or a Google search URL passed as url. Matches the Python SDK's web_search options. Set raw=false and format=json for parsed results; the SDK-compatible default raw=true returns HTML. Google URLs supply q, gl, hl, and start; explicit region, language, and page override URL-derived values. render_js enables dynamic features; timeout controls the local request deadline. Returns status_code, data, and sanitized headers.

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

Inputs:

- `url` (`string`, required): Required search query text or complete Google search URL.
- `format` (`string`, optional): Response representation when raw=false. One of: `json`, `html`. Default: `json`.
- `language` (`string`, optional): Language code; overrides hl from a Google search URL.
- `page` (`integer`, optional): One-based result page; overrides the page derived from start in a Google URL.
- `raw` (`boolean`, optional): SDK compatibility default: true requests HTML and overrides format. Set false for parsed JSON results. Default: `true`.
- `region` (`string`, optional): Country code; overrides gl from a Google search URL.
- `render_js` (`boolean`, optional): Render JavaScript-dependent search features. Default: `false`.
- `timeout` (`number`, optional): Local upstream HTTP deadline in seconds; omitted from the JSON body. Default: `600`.

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

## Related

Other AI connectors ([all 134](/agentkit/connectors/?category=ai)):

- [Chorus](/agentkit/connectors/chorus/): Scalekit connector, Username and password, 9 tools
- [Gong](/agentkit/connectors/gong/): Scalekit connector, OAuth, 69 tools
- [Jiminny](/agentkit/connectors/jiminny/): Scalekit connector, Access token, 27 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 |
