> **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 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 50 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Search, AI, Developer Tools
**Tools:** 50: 33 read, 9 write, 8 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: {},
  },
  connector: 'contextdevmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="contextdevmcp_brand_retrieve_unified",
    tool_input={
        "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` (`object`, required): Brand lookup request. Provide exactly one lookup type: domain, company name, email, stock ticker, direct URL, or transaction descriptor. One of: Retrieve brand data by domain. | Retrieve brand data by company name. | Retrieve brand data by email address. | Retrieve brand data by stock ticker. | Retrieve brand data from this exact URL. | Identify brand data from a transaction descriptor.

Example input: `{"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. Default: `true`.
- `country` (`string`, optional): Only return brands in this country, as an uppercase ISO 3166-1 alpha-2 code such as US or GB.
- `language` (`string`, optional): Only return brands with this primary language, such as english or french.
- `queryBy` (`array`, optional): Fields to match the search term against.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `typoTolerance` (`integer`, optional): Maximum number of typos tolerated when matching. Default: `0`.

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

### `contextdevmcp_get_access_policy`

Get Access Policy · Read-only

Retrieve one access policy by ID: its name, allowed or blocked domains, what it applies to, API key IDs, and timestamps. Use list-access-policies to find the ID.

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

Inputs:

- `policy_id` (`string`, required): Access policy ID returned by create-access-policy or list-access-policies; it starts with `pol_`.

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

### `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. 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:

- `companyName` (`string`, optional): Company name. Provide exactly one of query, companyName, domain, ticker, or isin.
- `cursor` (`string`, optional): Opaque next_cursor from the previous response, or null for the first page.
- `domain` (`string`, optional): Company website domain. Provide exactly one of query, companyName, domain, ticker, or isin.
- `exchange` (`string`, optional): Optional stock exchange when ticker is used, such as NASDAQ or NYSE.
- `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.
- `isin` (`string`, optional): International Securities Identification Number. Provide exactly one of query, companyName, domain, ticker, or isin.
- `limit` (`integer`, optional): Articles per page, up to 30. Follow next_cursor for more articles. Default: `10`.
- `query` (`string`, optional): What to search for across all news, in plain language, such as "chip export restrictions to China". Provide exactly one of query, companyName, domain, ticker, or isin.
- `sortBy` (`string`, optional): Result ordering for company searches. Defaults to newest. query searches are always ordered by relevance. One of: `newest`, `relevance`.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `ticker` (`string`, optional): Public-company ticker. Provide exactly one of query, companyName, domain, ticker, or isin.

Example input: `{}`

### `contextdevmcp_get_usage`

Get Usage · Read-only

Get the authenticated Context account's credit balance, credits used in the current monthly period, the next refill time and amount, and Auto-Topup status. Use this before large jobs or after a 402 USAGE_EXCEEDED (or legacy 401) to see how many credits are left and when they refill. Use get-usage-history for usage over time. Costs no credits.

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

Inputs: none.

Example input: `{}`

### `contextdevmcp_get_usage_history`

Get Usage History · Read-only

Get the authenticated Context account's credits and requests over time, bucketed by hour, day, or month (UTC, oldest first, empty buckets as zeros). Set group_by to path, key_id, or status_code to see which endpoints, API keys, or outcomes used credits. Defaults to the last 30 days by day. Use get-usage for the current balance and next refill. Costs no credits.

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

Inputs:

- `from` (`string`, optional): Start of the range, as an ISO 8601 timestamp.
- `group_by` (`string`, optional): Split each bucket by endpoint path, API key, or HTTP status code. One of: `path`, `key_id`, `status_code`.
- `interval` (`string`, optional): Bucket size. `hour` covers up to 7 days; `day` and `month` cover up to 366 days. Buckets start on UTC boundaries. One of: `hour`, `day`, `month`.
- `to` (`string`, optional): End of the range, as an ISO 8601 timestamp.

Example input: `{}`

### `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_access_policies`

List Access Policies · Read-only

List the authenticated Context account's access policies, newest first, with cursor pagination. Each policy allows or blocks domains for requests that pass its ID in policies, for chosen API keys, or for the whole organization. Use this to find a policy ID before reading, updating, or deleting it. Requires access policies enabled for the organization (403 ACCESS_POLICIES_NOT_ENABLED otherwise).

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

Inputs:

- `cursor` (`string`, optional): The `next_cursor` from the previous page.
- `limit` (`integer`, optional): Number of policies per page. Default: `25`.

Example input: `{}`

### `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): `next_cursor` from the previous list-batches response.
- `limit` (`integer`, optional): Batches per page. Default: `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`.
- `shouldIncludeUnified` (`boolean`, optional): Include batches submitted with Scrape Anything formats. Default: `false`.
- `status` (`string`, optional): Filter by status. One of: `queued`, `running`, `cancelling`, `completed`, `cancelled`, `failed`.
- `tags` (`string`, optional): Tags to filter by; matches batches with any of them. Pass an array or one comma-separated string.

Example input: `{}`

### `contextdevmcp_list_browser_profiles`

List Browser Profiles · Read-only

List the authenticated Context account's saved browser profiles, newest first, with each profile ID, optional description, and creation time. Reuse a profile in web-scrape with sharedParams.profile {"type":"existing","profileId":"prof_..."} to scrape behind the same sign-in. Costs no credits.

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

Inputs:

- `cursor` (`string`, optional): The `next_cursor` from the previous page.
- `limit` (`integer`, optional): Number of profiles per page. Default: `25`.

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: `exact` compares visible text or sitemap URLs, and `semantic` judges changes against the target instructions. 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. 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 monitor target type: `page` watches one web page, `sitemap` watches a site for added or removed URLs, and `extract` watches structured data across selected pages. One of: `page`, `sitemap`, `extract`, `search`.
- `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.
- `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.

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: `exact` compares visible text or sitemap URLs, and `semantic` judges changes against the target instructions. 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. 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, extract, and search targets can have instructions, and `url` matches a search target’s query.
- `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): Tags to filter by; matches monitors with any of them.
- `target_type` (`string`, optional): Filter by monitor target type: `page` watches one web page, `sitemap` watches a site for added or removed URLs, and `extract` watches structured data across selected pages. One of: `page`, `sitemap`, `extract`, `search`.

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` (`object`, 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":{}}`

### `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. The agent selects company/profile lookups, web searches, or page reads. Include domains or URLs to focus the research.
- `json_format` (`object`, optional): Example output object, not JSON Schema. Use placeholder values to declare types, for example {"answer":"","sources":[""]}. Up to 8 levels, 500 values, and 16,000 characters. Unknown values may be null.
- `mode` (`string`, optional): `fast` prioritizes speed, with extra verification for people and companies; `ultra` supports deeper research (default). One of: `fast`, `ultra`.
- `policies` (`array`, optional): Access policy IDs to apply. A URL must pass every policy.
- `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).
- `excludeSelectors` (`string`, optional): Remove matching elements after inclusions. Exclusions take precedence.
- `excludeUrlRegex` (`string`, optional): Regex pattern. URLs matching this pattern are never followed or scraped, even when they match urlRegex. The starting URL is always scraped.
- `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. Default: `false`.
- `includeFrames` (`boolean`, optional): When true, the contents of iframes are rendered to Markdown for each crawled page. Default: `false`.
- `includeImages` (`boolean`, optional): Include image references in the Markdown output (`html-conversion` only). Default: `false`.
- `includeLinks` (`boolean`, optional): Preserve hyperlinks in the Markdown output (`html-conversion` only). Default: `true`.
- `includeSelectors` (`string`, optional): Keep matching HTML subtrees before converting each page to Markdown.
- `maxAgeMs` (`string`, optional): Maximum cache age in milliseconds. Defaults to 1 day; `0` fetches fresh. Default: `86400000`.
- `maxDepth` (`integer`, optional): Maximum link depth from the starting URL (0 = only the starting page)
- `maxPages` (`integer`, optional): Maximum pages to crawl. Default: `100`.
- `pdf` (`object`, optional): PDF handling. `start`/`end` limit parsing to an inclusive, 1-based page range.
- `policies` (`array`, optional): Access policy IDs to apply. A URL must pass every policy.
- `responseMode` (`string`, optional): Prefer compact for research: one JSON text response without verbose page metadata, with each page's Markdown and HTML clipped to 4,000 characters. Clipping is marked. Omit or use full for the complete response, up to the server response limit. One of: `full`, `compact`.
- `settleAnimations` (`boolean`, optional): Wait briefly for CSS animations and transitions to settle before reading each page. Default: `false`.
- `shortenBase64Images` (`boolean`, optional): Truncate base64-encoded image data in the Markdown output (`html-conversion` only). Default: `true`.
- `sourcePreference` (`array`, optional): Markdown sources in order of preference: `html-conversion` converts the page HTML, `markdown-direct` uses Markdown the site publishes.
- `stopAfterMs` (`integer`, optional): Soft crawl deadline in milliseconds. Returns pages collected before the next deadline check. Default: `80000`.
- `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. Default: `false`.
- `waitForMs` (`string`, optional): Browser wait after initial page load for each crawled page, in milliseconds. Default: `3500`.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`. Default: `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`.
- `excludeUrlRegex` (`string`, optional): Regex pattern. URLs matching this pattern are not returned, even when they match urlRegex.
- `headers` (`object`, optional): HTTP headers for the target origin. Non-empty headers bypass caching.
- `includeSubdomains` (`boolean`, optional): Include URLs on subdomains. Default: `false`.
- `maxLinks` (`integer`, optional): Maximum number of URLs to return. Default: `10000`.
- `policies` (`array`, optional): Comma-separated access policy IDs to apply. A URL must pass every policy.
- `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): 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 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`. Default: `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".
- `descriptionMaxCharacters` (`string`, optional): Maximum length of each result's `description`, in characters.
- `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`.
- `highlightsOptions` (`string`, optional): Passages from each result page that are relevant to the query. Pages are read with the `markdownOptions` settings.
- `includeDomains` (`array`, optional): Allowlist — only return results from these domains. Example: ["arxiv.org", "github.com"].
- `languages` (`string`, optional): Languages to return results in, as BCP 47 language codes such as `en` or `de`, or "all" for any language. Example: ["en", "de"]. Default: `all`.
- `markdownOptions` (`string`, optional): Inline Markdown scraping for each result. Set `enabled: true` to activate.
- `numResults` (`integer`, optional): Number of results to request and return. Default: `10`.
- `policies` (`array`, optional): Access policy IDs to apply. A URL must pass every policy.
- `queryFanout` (`boolean`, optional): Currently has no effect.
- `responseMode` (`string`, optional): Prefer compact for research: one JSON text response without unused formats or verbose page metadata, with HTML, Markdown, and highlights clipped to 1,200 characters per field for each result. Clipping is marked. Omit or use full for the complete response, up to the server response limit. For query-relevant excerpts, enable highlightsOptions instead of reading clipped page text. One of: `full`, `compact`.
- `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`. Default: `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. Default: `7776000000`.
- `policies` (`array`, optional): Comma-separated access policy IDs to apply. A URL must pass every policy.
- `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` disables request logs and traces and omits request and response content from usage logs. Brand data and hosted assets may still be stored. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`.

Example input: `{}`

### `contextdevmcp_company_search`

Company Search · Write

Find companies that match a plain-language description of their industry, location, headcount, founding year, technology, web traffic, or funding, such as {"query":"solar startups in California that raised a Series B"}, or lookalikes such as {"query":"companies like stripe.com"}. Optional filters every result must match: filters.countries (headquarters, two-letter codes such as US), filters.employees_min, and filters.employees_max. Returns up to 10 companies, most relevant first, with domain, description, industries, headquarters, headcount, revenue range, funding, and stock symbols. mode defaults to fast, which returns results in about two seconds. Set mode to ultra for complex searches with several criteria: it searches more thoroughly, checks every result against each criterion, accepts queries up to 5000 characters instead of 500, and can take up to 20 seconds. For more, pass next_cursor as cursor with the same query, mode, and filters; stop when it is null. Costs 2 credits per nonempty page in fast mode and 10 in ultra mode; searches with no matches are free. Use brand-search to resolve a company you can already name, brand-retrieve-unified for one company's full brand profile, or people-search for people at matching companies.

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

Inputs:

- `query` (`string`, required): Describe the companies to find. Up to 500 characters in `fast` mode and 5000 in `ultra` mode.
- `cursor` (`string`, optional): Use next_cursor with the same query, mode and filters to fetch the next page.
- `filters` (`object`, optional): Additional constraints every result must match.
- `mode` (`string`, optional): `fast` returns results in about two seconds; `ultra` searches more thoroughly and checks every result against each criterion in the query. `ultra` can take up to 20 seconds, so allow for that in your client timeout. One of: `fast`, `ultra`. Default: `fast`.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.

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

### `contextdevmcp_create_access_policy`

Create Access Policy · Write

Create an access policy that limits which websites requests can reach: an allowed_domains allowlist or a blocked_domains blocklist, each matching subdomains and accepting wildcards such as *.gov. applies_to is request (apply by passing the returned ID in policies on web-scrape, web-crawl, web-search, web-answers, get-news-search, brand-retrieve-unified, submit-batch, or a monitor), api_keys (every request made with api_key_ids), or organization (every request). A URL must pass every applied policy or the request fails with ACCESS_POLICY_DENIED. Requires access policies enabled for the organization.

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

Inputs:

- `name` (`string`, required): A name to recognize this policy.
- `allowed_domains` (`array`, optional): Only these domains and their subdomains can be accessed. Send this or `blocked_domains`.
- `api_key_ids` (`array`, optional): API key IDs to apply this policy to. Required when `applies_to` is `api_keys`.
- `applies_to` (`string`, optional): `request` applies when listed in `policies`. `api_keys` applies to every request made with `api_key_ids`. `organization` applies to every request. One of: `request`, `api_keys`, `organization`. Default: `request`.
- `blocked_domains` (`array`, optional): These domains and their subdomains can't be accessed. Send this or `allowed_domains`.

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

### `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` (`object`, required): What to watch: a page, a sitemap, data extracted from a site, or web search results. One of: Watch a single web page. | Watch a site’s URL inventory for confirmed additions and removals. | Search the web on every run and report results not seen before, listed in the change’s `matched_urls` and `evidence`.
- `change_detection` (`object`, optional): How changes are judged. Defaults to `semantic` for extract and search targets and page targets with `instructions`, otherwise `exact`. One of: Detect exact changes. | Detect meaningful content changes using the target’s instructions and optional schema.
- `mode` (`string`, optional): Always `web`. Optional. One of: `web`.
- `policies` (`array`, optional): Access policy IDs to apply to every run.
- `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":{}}`

### `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: 50 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.
- `includeImages` (`boolean`, optional): Include image references in Markdown output. Default: `false`.
- `includeLinks` (`boolean`, optional): Preserve hyperlinks in Markdown output. Default: `true`.
- `includeNumberedPages` (`boolean`, optional): Start each PDF page in the Markdown with a `<!-- page N -->` line, where N is the original 1-based page number. Default: `false`.
- `ocr` (`boolean`, optional): Read text from images and scanned PDF pages. PDF page ranges still apply. Default: `false`.
- `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. Default: `true`.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.
- `useMainContentOnly` (`boolean`, optional): Extract only the main content from HTML-like inputs. Default: `false`.
- `zdr` (`string`, optional): `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR. One of: `enabled`, `disabled`. Default: `disabled`.

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

### `contextdevmcp_people_search`

People Search · Write

Find people who match a plain-language description of their role, employer, industry, location, skills, or experience, such as {"query":"VPs of sales at solar companies in California"}. Optional filters every result must match: filters.countries (where they live, two-letter codes such as US), filters.years_of_experience_min, and filters.years_of_experience_max. Returns up to 10 people, most relevant first, with name, current title, seniority, employer name and domain, location, profile URLs, skills, and schools. mode defaults to fast, which matches basic criteria such as role, location, or background. Set mode to ultra for complex searches with several criteria: it judges each candidate against every criterion, accepts queries up to 5000 characters instead of 500, adds match.confidence (0 to 1) to each person, and can take up to 30 seconds. For more, pass next_cursor as cursor with the same query, mode, and filters; stop when it is null. Costs 10 credits per nonempty page in fast mode and 50 in ultra mode; searches with no matches are free. Use people-enrich to look up one specific person from an email, profile URL, or name, or company-search to find companies.

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

Inputs:

- `query` (`string`, required): Describe the people to find. Up to 500 characters in `fast` mode and 5000 in `ultra` mode.
- `cursor` (`string`, optional): Use next_cursor with the same query, mode and filters to fetch the next page.
- `filters` (`object`, optional): Additional constraints every result must match.
- `mode` (`string`, optional): `fast` matches people on basic criteria (e.g. their role, location or background); `ultra` plans a deeper search, judges each candidate against every criterion in the query. Complex `ultra` searches can take up to 30 seconds to complete, so allow for that in your client timeout. One of: `fast`, `ultra`. Default: `fast`.
- `tags` (`array`, optional): Labels for filtering usage in the dashboard.

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

### `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.
- `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` (`object`, required): Batch job: scrape URLs or crawl a source with output and processing options. One of: Scrape a list of up to 100,000 URLs. | Crawl pages starting from a URL or from a domain's sitemap.
- `Idempotency-Key` (`string`, optional): Unique key per submission. Retrying with the same key and body returns the original batch; a different body returns `409`.
- `policies` (`array`, optional): Access policy IDs to apply to every page. A URL must pass every policy.
- `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":{}}`

### `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_update_access_policy`

Update Access Policy · Write

Update an access policy's name, allowed or blocked domains, scope, or API keys. Changes apply right away, including to running batches and monitors that use the policy, so a narrower policy can make their pending pages fail. Use get-access-policy first when the current definition must be preserved.

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

Inputs:

- `policy_id` (`string`, required): Access policy ID returned by create-access-policy or list-access-policies; it starts with `pol_`.
- `allowed_domains` (`array`, optional): Only these domains and their subdomains can be accessed. Send this or `blocked_domains`.
- `api_key_ids` (`array`, optional): API key IDs to apply this policy to. Required when `applies_to` is `api_keys`.
- `applies_to` (`string`, optional): `request` applies when listed in `policies`. `api_keys` applies to every request made with `api_key_ids`. `organization` applies to every request. One of: `request`, `api_keys`, `organization`.
- `blocked_domains` (`array`, optional): These domains and their subdomains can't be accessed. Send this or `allowed_domains`.
- `name` (`string`, optional): A name to recognize this policy.

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

### `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_access_policy`

Delete Access Policy · Destructive

Permanently delete an access policy. Requests, batches, and monitors that still list its ID in policies will fail, so remove the ID from them first. This cannot be undone; use only when the user explicitly wants the policy removed.

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

Inputs:

- `policy_id` (`string`, required): Access policy ID returned by create-access-policy or list-access-policies; it starts with `pol_`.

Example input: `{"policy_id":"<policy_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` (`object`, optional): How changes are judged. Defaults to `semantic` for extract and search targets and page targets with `instructions`, otherwise `exact`. One of: Detect exact changes. | Detect meaningful content changes using the target’s instructions and optional schema.
- `name` (`string`, optional): New human-readable name for the monitor.
- `policies` (`array`, optional): Access policy IDs to apply to every run. Send an empty list to remove them.
- `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` (`object`, optional): What to watch: a page, a sitemap, data extracted from a site, or web search results. One of: Watch a single web page. | Watch a site’s URL inventory for confirmed additions and removals. | Search the web on every run and report results not seen before, listed in the change’s `matched_urls` and `evidence`.
- `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): URL of the public page to scrape.
- `highlightsParams` (`object`, optional): Requires `formats.highlights: true`; required when it is set.
- `imageParams` (`object`, optional): Image options. Requires formats.images: true.
- `jsonParams` (`object`, optional): Requires `formats.json: true`; required when it is set.
- `markdownParams` (`object`, optional): Markdown options. Requires `formats.markdown`.
- `maxAgeMs` (`integer`, optional): Maximum age of a cached output, in milliseconds. `0` fetches fresh. Default: `259200000`.
- `parseParams` (`object`, optional): Requires `formats.parse: true`; required when it is set.
- `policies` (`array`, optional): Access policy IDs to apply. A URL must pass every policy.
- `productParams` (`object`, optional): Product options. Requires formats.product: true.
- `responseMode` (`string`, optional): The responseMode="compact" setting returns one JSON text response without unused formats or verbose page metadata, with HTML, Markdown, and highlights clipped to 4,000 characters per format. Clipping is marked; JSON, parsed data, product data, and images are kept. The responseMode="full" setting returns the complete response, up to the server response limit. For query-relevant excerpts, request formats.highlights with highlightsParams.query instead of reading clipped page text. One of: `full`, `compact`.
- `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 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. Your organization must have ZDR enabled. One of: `enabled`, `disabled`. Default: `disabled`.

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

## Related

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