> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended**:
> ```bash
> npx @scalekit-inc/cli setup
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents.
> 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 Context.dev MCP server

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

**Authentication:** OAuth 2.1/DCR
**Categories:** Search, AI, Developer Tools
**Tools:** 40: 28 read, 5 write, 7 destructive
**Users sign in with:** OAuth
**OAuth app:** Your own Context.dev MCP server app
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=CONTEXTDEVMCP)

## 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 Context.dev MCP connection

   In **AgentKit > Connections**, create a Context.dev 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

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

   Then enter the app's Client ID and Client Secret on the Context.dev 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 = 'contextdevmcp'
   const identifier = 'user_123'

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

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

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="contextdevmcp_get_monitor_limits",
       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: 'contextdevmcp_brand_retrieve_unified',
  toolInput: {
    body: '<body>',
  },
  connector: 'contextdevmcp',
  identifier: 'user_123',
})
```

**Python**

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

### `contextdevmcp_brand_retrieve_unified`

Get brand intelligence · Read-only

Retrieve machine-readable company and brand intelligence—logos, colors, descriptions, socials, links, industry, location, and more—from one domain, company name, work email, stock ticker, ISIN, transaction descriptor, or direct URL. Use get-brand for a visual card from a domain; use this tool for raw structured data or non-domain lookups.

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

Inputs:

- `body` (`string`, required): Brand lookup request. Provide exactly one lookup type: domain, company name, email, stock ticker, direct URL, or transaction descriptor.

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

### `contextdevmcp_brand_search`

Search brands · Read-only

Search indexed brands by company name or domain and return up to 10 lightweight matches. Supports prefix autocomplete, field selection, and typo tolerance. Use brand-retrieve-unified for a full profile or get-brand for a visual domain card.

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

Inputs:

- `query` (`string`, required): Search term, matched against the fields selected by queryBy (e.g. 'nike', 'nike.com', 'nik').
- `autocomplete` (`boolean`, optional): Whether the search term matches by prefix, so partial words match as they are typed (e.g. 'nik' matches Nike). Set to false to match whole words only.
- `queryBy` (`array`, optional): Fields to match the search term against, as a comma-separated list or repeated parameter: 'name', 'domain', or both. Defaults to both.
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.
- `typoTolerance` (`integer`, optional): Maximum number of typos tolerated when matching, from 0 to 2. Defaults to 0 (no typo tolerance).

Example input: `{"query":"nike"}`

### `contextdevmcp_get_batch`

Get batch status · Read-only

Retrieve one batch's status, progress, timing, credit accounting, errors, and download links when complete. Poll this after submit-batch; use get-batch-results only after the batch has completed.

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

Inputs:

- `batch_id` (`string`, required): Batch ID.

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

### `contextdevmcp_get_batch_results`

Get batch results · Read-only

Page through the successful and failed URL results of a completed batch as JSON. Use the returned cursor to continue when more results exist. For progress before completion, use get-batch instead.

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

Inputs:

- `batch_id` (`string`, required): Batch ID.
- `cursor` (`string`, optional): next_cursor from the previous page.
- `limit` (`integer`, optional): Records per page. Defaults to 25. A page can close early so its payload stays under ~8 MB; rely on next_cursor rather than counting records.

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

### `contextdevmcp_get_brand`

Show a brand profile · Read-only

Retrieve live brand intelligence for a domain and render a visual Context card with its logo, colors, slogan, description, social profiles, industry, location, and key links. Use this when a user wants to see or inspect a company's brand. Use brand-retrieve-unified instead for raw structured data or lookup by name, email, ticker, ISIN, transaction descriptor, or direct URL.

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

Inputs:

- `domain` (`string`, required): Domain to look up, e.g. 'stripe.com'. Bare domain, no https://.
- `maxSpeed` (`boolean`, optional): Optimize for speed, skipping slower enrichment steps.

Example input: `{"domain":"stripe.com"}`

### `contextdevmcp_get_change`

Get a detected change · Read-only

Retrieve one detected change with full text diffs, added or removed URLs, semantic evidence, confidence, importance, and the current snapshot when available. Use after either change-listing tool when the complete evidence is needed.

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

Inputs:

- `change_id` (`string`, required): Unique change ID returned by a monitor changes endpoint, for example `chg_123`.

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

### `contextdevmcp_get_log`

Get an API request log · Read-only

Retrieve one API request from the authenticated Context account by the request_id in a list-logs data entry, including its redacted retained input, response, timing, credits, status, and user agent. Zero-data-retention requests contain metadata but no retained input or response.

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

Inputs:

- `request_id` (`string`, required): The request ID of the logged API call.

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

### `contextdevmcp_get_monitor`

Get monitor configuration · Read-only

Retrieve one monitor's configuration, status, schedule, target, change-detection rules, webhook settings, and current baseline by ID. This reads the monitor definition; use list-monitor-runs for execution history or list-monitor-changes for detected changes.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.

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

### `contextdevmcp_get_monitor_limits`

Get monitor limits · Read-only

Retrieve the authenticated account's current monitor count and maximum allowed monitors. Use before create-monitor when checking available capacity.

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

Inputs: none.

Example input: `{}`

### `contextdevmcp_get_monitor_run`

Get a monitor run · Read-only

Retrieve one run for a monitor, including lifecycle status, timing, credits charged, and the detected change when present. Use after list-monitor-runs or run-monitor-now when the full outcome of one check is needed.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.
- `run_id` (`string`, required): Unique monitor run ID returned by run-monitor-now or list-monitor-runs, for example `run_123`.

Example input: `{"monitor_id":"<monitor_id>","run_id":"<run_id>"}`

### `contextdevmcp_get_news_search`

Search company news · Read-only

Search live and historical news for one company, identified by exactly one name, domain, ticker with an optional exchange, or ISIN. Choose at most one filter category: publisher domain, publisher country, article language, or article type; optionally add a publication date range. Paginate results with stable story IDs and verified entity relevance. Use web-search for broader topics or news that is not tied to one company.

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

Inputs:

- `searchBy` (`object`, required): What to search for.
- `cursor` (`string`, optional): Opaque next_cursor from the previous response, or null for the first page.
- `filterBy` (`object`, optional): Optional result filters. Use at most one of sourceDomain, sourceCountry, articleLanguage, or articleType. A date range may accompany that category; date.from must not exceed date.to.
- `limit` (`integer`, optional): Maximum results to return. Defaults to 10.
- `sortBy` (`object`, optional): Result ordering. Defaults to newest.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.

Example input: `{"searchBy":{}}`

### `contextdevmcp_get_webhook_delivery`

Get a webhook delivery · Read-only

Retrieve one webhook delivery from the authenticated account, including its status and latest attempt. Use list-webhook-deliveries to find its delivery_id.

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

Inputs:

- `delivery_id` (`string`, required): Delivery ID.
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.

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

### `contextdevmcp_list_account_runs`

List all monitor runs · Read-only

List monitor runs across the authenticated account. Use this for an organization-wide activity feed or operational overview; use list-monitor-runs when only one monitor matters.

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

Inputs:

- `cursor` (`string`, optional): Opaque pagination cursor from a previous response.
- `limit` (`integer`, optional): Maximum number of items to return per page (1-100). Defaults to 25.
- `status` (`string`, optional): Filter runs by lifecycle status. One of: `queued`, `running`, `completed`, `failed`, `skipped`.

Example input: `{}`

### `contextdevmcp_list_batches`

List scraping batches · Read-only

List asynchronous scraping batches from newest to oldest, with status, search, tag, and cursor filters. Use this to find a batch ID or review account activity; it does not return page-level results.

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

Inputs:

- `cursor` (`string`, optional): Cursor from the previous page.
- `limit` (`integer`, optional): Batches per page. Defaults to 25.
- `q` (`string`, optional): Free-text search term, matched against the batch id, crawl source (start URL or sitemap domain), and tags.
- `search_type` (`string`, optional): `prefix` for as-you-type prefix matching (default), `exact` for full-token matching. One of: `exact`, `prefix`.
- `status` (`string`, optional): Filter by status. One of: `queued`, `running`, `cancelling`, `completed`, `cancelled`, `failed`.
- `tags` (`string`, optional): Comma-separated list of tags to filter by (matches batches having any of them).

Example input: `{}`

### `contextdevmcp_list_changes`

List all detected changes · Read-only

List detected changes across all monitors in the authenticated account, with monitor, type, time, and tag filters. Use this for an account-wide change feed; use list-monitor-changes for one monitor.

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

Inputs:

- `change_detection_type` (`string`, optional): Filter by change detection type. One of: `exact`, `semantic`.
- `cursor` (`string`, optional): Opaque pagination cursor from a previous response.
- `limit` (`integer`, optional): Maximum number of items to return per page (1-100). Defaults to 25.
- `monitor_id` (`string`, optional): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.
- `since` (`string`, optional): Only include items at or after this ISO 8601 timestamp.
- `tag` (`string`, optional): Filter to items that have this tag.
- `target_type` (`string`, optional): Filter by target type. One of: `page`, `sitemap`, `extract`.
- `until` (`string`, optional): Only include items before this ISO 8601 timestamp.

Example input: `{}`

### `contextdevmcp_list_logs`

List API request logs · Read-only

List recent API requests from the authenticated Context account, newest first. Filter by time, endpoint path, API key ID, HTTP status, error code, tags, or request content. Use errors_only to investigate failures, then pass the request_id from a data entry to get-log for the retained request and response. Defaults to the last 24 hours and does not create another usage-log entry.

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

Inputs:

- `error_code` (`string`, optional): Filter by the `error_code` returned in the response.
- `errors_only` (`boolean`, optional): Only include requests that returned a 4xx or 5xx status.
- `from` (`string`, optional): Only include requests at or after this ISO 8601 timestamp. Defaults to 24 hours before `to`.
- `key_id` (`string`, optional): Filter by the API key that made the request.
- `limit` (`integer`, optional): Number of log entries per page.
- `page` (`integer`, optional): Page number, starting at 1.
- `path` (`string`, optional): Filter by endpoint path, with or without the /v1 prefix.
- `search` (`string`, optional): Case-insensitive substring match against the request query and body, e.g. a domain.
- `status_code` (`integer`, optional): Filter by exact HTTP status code.
- `tags` (`string`, optional): Comma-separated request tags. Matches requests carrying any of them. Up to 20 tags, each 1-50 characters.
- `to` (`string`, optional): Only include requests at or before this ISO 8601 timestamp. Defaults to now.

Example input: `{}`

### `contextdevmcp_list_monitor_changes`

List changes for a monitor · Read-only

List changes detected by one monitor, with time and tag filters. Use this for a monitor-specific change history, then call get-change when full diffs, evidence, confidence, and importance are needed.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.
- `cursor` (`string`, optional): Opaque pagination cursor from a previous response.
- `limit` (`integer`, optional): Maximum number of items to return per page (1-100). Defaults to 25.
- `since` (`string`, optional): Only include items at or after this ISO 8601 timestamp.
- `tag` (`string`, optional): Filter to items that have this tag.
- `until` (`string`, optional): Only include items before this ISO 8601 timestamp.

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

### `contextdevmcp_list_monitor_credit_usage`

Get monitor credit usage · Read-only

Report credits charged by monitor over a time window, ordered by the monitors using the most credits. Use this for spend analysis and optimization, not for run or change details.

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

Inputs:

- `since` (`string`, optional): Only include items at or after this ISO 8601 timestamp.
- `until` (`string`, optional): Only include items before this ISO 8601 timestamp.

Example input: `{}`

### `contextdevmcp_list_monitor_runs`

List runs for a monitor · Read-only

List the execution history of one monitor, including run status, timing, credits, and whether each run detected a change. Use get-monitor-run for the full details of one run.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.
- `cursor` (`string`, optional): Opaque pagination cursor from a previous response.
- `limit` (`integer`, optional): Maximum number of items to return per page (1-100). Defaults to 25.
- `status` (`string`, optional): Filter runs by lifecycle status. One of: `queued`, `running`, `completed`, `failed`, `skipped`.

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

### `contextdevmcp_list_monitors`

List monitors · Read-only

List recurring monitors in the authenticated Context account, with search, status, target-type, tag, and cursor filters. Use this to find a monitor ID before reading, updating, running, or deleting it; this does not return run history or detected changes.

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

Inputs:

- `change_detection_type` (`string`, optional): Filter by change detection type. One of: `exact`, `semantic`.
- `cursor` (`string`, optional): Opaque pagination cursor from a previous response.
- `limit` (`integer`, optional): Maximum number of items to return per page (1-100). Defaults to 25.
- `q` (`string`, optional): Free-text search term, matched against the fields named in `search_by`.
- `search_by` (`array`, optional): Fields to search with `q`. Defaults to all fields; page and extract targets can have instructions.
- `search_type` (`string`, optional): `prefix` for as-you-type prefix matching (default), `exact` for full-token matching. One of: `exact`, `prefix`.
- `status` (`string`, optional): Filter monitors by lifecycle status. One of: `active`, `paused`, `failed`.
- `tag` (`string`, optional): Filter to items that have this tag.
- `tags` (`array`, optional): Comma-separated list of tags to filter by (matches monitors having any of them).
- `target_type` (`string`, optional): Filter by target type. One of: `page`, `sitemap`, `extract`.

Example input: `{}`

### `contextdevmcp_list_webhook_deliveries`

List webhook deliveries · Read-only

List the authenticated account's batch or monitor webhook deliveries, newest first. Select the source type and filter by batch, monitor, run, status, or creation time. Use get-webhook-delivery or list-webhook-delivery-attempts for delivery details.

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

Inputs:

- `body` (`string`, required): Webhook delivery filters. Choose batch or monitor as the source type, then optionally filter by source ID, status, creation time, and pagination cursor.

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

### `contextdevmcp_list_webhook_delivery_attempts`

List webhook delivery attempts · Read-only

List attempts for one webhook delivery, newest first, with delivery outcomes for troubleshooting. Use retry-webhook-delivery when another delivery attempt is needed.

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

Inputs:

- `delivery_id` (`string`, required): Delivery ID.
- `cursor` (`string`, optional): The next_cursor from the previous response.
- `limit` (`integer`, optional): Number of attempts to return.
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.

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

### `contextdevmcp_people_enrich`

Enrich a person · Read-only

Enrich one person from combined identity clues and return a profile with an identity match score. Provide a person email, a person-profile social URL, or both first and last name with company, education, or location. Use brand-retrieve-unified for company data.

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

Inputs:

- `company` (`object`, optional): Company context to help identify the person. Provide a name or domain.
- `education` (`array`, optional): Education history to help distinguish people with similar names.
- `email` (`string`, optional): Email address of the person to find.
- `location` (`object`, optional): Location context to help identify the person. Provide a city, region, or country.
- `name` (`object`, optional): Person name. Without an email or person-profile URL, provide both first and last name plus company, education, or location.
- `social_urls` (`array`, optional): Public profile URLs for the person. A person-profile URL can identify the person without a name.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

Example input: `{}`

### `contextdevmcp_web_answers`

Answer a web research question · Read-only

Research the live web and return a sourced answer in the exact JSON shape requested. Use fast for focused questions that should finish quickly or ultra for deeper research. Use web-search when ranked links or snippets are enough, or web-scrape with jsonParams when the source URL and extraction schema are already known.

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

Inputs:

- `task` (`string`, required): Research task. Name a domain to have it read before searching.
- `json_format` (`object`, optional): Example object whose keys and value types define the answer shape. Unknown values may be null.
- `mode` (`string`, optional): `fast` for short tasks; `ultra` for deeper research (default). One of: `fast`, `ultra`.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

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

### `contextdevmcp_web_crawl`

Crawl a website · Read-only

Start from a URL, follow relevant internal links, and return clean Markdown for multiple pages in one synchronous request. Use this for focused multi-page research when results are needed immediately. Use web-map for URLs only or submit-batch for large jobs that should run asynchronously.

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

Inputs:

- `url` (`string`, required): Start URL, including `http://` or `https://`.
- `country` (`string`, optional): Fetch from this country (ISO 3166-1 alpha-2). One of: `ad`, `ae`, `af`, `ag`, `ai`, `al`, `am`, `ao`, `ar`, `at`, `au`, `aw`, `az`, `ba`, `bb`, `bd`, `be`, `bf`, `bg`, `bh`, `bi`, `bj`, `bm`, `bn`, `bo`, `bq`, `br`, `bs`, `bw`, `by`, `bz`, `ca`, `cd`, `cf`, `cg`, `ch`, `ci`, `cl`, `cm`, `cn`, `co`, `cr`, `cv`, `cw`, `cy`, `cz`, `de`, `dj`, `dk`, `dm`, `do`, `dz`, `ec`, `ee`, `eg`, `es`, `et`, `fi`, `fj`, `fr`, `ga`, `gb`, `gd`, `ge`, `gf`, `gg`, `gh`, `gm`, `gn`, `gp`, `gq`, `gr`, `gt`, `gu`, `gw`, `gy`, `hk`, `hn`, `hr`, `ht`, `hu`, `id`, `ie`, `il`, `im`, `in`, `iq`, `ir`, `is`, `it`, `je`, `jm`, `jo`, `jp`, `ke`, `kg`, `kh`, `kn`, `kr`, `kw`, `ky`, `kz`, `la`, `lb`, `lc`, `lk`, `lr`, `ls`, `lt`, `lu`, `lv`, `ly`, `ma`, `mc`, `md`, `me`, `mf`, `mg`, `mk`, `ml`, `mm`, `mn`, `mo`, `mq`, `mr`, `mt`, `mu`, `mv`, `mw`, `mx`, `my`, `mz`, `na`, `nc`, `ne`, `ng`, `ni`, `nl`, `no`, `np`, `nz`, `om`, `pa`, `pe`, `pf`, `pg`, `ph`, `pk`, `pl`, `pr`, `ps`, `pt`, `py`, `qa`, `re`, `ro`, `rs`, `ru`, `rw`, `sa`, `sc`, `sd`, `se`, `sg`, `si`, `sk`, `sl`, `sm`, `sn`, `so`, `sr`, `ss`, `st`, `sv`, `sx`, `sy`, `sz`, `tc`, `td`, `tg`, `th`, `tj`, `tl`, `tm`, `tn`, `tr`, `tt`, `tw`, `tz`, `ua`, `ug`, `us`, `uy`, `uz`, `vc`, `ve`, `vg`, `vi`, `vn`, `ye`, `yt`, `za`, `zm`, `zw`.
- `excludeSelectors` (`array`, optional): Remove matching elements after inclusions. Exclusions take precedence.
- `followSubdomains` (`boolean`, optional): When true, follow links on subdomains of the starting URL's domain (e.g. docs.example.com when starting from example.com). www and apex are always treated as equivalent.
- `includeFrames` (`boolean`, optional): When true, the contents of iframes are rendered to Markdown for each crawled page.
- `includeImages` (`boolean`, optional): Include image references in the Markdown output
- `includeLinks` (`boolean`, optional): Preserve hyperlinks in the Markdown output
- `includeSelectors` (`array`, optional): Keep matching HTML subtrees before converting each page to Markdown.
- `maxAgeMs` (`integer`, optional): Maximum cache age in milliseconds. Defaults to 1 day; `0` fetches fresh.
- `maxDepth` (`integer`, optional): Maximum link depth from the starting URL (0 = only the starting page)
- `maxPages` (`integer`, optional): Maximum pages to crawl.
- `pdf` (`object`, optional): PDF handling. `start`/`end` limit parsing to an inclusive, 1-based page range.
- `settleAnimations` (`boolean`, optional): Wait briefly for CSS animations and transitions to settle before reading each page.
- `shortenBase64Images` (`boolean`, optional): Truncate base64-encoded image data in the Markdown output
- `stopAfterMs` (`integer`, optional): Soft crawl deadline in milliseconds. Returns pages collected before the next deadline check.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `urlRegex` (`string`, optional): Regex pattern. Only URLs matching this pattern will be followed and scraped. An automatic prefix scope in the form ^<starting URL> follows a redirect of the starting page.
- `useMainContentOnly` (`boolean`, optional): Extract only the main content, stripping headers, footers, sidebars, and navigation
- `waitForMs` (`integer`, optional): Browser wait time in milliseconds after initial page load for each crawled page. Defaults to 3500 (3.5 seconds). Min: 0. Max: 30000 (30 seconds).
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

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

### `contextdevmcp_web_map`

Map URLs · Read-only

Map a website's URLs using Context's index, with available page titles, descriptions, keywords, and languages. Filter by URL pattern or search phrase without retrieving every page body. Use web-scrape for one page, web-crawl for content from several pages, or submit-batch for large asynchronous collection.

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

Inputs:

- `domain` (`string`, required): Domain to map, e.g. `stripe.com`.
- `headers` (`object`, optional): HTTP headers for the target origin. Non-empty headers bypass caching.
- `includeSubdomains` (`boolean`, optional): Include URLs on subdomains.
- `maxLinks` (`integer`, optional): Maximum number of URLs to return.
- `search` (`string`, optional): Filter URLs by a topic or phrase, most relevant first.
- `sitemapUrl` (`string`, optional): Fetch this sitemap instead of discovering sitemaps. Must belong to the domain or a subdomain.
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `urlRegex` (`string`, optional): Optional RE2-compatible regex pattern. Only URLs matching this pattern are returned and counted against maxLinks.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

Example input: `{"domain":"stripe.com"}`

### `contextdevmcp_web_search`

Search the live web · Read-only

Search the live web and optionally scrape ranked results to Markdown in the same call. Use this to discover sources, answer current questions, or research a topic when the exact page URL is unknown. When a URL is already known, use web-scrape instead. Use web-answers when the user wants a sourced JSON answer rather than ranked links.

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

Inputs:

- `query` (`string`, required): Search query. Accepts natural language as well as Google-style search operators such as `site:`, `-site:`, `inurl:`, `intitle:`, quoted phrases, and `OR`.
- `country` (`string`, optional): Two-letter ISO 3166-1 alpha-2 country code to localize results to a specific country (maps to Google's `gl` parameter). Example: "us", "gb", "de". One of: `af`, `al`, `dz`, `as`, `ad`, `ao`, `ai`, `aq`, `ag`, `ar`, `am`, `aw`, `au`, `at`, `az`, `bs`, `bh`, `bd`, `bb`, `by`, `be`, `bz`, `bj`, `bm`, `bt`, `bo`, `ba`, `bw`, `bv`, `br`, `io`, `bn`, `bg`, `bf`, `bi`, `kh`, `cm`, `ca`, `cv`, `ky`, `cf`, `td`, `cl`, `cn`, `cx`, `cc`, `co`, `km`, `cg`, `cd`, `ck`, `cr`, `ci`, `hr`, `cu`, `cy`, `cz`, `dk`, `dj`, `dm`, `do`, `ec`, `eg`, `sv`, `gq`, `er`, `ee`, `et`, `fk`, `fo`, `fj`, `fi`, `fr`, `gf`, `pf`, `tf`, `ga`, `gm`, `ge`, `de`, `gh`, `gi`, `gr`, `gl`, `gd`, `gp`, `gu`, `gt`, `gn`, `gw`, `gy`, `ht`, `hm`, `va`, `hn`, `hk`, `hu`, `is`, `in`, `id`, `ir`, `iq`, `ie`, `il`, `it`, `jm`, `jp`, `jo`, `kz`, `ke`, `ki`, `kp`, `kr`, `kw`, `kg`, `la`, `lv`, `lb`, `ls`, `lr`, `ly`, `li`, `lt`, `lu`, `mo`, `mk`, `mg`, `mw`, `my`, `mv`, `ml`, `mt`, `mh`, `mq`, `mr`, `mu`, `yt`, `mx`, `fm`, `md`, `mc`, `mn`, `ms`, `ma`, `mz`, `mm`, `na`, `nr`, `np`, `nl`, `an`, `nc`, `nz`, `ni`, `ne`, `ng`, `nu`, `nf`, `mp`, `no`, `om`, `pk`, `pw`, `ps`, `pa`, `pg`, `py`, `pe`, `ph`, `pn`, `pl`, `pt`, `pr`, `qa`, `re`, `ro`, `ru`, `rw`, `sh`, `kn`, `lc`, `pm`, `vc`, `ws`, `sm`, `st`, `sa`, `sn`, `rs`, `sc`, `sl`, `sg`, `sk`, `si`, `sb`, `so`, `za`, `gs`, `es`, `lk`, `sd`, `sr`, `sj`, `sz`, `se`, `ch`, `sy`, `tw`, `tj`, `tz`, `th`, `tl`, `tg`, `tk`, `to`, `tt`, `tn`, `tr`, `tm`, `tc`, `tv`, `ug`, `ua`, `ae`, `gb`, `us`, `um`, `uy`, `uz`, `vu`, `ve`, `vn`, `vg`, `vi`, `wf`, `eh`, `ye`, `zm`, `zw`.
- `excludeDomains` (`array`, optional): Blocklist — drop results from these domains. Example: ["pinterest.com", "reddit.com"].
- `freshness` (`string`, optional): Restrict results to content published within this window. One of: `last_24_hours`, `last_week`, `last_month`, `last_year`.
- `includeDomains` (`array`, optional): Allowlist — only return results from these domains. Example: ["arxiv.org", "github.com"].
- `markdownOptions` (`object`, optional): Inline Markdown scraping for each result. Set `enabled: true` to activate.
- `numResults` (`integer`, optional): Number of results to request and return (10–100). Defaults to 10.
- `queryFanout` (`boolean`, optional): Currently has no effect.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

Example input: `{"query":"nike"}`

### `contextdevmcp_web_styleguide`

Extract a website style guide · Read-only

Extract a website's design system, including colors, typography, spacing, shadows, and interface cues. Use this to reproduce a brand accurately in generated UI, design audits, or creative workflows.

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

Inputs:

- `colorScheme` (`string`, optional): Optional browser color scheme to emulate for websites that respond to prefers-color-scheme. This value is part of the styleguide cache key. One of: `light`, `dark`.
- `directUrl` (`string`, optional): Exact URL to inspect. Provide either `domain` or `directUrl`, not both.
- `domain` (`string`, optional): Domain name to extract styleguide from (e.g., 'example.com', 'google.com'). The domain will be automatically normalized and validated. You must provide either 'domain' or 'directUrl', but not both.
- `maxAgeMs` (`integer`, optional): Maximum age of cached brand data in ms. Defaults to 3 months; clamped to 0–1 year. `0` refreshes.
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.
- `timeoutOpts` (`object`, optional): Request deadline and what to return when it passes.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

Example input: `{}`

### `contextdevmcp_create_monitor`

Create a recurring monitor · Write

Create a recurring monitor for a page, sitemap, or structured extraction target. Use this when the user wants ongoing change detection, not a one-time scrape. Configure the target, schedule, change detection, and optional webhook; Context immediately runs an initial baseline and returns the monitor.

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

Inputs:

- `name` (`string`, required): Human-readable monitor name used to identify it in lists, runs, changes, and notifications.
- `target` (`string`, required): What to watch: a page, a sitemap, or data extracted from a site.
- `change_detection` (`string`, optional): How changes are judged. Defaults to `semantic` for extract targets and page targets with `instructions`, otherwise `exact`.
- `mode` (`string`, optional): Always `web`. Optional. One of: `web`.
- `schedule` (`object`, optional): How often the monitor runs. Defaults to once a day.
- `tags` (`array`, optional): Labels for filtering monitors, their changes, and their usage.
- `webhook` (`string`, optional): Optional webhook configuration for delivering monitor change notifications.

Example input: `{"name":"<name>","target":"<target>"}`

### `contextdevmcp_parse_document`

Parse a file to Markdown · Write

Send PDF, Office, spreadsheet, presentation, image, code, data, or text file bytes to Context and convert them into clean Markdown for agents, analysis, and RAG. Use this when the source is a file rather than a URL. This transformation consumes Context credits but does not alter the original file.

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

Inputs:

- `fileBase64` (`string`, required): Base64-encoded file bytes. Maximum decoded size: 25 MiB.
- `client` (`string`, optional): Optional client identifier used for usage attribution.
- `extension` (`string`, optional): Optional file extension hint, such as pdf, docx, xlsx, pptx, html, json, csv, md, py, rtf, jpg, png, or txt. One of: `txt`, `text`, `md`, `markdown`, `html`, `htm`, `xhtml`, `xml`, `rss`, `atom`, `csv`, `tsv`, `yaml`, `yml`, `py`, `java`, `js`, `jsx`, `mjs`, `cjs`, `json`, `jsonl`, `ndjson`, `php`, `sh`, `bash`, `zsh`, `fish`, `rb`, `ts`, `tsx`, `rtf`, `srt`, `css`, `scss`, `less`, `styl`, `sass`, `svg`, `pdf`, `docx`, `doc`, `xlsx`, `xlsm`, `xlsb`, `xltx`, `xltm`, `xls`, `pptx`, `pptm`, `ppsx`, `ppsm`, `potx`, `potm`, `ppt`, `pps`, `pot`, `jpg`, `jpeg`, `jpe`, `png`, `gif`, `bmp`, `tiff`, `tif`, `webp`, `ppm`, `pbm`, `pgm`, `pnm`.
- `includeImages` (`boolean`, optional): Include image references in Markdown output
- `includeLinks` (`boolean`, optional): Preserve hyperlinks in Markdown output
- `ocr` (`boolean`, optional): Read text from images and scanned PDF pages. PDF page ranges still apply.
- `pdf` (`object`, optional): PDF page-range options as a JSON object, e.g. {"start": 2, "end": 5}.
- `shortenBase64Images` (`boolean`, optional): Shorten base64-encoded image data in the Markdown output
- `tags` (`array`, optional): Comma-separated labels for filtering usage, e.g. `production,team-alpha`.
- `useMainContentOnly` (`boolean`, optional): Extract only the main content from HTML-like inputs
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

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

### `contextdevmcp_retry_webhook_delivery`

Retry a webhook delivery · Write

Queue another attempt for a webhook delivery created within the last seven days. This can send the event to its configured external receiver again. Use get-webhook-delivery or list-webhook-delivery-attempts to inspect the outcome.

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

Inputs:

- `delivery_id` (`string`, required): Delivery ID.
- `force` (`boolean`, optional): Resend even if the delivery already succeeded. Defaults to false.
- `Idempotency-Key` (`string`, optional): Unique key to prevent duplicate retry requests.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.

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

### `contextdevmcp_submit_batch`

Submit a large scraping batch · Write

Start an asynchronous job to scrape up to 25,000 supplied URLs or crawl a large website as Markdown or HTML. Use this when a synchronous scrape or crawl would be too large. When webhookUrl is supplied, Context sends a completion request to that external endpoint. The call returns a batch ID, not page results; use get-batch until it settles, then get-batch-results. Supply an Idempotency-Key when a submission may be retried.

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

Inputs:

- `input` (`string`, required): Batch job definition. Choose a scrape or crawl mode and provide the URLs, output format, and processing options for that mode.
- `Idempotency-Key` (`string`, optional): Unique key per submission. Retrying with the same key and body returns the original batch; a different body returns `409`.
- `tags` (`array`, optional): Tags stored on the batch. Filter the batch list by them later.
- `webhook` (`object`, optional): Where to send the batch's final-status event. Omit `retry` for one attempt; `{}` uses the default retry schedule.
- `webhookUrl` (`string`, optional): Legacy URL notified when the batch finishes. Preserves one best-effort attempt. Cannot be combined with webhook.

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

### `contextdevmcp_submit_feedback`

Submit agent feedback · Write

Report a Context problem to the Context team. Always use this when a tool or API behaves unexpectedly, including wrong or incomplete successful results, unexpected errors, or a docs mismatch, even after a successful workaround. Send a category, a note describing the affected tool and expected versus actual behavior, and the affected request_id, a relevant public url, or both. Use a url when no request_id is available; never invent an ID. Sanitize secrets and private data. Costs no credits. Report each distinct issue once; reporting the same request_id again returns the original feedback_id. If this tool fails, do not recursively report its failure or loop on retries.

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

Inputs:

- `category` (`string`, required): Kind of issue. One of: `bug`, `docs_mismatch`, `friction`, `feature_gap`, `quality_degradation`, `other`.
- `note` (`string`, required): What went wrong and what you expected instead.
- `request_id` (`string`, optional): The request_id of the API call the feedback is about, from its response body or X-Request-Id header.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `url` (`string`, optional): The page the feedback is about, such as one page of a crawl or a docs page.

Example input: `{"category":"bug","note":"<note>"}`

### `contextdevmcp_cancel_batch`

Cancel a batch · Destructive

Stop a queued or running batch from starting additional pages. Work already in progress finishes and unused reserved credits are refunded after settlement. This does not delete stored results; use only when the user explicitly wants processing stopped.

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

Inputs:

- `batch_id` (`string`, required): Batch ID.

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

### `contextdevmcp_delete_batch`

Delete a batch · Destructive

Permanently delete a completed, cancelled, or failed batch and its stored results. Active batches must be cancelled and allowed to settle first. This cannot be undone; use only when the user explicitly requests deletion.

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

Inputs:

- `batch_id` (`string`, required): Batch ID.

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

### `contextdevmcp_delete_monitor`

Delete a monitor · Destructive

Permanently delete a monitor and stop all future scheduled runs. This cannot be undone; use only when the user explicitly wants the monitor removed.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.

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

### `contextdevmcp_rotate_monitor_webhook_secret`

Rotate a monitor webhook secret · Destructive

Replace a monitor's webhook signing secret and return its updated configuration. The previous secret stops signing deliveries immediately; update the webhook receiver to use the returned secret. Requires a monitor with a configured webhook URL.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.

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

### `contextdevmcp_run_monitor_now`

Run a monitor now · Destructive

Queue an immediate check for a monitor outside its regular schedule. This starts an asynchronous network run, may advance the monitor's stored comparison baseline, and can notify its configured external webhook when a change is detected. Use get-monitor-run or list-monitor-runs to follow its outcome.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.

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

### `contextdevmcp_update_monitor`

Update a monitor · Destructive

Update an existing monitor's configuration, including its optional external webhook. Changes affect future runs, and changing the target or change-detection definition creates a new baseline. Use get-monitor first when the current configuration must be preserved.

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

Inputs:

- `monitor_id` (`string`, required): Unique monitor ID returned by create-monitor or list-monitors, for example `mon_123`.
- `change_detection` (`string`, optional): How changes are judged. Defaults to `semantic` for extract targets and page targets with `instructions`, otherwise `exact`.
- `name` (`string`, optional): New human-readable name for the monitor.
- `schedule` (`object`, optional): How often the monitor runs. Defaults to once a day.
- `status` (`string`, optional): New monitor lifecycle status: active continues scheduled runs; paused stops them until reactivated. One of: `active`, `paused`.
- `tags` (`array`, optional): Labels for filtering monitors, their changes, and their usage.
- `target` (`string`, optional): What to watch: a page, a sitemap, or data extracted from a site.
- `webhook` (`string`, optional): Set to null to remove the webhook. Changing `url` issues a new secret.

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

### `contextdevmcp_web_scrape`

Scrape a URL · Destructive

Scrape one known URL and return any combination of HTML, Markdown, a screenshot, page images, original bytes, CSS-selected fields, relevant highlights, schema-shaped JSON, or product data. Supports browser actions, custom target headers, PDF parsing, deadlines, and zero data retention. Browser clicks can change the target site's state. Use web-search when the URL is unknown, web-map for URLs only, web-crawl for linked pages, or submit-batch for large asynchronous jobs.

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

Inputs:

- `formats` (`object`, required): Outputs to return. Set at least one to `true`.
- `url` (`string`, required): Public HTTP or HTTPS URL to scrape.
- `highlightsParams` (`object`, optional): Required when `formats.highlights` is `true`.
- `imageParams` (`object`, optional): Image options. Requires formats.images: true.
- `jsonParams` (`object`, optional): Required when formats.json is true.
- `markdownParams` (`object`, optional): Markdown options. Requires `formats.markdown`.
- `maxAgeMs` (`integer`, optional): Maximum age of a cached output, in milliseconds. `0` fetches fresh. Defaults to 1 day.
- `parseParams` (`object`, optional): Required when formats.parse is true.
- `productParams` (`object`, optional): Product options. Requires formats.product: true.
- `screenshotParams` (`object`, optional): Screenshot options. Requires formats.screenshot: true.
- `sharedParams` (`object`, optional): Browser and content settings shared by all outputs.
- `tags` (`array`, optional): Labels for tracking request usage. Not retained when zdr is enabled.
- `timeoutOpts` (`object`, optional): Deadline for the whole request. Defaults to 60000 ms with `fail`. Fixed waits must end before it.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Your organization must have ZDR enabled. One of: `enabled`, `disabled`.

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

## Related

Other Search connectors ([all 33](/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 |
