Custodia-Admin/pagebolt-mcp

Custodia-Admin/pagebolt-mcp

от custodia-admin
PageBolt MCP сервер открывает AI-ассистентам браузерную веб-автоматизацию: скриншоты, PDF и запись демо-видео. Также инспектирует страницы и создаёт OG-картинки. Просто опишите задачу — сервер выполнит.

PageBolt MCP Server

npm version License: MIT MCP

Take screenshots, generate PDFs, create OG images, inspect pages, and record demo videos directly from your AI coding assistant.

Works with Claude Desktop, Cursor, Windsurf, Cline, and any MCP-compatible client.

pagebolt-screenshot_1

What It Does

PageBolt MCP Server connects your AI assistant to PageBolt's web capture API, giving it the ability to:

  • Take screenshots of any URL, HTML, or Markdown (30+ parameters)
  • Generate PDFs from URLs or HTML (invoices, reports, docs)
  • Create OG images for social cards using templates or custom HTML
  • Run browser sequences — multi-step automation (navigate, click, fill, screenshot)
  • Record demo videos — browser automation as MP4/WebM/GIF with cursor effects, click animations, and auto-zoom
  • Inspect pages — get a structured map of interactive elements with CSS selectors (use before sequences)
  • Observe pages for agents — compact, token-budgeted observation with an optional flatdomtree mode for browser-use / page-agent interop
  • Import agent traces — turn a browser-use / page-agent action trace into a re-runnable PageBolt sequence
  • List device presets — 25+ devices (iPhone, iPad, MacBook, Galaxy, etc.)
  • Check usage & track async jobs — monitor your API quota and long async video renders in real time
Инструменты были проиндексированы:
act_on_page

Дайте PageBolt URL и ЦЕЛЬ на обычном английском: он запускает на сервере цикл observe→plan→act→verify, пока цель не выполнена, и возвращает структурированный след каждого действия плюс статус успеха/неудачи. Это «руки» поверх observe_page («глаза») — вы НЕ пишете селекторы или список шагов самостоятельно. Используйте act_on_page, когда знаете только ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ (например, «войти и открыть биллинг», «принять баннер с куки и начать пробный период»); используйте run_sequence, когда уже знаете точные детерминированные шаги/селекторы (дешевле). Доступно на тарифах Starter+. Стоимость по счетчику: 2 запроса базовая часть + 1 за каждый шаг. БЕЗОПАСНОСТЬ: текст страницы считается недоверенным — агент следует только вашей цели и игнорирует инструкции, встроенные в страницу. Ограничьте allowedDomains строго и избегайте деструктивных потоков.

Параметры
  • allowedDomainsstring[]

    Хосты, к которым агент может переходить (например, ["app.example.com"]). По умолчанию используется только хост стартового URL; переходы на другие хосты отклоняются.

  • credentialsobject

    Учётные данные для входа. Агент упоминает их как {{username}}/{{password}}, и в возвращаемом трейсе они отображаются как <redacted>.

  • goalstringобязательный

    Обязательно. Описание желаемого результата на простом английском языке (например, «Войдите в систему и перейдите на страницу оплаты»).

  • maxStepsinteger

    Ограничение числа итераций планирования (по умолчанию 8). Не может превышать лимит вашего плана (Starter 10, Growth 15, Scale 20).

  • session_idstring

    Запускается внутри существующей постоянной сессии (Starter+; создаётся с помощью create_session), чтобы повторно использовать cookies и данные входа. В противном случае используется временный браузер, который затем удаляется.

  • urlstringобязательный

    Обязательно. Страница, с которой нужно начать.

check_usage

Проверяет текущее использование PageBolt API и лимиты тарифного плана.

Параметры

Без параметров.

create_og_image

Генерирует изображение Open Graph / социальной карточки. Возвращает изображение, используя встроенные шаблоны или пользовательский HTML.

Параметры
  • accentColorstring

    Акцентный цвет в формате hex, например "#6366f1"

  • bgColorstring

    Цвет фона в hex-формате, например "#0f172a"

  • bgImagestring

    URL фонового изображения

  • formatenum

    Формат изображения (по умолчанию png)

  • heightinteger

    Высота изображения в пикселях (по умолчанию: 630)

  • htmlstring

    Пользовательский HTML-шаблон (переопределяет параметр template, Growth plan+)

  • logostring

    URL изображения логотипа

  • subtitlestring

    Текст субтитра

  • templateenum

    Имя встроенного шаблона (по умолчанию: "default")

  • textColorstring

    Цвет текста в hex-формате, например "#f8fafc"

  • titlestring

    Текст основного заголовка (по умолчанию: "Your Title Here")

  • widthinteger

    Ширина изображения в пикселях (по умолчанию: 1200)

create_session

Создаёт постоянную сессию браузера (требуется тариф Starter+). Сессия держит открытой живую страницу браузера, чтобы вы могли повторно использовать cookies, localStorage и состояние аутентификации при нескольких вызовах take_screenshot или run_sequence. Передавайте полученный session_id этим инструментам. Сессии истекают через 10 минут бездействия (жёсткий лимит: 30 минут). Полезно для рабочих процессов AI-агентов, которые один раз входят в систему, а затем делают несколько скриншотов аутентифицированных страниц.

Параметры
  • cookiesstring | object[]

    Файлы cookie для предварительной загрузки в страницу браузера сеанса.

  • stealthboolean

    Запустите эту сессию в stealth-режиме (обходит детекцию ботов). Примечание: stealth-сессии используют отдельный браузер и потребляют больше памяти.

  • viewportobject

    Размеры области просмотра для страницы браузера сеанса

destroy_session

Явно уничтожает постоянную сессию браузера до истечения её срока. Освобождает страницу браузера немедленно. Используйте это, когда закончите работу с сессией, чтобы освободить ресурсы.

Параметры
  • session_idstringобязательный

    Идентификатор сессии, который нужно уничтожить (возвращается create_session).

export_sequence

Преобразует список шагов в последовательность PageBolt, которую вы (или пользователь) можете редактировать и перезапускать: возвращает JSON для вставки в Sequence Builder на панели управления ("Import JSON" - то же место, где открывается "Edit sequence"), и при желании может сохранить её в Saved Automations пользователя (save:true). Используйте его после того, как спланировали видео/последовательность, чтобы пользователь сам мог подправить шаги, подсветки и озвучку, или перезапустить её позже с record_video / run_sequence. Не запускает последовательность и не расходует квоту. Подставляйте плейсхолдеры {{username}}/{{password}} в fill-шаги вместо реальных учётных данных; никогда не включайте cookies.

Параметры
  • audioGuideobject

    Настройки озвучивания (только для видео).

  • descriptionstring

    Необязательное описание

  • formatenum

    Формат видео (только видео).

  • namestringобязательный

    Имя последовательности (используется при сохранении).

  • pacenumber

    Множитель темпа видео (только видео).

  • saveboolean

    Если true, также сохраняет его в Saved Automations пользователя (отображается на дашборде и в Library расширения). По умолчанию: false.

  • stepsobject[]обязательный

    Шаги, той же структуры, что и шаги record_video / run_sequence: {action, url|selector|value|key|ms|x|y|script|style|color|duration|note|narration|pauseAfter|optional}. Предпочитайте прокрутку по selector, никогда не угадывайте смещения в пикселях.

  • typeenum

    "video", если запись будет вестись через record_video (по умолчанию), "sequence" для run_sequence.

  • viewportobject

    Размер области просмотра.

generate_pdf

Генерирует PDF из URL или HTML-контента. Поддерживает пользовательские поля, верхние/нижние колонтитулы, диапазоны страниц и масштабирование. Сохраняет PDF на диск и возвращает путь к файлу.

Параметры
  • delayinteger

    Количество миллисекунд ожидания перед рендерингом (по умолчанию: 0)

  • displayHeaderFooterboolean

    Показывает заголовок и нижний колонтитул (по умолчанию: false)

  • footerTemplatestring

    HTML-шаблон для подвала страницы

  • formatstring

    Формат бумаги: A4, Letter, Legal, Tabloid, A3, A5 (по умолчанию: A4)

  • headerTemplatestring

    HTML-шаблон для заголовка страницы (использует шаблонизацию Chromium)

  • htmlstring

    Сырой HTML для рендеринга в PDF (обязателен, если не указан url)

  • landscapeboolean

    Альбомная ориентация (по умолчанию: false)

  • marginstring | object

    CSS margin: строка для всех сторон (например, "1cm") или объект { top, right, bottom, left }

  • pageRangesstring

    Диапазоны страниц для включения, например «1-3».

  • printBackgroundboolean

    Включает CSS-фоны (по умолчанию: true)

  • saveTostring

    Путь к выходному файлу (по умолчанию: ./output.pdf)

  • scalenumber

    Масштаб рендеринга 0.1-2 (по умолчанию: 1)

  • urlstring

    URL для рендеринга в PDF (обязателен, если не указан html)

  • widthstring

    Page width (переопределяет формат): значение CSS, например "8.5in".

get_job

Получает статус и результат одного асинхронного задания по идентификатору (например, асинхронный рендер видео, запущенный с помощью record_video). Пока задание в ожидании/обработке, возвращает текущий статус; по завершении возвращает результат задания — для видео это ссылки для просмотра, встраивания и файла. Бесплатно (без лимита запросов).

Параметры
  • job_idstringобязательный

    Идентификатор задания для поиска (возвращается, когда видео ставится в очередь как асинхронное задание).

import_agent_trace

Преобразует трейс действий page-agent/browser-use в перезапускаемую последовательность PageBolt. Передайте ему массив действий, которые сгенерировал page-agent (каждая запись может быть в формате {action, index|selector, value, ...} или {action_name: {...}}), а также, опционально, карту селекторов из observe_page с форматом "flatdomtree", чтобы преобразовать индексы в CSS-селекторы. Установите save:false для пробного запуска, который вернёт переведённые шаги без сохранения. Этот эндпоинт НЕ расходует квоту запросов. Используйте вместе: observe_page (format:"flatdomtree") → запустите агента → import_agent_trace, чтобы превратить ad-hoc запуск агента в детерминированную воспроизводимую последовательность.

Параметры
  • namestring

    Необязательное имя для итоговой последовательности.

  • saveboolean

    Определяет, нужно ли сохранять последовательность (по умолчанию true). Установите false для пробного запуска, который возвращает переведённые шаги + step_count без сохранения.

  • selectorsobject

    Необязательная карта соответствия индекс→CSS-селектор (например, из observe_page с форматом "flatdomtree"). Используется для преобразования числовых индексов элементов в трассе в конкретные селекторы.

  • traceobject[]обязательный

    Обязательное. Массив записей действий page-agent/browser-use. Поддерживает обе структуры: {action, index|selector, value, ...} и {action_name: {...}}.

  • typeenum

    Необязательный целевой тип для импортированных шагов: "sequence" (по умолчанию) или "video".

inspect_page

Инспектирует веб-страницу и возвращает структурированную карту всех интерактивных элементов, заголовков, форм, ссылок и изображений: каждый с уникальным CSS-селектором. Используйте этот инструмент ДО run_sequence или record_video, чтобы узнать, какие элементы есть на странице, и получить надёжные селекторы. Возвращает текст (не изображение), поэтому работает быстро и дёшево. Стоит 1 API-запрос.

Параметры
  • authorizationstring

    Значение заголовка Authorization (например, "Bearer <token>")

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование файлов cookie (по умолчанию: false)

  • blockChatsboolean

    Заблокировать виджеты живого чата

  • blockRequestsstring[]

    Шаблоны URL для блокировки

  • blockResourcesstring[]

    Типы ресурсов для блокировки

  • blockTrackersboolean

    Блокирует скрипты отслеживания.

  • bypassCSPboolean

    Обходит Content-Security-Policy на странице.

  • cookiesstring | object[]

    Устанавливаемые cookies — массив строк вида "name=value" или объектов { name, value, domain? }

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • deviceScaleFactornumber

    Коэффициент пикселей устройства (по умолчанию: 1)

  • geolocationobject

    Эмулировать геолокацию

  • headersobject

    Дополнительные HTTP-заголовки для отправки вместе с запросом.

  • heightinteger

    Высота области просмотра в пикселях (по умолчанию: 800)

  • hideSelectorsstring[]
  • htmlstring

    Сырой HTML для проверки (обязательно, если URL не указан)

  • includeConsoleboolean

    Захватывает вывод консоли браузера (console.log/info/warn/error/debug) и неперехваченные ошибки страницы, возникающие во время её загрузки. Добавляет раздел «Console» в результат — позволяет отлаживать поведение страницы во время выполнения, а не только её статический DOM. По умолчанию: false.

  • injectCssstring

    Пользовательский CSS для внедрения перед проверкой.

  • injectJsstring

    Пользовательский JavaScript для выполнения перед инспекцией

  • mediaTypeenum

    Эмулировать тип медиа CSS

  • navigationTimeoutinteger

    Таймаут навигации в мс (по умолчанию: 25000)

  • reducedMotionboolean

    Эмулировать prefers-reduced-motion

  • session_idstring

    Проверяет ЖИВОЕ состояние постоянной сессии (Starter+; создаётся через create_session) вместо загрузки страницы с нуля. Опустите url, чтобы проверить страницу ровно в том виде, в каком её оставили последние run_sequence/take_screenshot; передайте url, чтобы сначала перейти по адресу в рамках сессии. Идеально для повторного осмотра между действиями агента.

  • timeZonestring

    Чтобы переопределить часовой пояс в браузере, есть несколько подходов — от простого форматирования до полной эмуляции. Вот основные варианты. ## 1. Форматирование дат в нужном часовом поясе (без переопределения) Самый простой способ — использовать Intl.DateTimeFormat с опцией timeZone: js // Отобразить текущее время в Нью-Йорке const nyTime = new Intl.DateTimeFormat('ru-RU', { timeZone: 'America/New_York', dateStyle: 'full', timeStyle: 'long' }).format(new Date()); console.log(nyTime); // "вторник, 11 февраля 2025 г., 14:30:00 GMT-5" ## 2. Переопределение Date для эмуляции другого часового пояса Если нужно, чтобы весь код работал так, будто браузер находится в другом часовом поясе: js // Сохраняем оригинальные методы const originalGetTimezoneOffset = Date.prototype.getTimezoneOffset; // Устанавливаем целевой часовой пояс (например, UTC+3, Москва) const targetOffsetMinutes = -180; // UTC+3 = -180 минут от UTC Date.prototype.getTimezoneOffset = function() { return targetOffsetMinutes; }; // Но этого мало — нужно также переопределить методы получения локального времени const originalGetHours = Date.prototype.getHours; const originalGetMinutes = Date.prototype.getMinutes; const originalGetSeconds = Date.prototype.getSeconds; // Расчёт смещения между реальным и целевым часовым поясом function getRealOffset() { return originalGetTimezoneOffset.call(new Date()); } Date.prototype.getHours = function() { const realOffset = getRealOffset(); const diff = targetOffsetMinutes - realOffset; const utcHours = this.getUTCHours(); return (utcHours + Math.floor(diff / 60) + 24) % 24; }; // ... аналогично для getMinutes, getSeconds, getFullYear и т.д. Важно: этот подход хрупкий и затрагивает только методы чтения. Сеттеры (setHours, setFullYear и т.д.) тоже нужно переопределять. Лучше использовать готовые решения. ## 3. Готовые библиотеки ### Moment Timezone (устаревшая, но всё ещё встречается) js // Установка: npm install moment-timezone const moment = require('moment-timezone'); // Устанавливаем часовой пояс по умолчанию moment.tz.setDefault('Asia/Tokyo'); // Теперь все операции moment() будут использовать Токио console.log(moment().format()); // "2025-02-11T20:30:00+09:00" ### Day.js с плагином timezone (рекомендуется) js // Установка: npm install dayjs dayjs/plugin/utc dayjs/plugin/timezone import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; dayjs.extend(utc); dayjs.extend(timezone); // Устанавливаем глобальный часовой пояс dayjs.tz.setDefault('Europe/London'); // Теперь все dayjs() используют Лондон console.log(dayjs().format()); // "2025-02-11T12:30:00Z" ## 4. Переопределение Intl.DateTimeFormat (для тестирования) Если нужно протестировать код, который использует Intl, можно замокать его: js // Сохраняем оригинал const OriginalDateTimeFormat = Intl.DateTimeFormat; // Создаём мок, который всегда использует нужный часовой пояс Intl.DateTimeFormat = class extends OriginalDateTimeFormat { constructor(locales, options) { super(locales, { ...options, timeZone: 'Asia/Dubai' }); } }; ## 5. Полная эмуляция через jsdom или playwright Для тестов можно использовать среду с изменённым часовым поясом: js // Playwright await page.addInitScript(() => { // Эмуляция часового пояса }); // Или через контекст браузера const context = await browser.newContext({ timezoneId: 'Europe/Moscow' }); ## Рекомендация Для большинства случаев используйте Intl.DateTimeFormat с явным timeZone — это стандартный, надёжный способ. Для глобальной эмуляции в приложении — dayjs с плагином timezone. Для тестов — Playwright с timezoneId. Полное переопределение нативного Date — крайняя мера, она ломает множество вещей (JSON-сериализацию, сравнения дат, работу с Date.now()) и почти всегда приводит к трудноуловимым багам.

  • urlstring

    URL для проверки (обязателен, если не указан html)

  • userAgentstring

    Переопределяет строку User-Agent браузера

  • viewportDevicestring

    Пресет устройства для эмуляции вьюпорта (например, "iphone_14_pro"). Используйте list_devices, чтобы увидеть все пресеты.

  • viewportHasTouchboolean

    Включить эмуляцию сенсорных событий

  • viewportLandscapeboolean

    Альбомная ориентация.

  • viewportMobileboolean

    Включить эмуляцию мобильного мета-тега viewport

  • waitForSelectorstring

    Дождитесь появления этого CSS-селектора перед проверкой.

  • waitUntilenum

    Когда считать навигацию завершённой (по умолчанию: networkidle2)

  • widthinteger

    Ширина области просмотра в пикселях (по умолчанию: 1280)

list_devices

Перечисляет все доступные пресеты устройств для эмуляции окна просмотра (например, iphone_14_pro, macbook_pro_14). Используйте возвращённые имена устройств с параметром viewportDevice в take_screenshot.

Параметры

Без параметров.

list_jobs

Перечисляет ваши последние асинхронные задачи (например, видео, поставленные в очередь с помощью record_video). Возвращает id, тип, статус и временные метки каждой задачи. Используйте get_job, чтобы получить полный вывод конкретной задачи. Бесплатно (без квоты запросов).

Параметры

Без параметров.

list_sessions

Перечисляет все активные постоянные сессии браузера для вашего API-ключа. Возвращает идентификаторы сессий, время создания и время истечения срока действия. Полезно для проверки, какие сессии всё ещё активны, перед их повторным использованием.

Параметры

Без параметров.

observe_page

Получает компактное, оптимизированное по токенам "наблюдение" любой веб-страницы, созданное специально для AI-агентов. В ОДНОМ запросе возвращает: интерактивные элементы с индексом по id (роль, имя, CSS-селектор, состояние), эвристическую классификацию типа страницы (login, signup, search, article, form, generic) и сгруппированные "предлагаемые действия" (login flow, search, primary buttons, navigation). Опционально включает читаемое содержимое (Markdown), ARIA-дерево и скриншот. Это самый быстрый способ для агента понять и взаимодействовать с неинструментированной страницей. Он гораздо более эффективен по токенам, чем сырой скриншот или полный DOM. Используйте возвращённые селекторы с run_sequence для выполнения действий. Стоимость — 1 API-запрос.

Параметры
  • authorizationstring

    Значение заголовка Authorization (например, "Bearer <token>")

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование файлов cookie (по умолчанию: false)

  • blockChatsboolean

    Заблокировать виджеты живого чата

  • blockTrackersboolean

    Блокирует скрипты отслеживания.

  • bypassCSPboolean

    Обходит Content-Security-Policy на странице.

  • cookiesstring | object[]

    Устанавливаемые cookies — массив строк вида "name=value" или объектов { name, value, domain? }

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • deviceScaleFactornumber

    Коэффициент пикселей устройства (по умолчанию: 1)

  • formatenum

    Представление наблюдения. "json" (по умолчанию) возвращает индексированный по id массив "elements". "flatdomtree" возвращает "dom_text" (индексированный текстовый DOM, используемый browser-use / Alibaba page-agent, например [1]<button>Sign in</button>) а также карту "selectors" ({"1":"#signin"}) ВМЕСТО массива elements. Передайте dom_text в page-agent, затем передайте его трейс действий и эту карту selectors в import_agent_trace, чтобы построить повторно запускаемую последовательность.

  • headersobject

    Дополнительные HTTP-заголовки для отправки вместе с запросом.

  • heightinteger

    Высота области просмотра в пикселях (по умолчанию: 800)

  • htmlstring

    Сырой HTML для просмотра (обязателен, если нет URL).

  • includeAriaTreeboolean

    Также включает дерево доступности ARIA в режиме interesting-only (по умолчанию false).

  • includeConsoleboolean

    Также захватывает вывод консоли браузера (console.log/info/warn/error/debug) и необработанные ошибки страницы, возникшие во время загрузки (по умолчанию false). Добавляет раздел «Console»: полезно для отладки поведения страницы во время выполнения вместе с её структурой.

  • includeContentboolean

    Также извлекает основной читаемый контент в формате Markdown (по умолчанию false)

  • includeRectsboolean

    Включает ограничивающие рамки {x,y,w,h} для каждого элемента (по умолчанию false, не указывается для экономии токенов).

  • includeScreenshotboolean

    Также делает снимок экрана при той же загрузке страницы (по умолчанию false).

  • maxElementsinteger

    Ограничение на количество возвращаемых интерактивных элементов (по умолчанию 40, максимум 150). Меньше = меньше токенов.

  • navigationTimeoutinteger

    Таймаут навигации в мс (по умолчанию: 25000)

  • screenshotFormatenum

    Формат скриншота, когда includeScreenshot равно true (по умолчанию jpeg).

  • screenshotFullPageboolean

    Захватывает полную прокручиваемую страницу для снимка экрана (по умолчанию false)

  • session_idstring

    Наблюдает LIVE-состояние постоянной сессии (Starter+; создаётся с помощью create_session) вместо загрузки страницы заново. Не указывайте url, чтобы увидеть страницу ровно в том виде, в котором её оставил последний run_sequence/take_screenshot; передайте url, чтобы сначала перейти внутри сессии. Это рекомендуемый способ заново оценивать состояние между действиями агента и выбираться из поповеров/редиректов.

  • timeZonestring

    Чтобы переопределить часовой пояс в браузере, есть несколько подходов — от простого форматирования до полной эмуляции. Вот основные варианты. ## 1. Форматирование дат в нужном часовом поясе (без переопределения) Самый простой способ — использовать Intl.DateTimeFormat с опцией timeZone: js // Отобразить текущее время в Нью-Йорке const nyTime = new Intl.DateTimeFormat('ru-RU', { timeZone: 'America/New_York', dateStyle: 'full', timeStyle: 'long' }).format(new Date()); console.log(nyTime); // "вторник, 11 февраля 2025 г., 14:30:00 GMT-5" ## 2. Переопределение Date для эмуляции другого часового пояса Если нужно, чтобы весь код работал так, будто браузер находится в другом часовом поясе: js // Сохраняем оригинальные методы const originalGetTimezoneOffset = Date.prototype.getTimezoneOffset; // Устанавливаем целевой часовой пояс (например, UTC+3, Москва) const targetOffsetMinutes = -180; // UTC+3 = -180 минут от UTC Date.prototype.getTimezoneOffset = function() { return targetOffsetMinutes; }; // Но этого мало — нужно также переопределить методы получения локального времени const originalGetHours = Date.prototype.getHours; const originalGetMinutes = Date.prototype.getMinutes; const originalGetSeconds = Date.prototype.getSeconds; // Расчёт смещения между реальным и целевым часовым поясом function getRealOffset() { return originalGetTimezoneOffset.call(new Date()); } Date.prototype.getHours = function() { const realOffset = getRealOffset(); const diff = targetOffsetMinutes - realOffset; const utcHours = this.getUTCHours(); return (utcHours + Math.floor(diff / 60) + 24) % 24; }; // ... аналогично для getMinutes, getSeconds, getFullYear и т.д. Важно: этот подход хрупкий и затрагивает только методы чтения. Сеттеры (setHours, setFullYear и т.д.) тоже нужно переопределять. Лучше использовать готовые решения. ## 3. Готовые библиотеки ### Moment Timezone (устаревшая, но всё ещё встречается) js // Установка: npm install moment-timezone const moment = require('moment-timezone'); // Устанавливаем часовой пояс по умолчанию moment.tz.setDefault('Asia/Tokyo'); // Теперь все операции moment() будут использовать Токио console.log(moment().format()); // "2025-02-11T20:30:00+09:00" ### Day.js с плагином timezone (рекомендуется) js // Установка: npm install dayjs dayjs/plugin/utc dayjs/plugin/timezone import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import timezone from 'dayjs/plugin/timezone'; dayjs.extend(utc); dayjs.extend(timezone); // Устанавливаем глобальный часовой пояс dayjs.tz.setDefault('Europe/London'); // Теперь все dayjs() используют Лондон console.log(dayjs().format()); // "2025-02-11T12:30:00Z" ## 4. Переопределение Intl.DateTimeFormat (для тестирования) Если нужно протестировать код, который использует Intl, можно замокать его: js // Сохраняем оригинал const OriginalDateTimeFormat = Intl.DateTimeFormat; // Создаём мок, который всегда использует нужный часовой пояс Intl.DateTimeFormat = class extends OriginalDateTimeFormat { constructor(locales, options) { super(locales, { ...options, timeZone: 'Asia/Dubai' }); } }; ## 5. Полная эмуляция через jsdom или playwright Для тестов можно использовать среду с изменённым часовым поясом: js // Playwright await page.addInitScript(() => { // Эмуляция часового пояса }); // Или через контекст браузера const context = await browser.newContext({ timezoneId: 'Europe/Moscow' }); ## Рекомендация Для большинства случаев используйте Intl.DateTimeFormat с явным timeZone — это стандартный, надёжный способ. Для глобальной эмуляции в приложении — dayjs с плагином timezone. Для тестов — Playwright с timezoneId. Полное переопределение нативного Date — крайняя мера, она ломает множество вещей (JSON-сериализацию, сравнения дат, работу с Date.now()) и почти всегда приводит к трудноуловимым багам.

  • urlstring

    URL для наблюдения (обязателен, если нет html)

  • userAgentstring

    Переопределяет строку User-Agent браузера

  • viewportDevicestring

    Пресет устройства для эмуляции вьюпорта (например, "iphone_14_pro"). Используйте list_devices, чтобы увидеть все пресеты.

  • waitForSelectorstring

    Ожидает появления этого CSS-селектора перед наблюдением.

  • waitUntilenum

    Когда считать навигацию завершённой (по умолчанию: networkidle2)

  • widthinteger

    Ширина области просмотра в пикселях (по умолчанию: 1280)

record_video

Записывает профессиональное демо-видео многошаговой последовательности автоматизации браузера. Создаёт MP4/WebM/GIF с подсветкой курсора, эффектами кликов, плавным движением, заметками к шагам, рамкой браузера (macOS/Windows), градиентным/стеклянным фоном и не только. Стоимость — 3 запроса API. Сохраняет на диск. ЛУЧШАЯ ПРАКТИКА: делайте видео короткими (5-15 шагов действий). НЕ добавляйте шаги ожидания между каждым действием — параметр pace управляет таймингом. Используйте wait только для загрузки страниц или пауз для озвучки. НЕ используйте zoom, если пользователь явно не попросил об этом.

Параметры
  • asyncboolean

    Рендерит через асинхронную задачу для надёжности. Видео ставится в очередь (202 + job_id), и этот инструмент опрашивает статус, пока задание не завершится, поэтому длинные записи не упираются в таймаут одного запроса к API. Готовое видео отдаётся по приватному URL (его байты нельзя получить обратно через API-ключ). Установите false, чтобы принудительно выполнить один блокирующий синхронный запрос, который возвращает видео INLINE (встроенное в base64 + сохраняется в saveTo). ПО УМОЛЧАНИЮ: true, кроме случаев, когда вы передаёте saveTo (тогда используется синхронный режим, чтобы файл реально создался на диске). Если асинхронный режим недоступен в вашем тарифе, автоматически используется синхронный. Квота списывается только при успешном выполнении; максимум 5 ожидающих заданий на аккаунт.

  • audioGuideobject

    Настройки TTS аудиогида. Два режима: (1) Пошаговый: добавьте "narration" к отдельным шагам. (2) Сценарий: укажите "script" с маркерами {{N}} для непрерывного повествования, синхронизированного с шагами.

  • authStateobject

    Аутентифицированная запись/захват: cookies и localStorage внедряются ДО первой навигации, поэтому защищённые страницы (дашборды, админ-панели) отрисовываются уже залогиненными. Выбирайте этот вариант вместо скрипта для входа. Значения никогда не попадают в логи.

  • autoZoomboolean

    Включает автоматическое масштабирование при всех кликах (по умолчанию: false). Используется только когда пользователь явно запрашивает масштабирование.

  • backgroundobject

    Стилизованный фон позади видео. Добавляет градиентный или сплошной фон с внутренними отступами и скруглёнными углами, создаёт эффект «плавающего окна».

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование cookie (по умолчанию: true для видео).

  • blockChatsboolean

    Заблокировать виджеты живого чата

  • blockTrackersboolean

    Блокирует скрипты отслеживания.

  • clickEffectobject

    Настройки визуального эффекта клика.

  • cookiesstring | object[]

    Cookies, которые нужно установить перед первой навигацией: строки "name=value" или полные объекты cookie (domain, path, secure, httpOnly, sameSite, expires). До 100. По умолчанию domain равен хосту первого шага navigate.

  • cursorobject

    Настройки внешнего вида курсора

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • deviceScaleFactornumber

    Коэффициент пикселей устройства (по умолчанию: 1)

  • formatenum

    Формат видео (по умолчанию: mp4). webm/gif требуют тариф Starter+.

  • frameobject

    Рамка браузера вокруг видео. Добавляет строку заголовка в стиле macOS/Windows.

  • framerateinteger

    Кадров в секунду: 24, 30 или 60 (по умолчанию: 30)

  • pacenumber | enum

    Управляет тем, насколько размеренным ощущается видео. Число (0,25–6,0: чем больше, тем медленнее) или пресет: "fast" (0,5×), "normal" (1×), "slow" (2×), "dramatic" (3×), "cinematic" (4,5×). По умолчанию: "normal".

  • pollTimeoutMsinteger

    Максимальное время ожидания завершения асинхронной видео-задачи в миллисекундах (по умолчанию: 240000 = 4 минуты). Если по истечении этого времени задача всё ещё выполняется, возвращается job_id, чтобы вы могли проверить её позже с помощью get_job.

  • saveTostring

    Путь к выходному файлу (по умолчанию: ./recording.mp4)

  • stepsobject[]обязательный

    Массив шагов действий для записи. Соблюдайте краткость: оптимально 5-15 шагов. НЕ добавляйте шаги ожидания - таймингом управляет темп.

  • variablesobject

    Карта «ключ-значение» для подстановки переменных в URL и значениях шагов. Например, { "base_url": "https://example.com" } заменяет {{base_url}} в шагах.

  • viewportobject

    Размер области просмотра браузера

  • zoomobject

    Глобальные настройки масштабирования. Используйте только тогда, когда пользователь явно запрашивает масштабирование. НЕ включайте по умолчанию.

run_sequence

Выполняет многошаговую последовательность автоматизации браузера. Переходит по страницам, взаимодействует с элементами (клик, заполнение, выбор) и создаёт несколько скриншотов/PDF/diff в одном сеансе браузера. Используйте шаг 'diff' для сравнения текущего состояния страницы с другим URL после автоматизации. Каждый результат считается как 1 API-запрос.

Параметры
  • authStateobject

    Аутентифицированная запись/захват: cookies + localStorage внедряются ДО первой навигации, так что защищённые страницы (дашборды, админ-панели) отрисовываются с учётом выполненного входа. Предпочитайте это вместо скриптового сценария входа. Значения никогда не логируются.

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование файлов cookie (по умолчанию: false)

  • blockChatsboolean

    Заблокировать виджеты живого чата

  • blockTrackersboolean

    Блокирует скрипты отслеживания.

  • cookiesstring | object[]

    Куки для установки перед навигацией - строки "name=value" или полные объекты cookie (domain, path, secure, httpOnly, sameSite, expires). До 100. По умолчанию Domain совпадает с хостом первого шага navigate.

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • deviceScaleFactornumber

    Коэффициент пикселей устройства (по умолчанию: 1)

  • observeAfterEachStepboolean

    FREE (дополнительные запросы не списываються). После каждого шага прикрепляйте комапктный снимок состolяния, укладывающийся в лимит токенов: тип страницы + ключевые интерактивные элеmенты (id/role/name/selector) + предагаемые дейстvия, БЕЗ скриншота. Используйте это, когда шаг может открть выпадающий списк, поповер или модальное окно либо перейти на другую страницу: прочийте трассировку, чтобы убедиться, что сейчас на экране, и выберите правильный селектор для СЛЕДУЮЩЕГо вызоvа, вместo того чтобы отправлять вызовы вслепую пакками. Скрытые и находящися за пределами экрана элементы отфильтровываються.

  • session_idstring

    Постоянный идентификатор сессии (только Starter+). Переиспользует живую страницу браузера, созданную с помощью create_session: состояние браузера (cookies, localStorage, auth) переносится из предыдущих запросов в этой сессии.

  • stepsobject[]обязательный

    Массив шагов для выполнения по порядку. Должен включать хотя бы один шаг вывода (скриншот, pdf или diff). Максимальное число шагов зависит от плана (20 Free/Hobby, 30 Starter, 50 Growth, 100 Scale); если превысить, сервер вернёт понятную ошибку plan_limit. Максимум 5 выводов.

  • viewportobject

    Размер области просмотра браузера

take_screenshot

Захватывает скриншот URL, HTML или Markdown-содержимого. Поддерживает эмуляцию устройств, блокировку рекламы/чатов/трекеров, извлечение метаданных, геолокацию, часовой пояс, стилизацию (рамки macOS/Windows, градиентные/стеклянные фоны, тени) и другое. Возвращает изображение (PNG, JPEG или WebP).

Параметры
  • authorizationstring

    Значение заголовка Authorization (например, "Bearer <token>")

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование файлов cookie (по умолчанию: false)

  • blockChatsboolean

    Блокирует виджеты онлайн-чата на странице.

  • blockRequestsstring[]

    Шаблоны URL для блокировки (массив строк)

  • blockResourcesstring[]

    Типы ресурсов для блокировки (например, ["image", "font"])

  • blockTrackersboolean

    Блокирует скрипты отслеживания на странице.

  • bypassCSPboolean

    Обходит Content-Security-Policy на странице.

  • clickstring

    CSS-селектор для клика перед созданием скриншота

  • clipobject

    Область обрезки { x, y, width, height } в пикселях

  • cookiesstring | object[]

    Устанавливаемые cookies — массив строк вида "name=value" или объектов { name, value, domain? }

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • delayinteger

    Миллисекунды ожидания перед захватом (по умолчанию: 0)

  • deviceScaleFactornumber

    Соотношение пикселей устройства, используйте 2 для Retina (по умолчанию: 1)

  • extractMetadataboolean

    Извлекает метаданные страницы (заголовок, описание, OG-теги) вместе со скриншотом.

  • formatenum

    Формат изображения (по умолчанию png)

  • fullPageboolean

    Захватывает полную прокручиваемую страницу (по умолчанию: false)

  • fullPageMaxHeightinteger

    Максимальный предел высоты в пикселях для снимков всей страницы.

  • fullPageScrollboolean

    Автоматически прокручивает страницу перед захватом, чтобы вызвать загрузку отложенных изображений.

  • fullPageScrollByinteger

    Пиксели прокрутки за один шаг (по умолчанию: высота окна просмотра)

  • fullPageScrollDelayinteger

    Задержка между шагами прокрутки в мс (по умолчанию: 400)

  • geolocationobject

    Эмулирует геолокацию { latitude, longitude, accuracy? }

  • headersobject

    Дополнительные HTTP-заголовки для отправки вместе с запросом.

  • heightinteger

    Высота области просмотра в пикселях (по умолчанию: 800)

  • hideSelectorsstring[]

    Массив CSS-селекторов, которые нужно скрыть перед захватом.

  • htmlstring

    Сырой HTML для рендеринга (обязателен, если не указаны url/markdown)

  • injectCssstring

    Пользовательский CSS для внедрения перед захватом (макс. 50 КБ)

  • injectJsstring

    Пользовательский JavaScript, выполняемый перед захватом (макс. 50 КБ)

  • markdownstring

    Преобразует содержимое Markdown в снимок экрана.

  • mediaTypeenum

    Эмулировать тип медиа CSS

  • navigationTimeoutinteger

    Таймаут навигации в мс (по умолчанию: 25000)

  • omitBackgroundboolean

    Прозрачный фон (только PNG/WebP).

  • qualityinteger

    Качество JPEG/WebP 1-100 (по умолчанию: 80)

  • reducedMotionboolean

    Эмулирует prefers-reduced-motion для отключения анимаций.

  • selectorstring

    CSS-селектор, который захватывает конкретный элемент

  • session_idstring

    Постоянный идентификатор сессии (только Starter+). Переиспользует живую страницу браузера, созданную с помощью create_session: состояние браузера (cookies, localStorage, auth) переносится из предыдущих запросов в этой сессии.

  • styleobject

    Параметры стилизации скриншотов: добавьте рамку macOS/Windows, градиентный или стеклянный фон, тень и скругленные углы. Используйте ярлык «theme» для пресетов в один клик или настройте отдельные свойства.

  • timeZonestring

    Переопределяет часовой пояс браузера (например, "America/New_York")

  • urlstring

    URL для захвата (обязателен, если не указаны html/markdown)

  • userAgentstring

    Переопределяет строку User-Agent браузера

  • viewportDevicestring

    Пресет устройства для эмуляции вьюпорта (например, "iphone_14_pro", "macbook_pro_14"). Используйте list_devices, чтобы увидеть все пресеты.

  • viewportHasTouchboolean

    Включить эмуляцию сенсорных событий

  • viewportLandscapeboolean

    Альбомная ориентация.

  • viewportMobileboolean

    Включить эмуляцию мобильного мета-тега viewport

  • waitForSelectorstring

    Дождитесь появления этого CSS-селектора перед захватом.

  • waitUntilenum

    Когда считать навигацию завершённой (по умолчанию: networkidle2)

  • widthinteger

    Ширина области просмотра в пикселях (по умолчанию: 1280)

visual_diff

Сравнивает две веб-страницы (или строки HTML) попиксельно и возвращает изображение diff, подсвечивающее все визуальные различия. Поддерживает полностраничный захват, эмуляцию устройств, селекторы элементов и все опции, доступные для скриншотов. Возвращает изображение diff, количество изменённых пикселей и процент изменений. Стоимость — 1 API-запрос.

Параметры
  • authorizationstring

    Значение заголовка Authorization (например, "Bearer <token>")

  • blockAdsboolean

    Блокирует рекламу на странице.

  • blockBannersboolean

    Скрывает баннеры согласия на использование файлов cookie (по умолчанию: false)

  • blockChatsboolean

    Блокирует виджеты онлайн-чата на странице.

  • blockRequestsstring[]

    Шаблоны URL для блокировки (массив строк)

  • blockResourcesstring[]

    Типы ресурсов для блокировки (например, ["image", "font"])

  • blockTrackersboolean

    Блокирует скрипты отслеживания на странице.

  • bypassCSPboolean

    Обходит Content-Security-Policy на странице.

  • clickstring

    CSS-селектор для клика перед захватом на обеих страницах

  • clipobject

    Область обрезки { x, y, width, height } в пикселях

  • cookiesstring | object[]

    Устанавливаемые cookies — массив строк вида "name=value" или объектов { name, value, domain? }

  • darkModeboolean

    Эмулировать тёмную цветовую схему (по умолчанию: false)

  • delayinteger

    Миллисекунды ожидания перед захватом на обеих страницах (по умолчанию: 0)

  • deviceScaleFactornumber

    Коэффициент пикселей устройства (по умолчанию: 1)

  • fullPageboolean

    Захватывает полную прокручиваемую страницу для обеих сторон (по умолчанию: false)

  • fullPageMaxHeightinteger

    Максимальный предел высоты в пикселях для снимков всей страницы.

  • fullPageScrollboolean

    Автоматически прокручивает страницы перед захватом, чтобы активировать ленивую загрузку изображений.

  • fullPageScrollByinteger

    Пиксели прокрутки за один шаг (по умолчанию: высота окна просмотра)

  • fullPageScrollDelayinteger

    Задержка между шагами прокрутки в мс (по умолчанию: 400)

  • geolocationobject

    Эмулирует геолокацию { latitude, longitude, accuracy? }

  • headersobject

    Дополнительные HTTP-заголовки для отправки вместе с запросом.

  • heightinteger

    Высота области просмотра в пикселях (по умолчанию: 800)

  • hideSelectorsstring[]

    Массив CSS-селекторов, которые нужно скрыть перед захватом.

  • html_astring

    Сырой HTML для первой страницы (обязателен, если url_a не указан)

  • html_bstring

    Необработанный HTML второй страницы (обязателен, если нет url_b)

  • injectCssstring

    Пользовательский CSS для внедрения перед захватом (макс. 50 КБ)

  • injectJsstring

    Пользовательский JavaScript, выполняемый перед захватом (макс. 50 КБ)

  • mediaTypeenum

    Эмулировать тип медиа CSS

  • navigationTimeoutinteger

    Таймаут навигации в мс (по умолчанию: 25000)

  • reducedMotionboolean

    Эмулирует prefers-reduced-motion для отключения анимаций.

  • selectorstring

    CSS selector: захватывает только этот элемент на обеих страницах

  • thresholdnumber

    Чувствительность Pixelmatch: от 0 до 1 (по умолчанию: 0.1). Чем ниже значение, тем выше чувствительность к незначительным различиям.

  • timeZonestring

    Переопределяет часовой пояс браузера (например, "America/New_York")

  • url_astring

    URL первой страницы (обязателен, если нет html_a)

  • url_bstring

    URL второй страницы (обязательно, если нет html_b)

  • userAgentstring

    Переопределяет строку User-Agent браузера

  • viewportDevicestring

    Пресет устройства для эмуляции вьюпорта (например, "iphone_14_pro"). Используйте list_devices, чтобы увидеть все пресеты.

  • viewportHasTouchboolean

    Включить эмуляцию сенсорных событий

  • viewportLandscapeboolean

    Альбомная ориентация.

  • viewportMobileboolean

    Включить эмуляцию мобильного мета-тега viewport

  • waitForSelectorstring

    Дождитесь появления этого CSS-селектора перед захватом.

  • waitUntilenum

    Когда считать навигацию завершённой (по умолчанию: networkidle2)

  • widthinteger

    Ширина области просмотра в пикселях (по умолчанию: 1280)

1.17.1основная
1.17.0
1.16.1
1.13.0
1.12.0
1.11.0
1.10.1
1.10.0
1.9.1
1.9.0
1.8.2
1.8.1
1.8.0
1.7.1
1.6.1
1.6.0
1.5.2
1.5.1
1.3.0
1.2.0
1.1.1
1.1.0
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0

Выберите клиент, чтобы установить Custodia-Admin/pagebolt-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"custodia-admin-pagebolt-mcp-pwkbk7nyo5\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"pagebolt-mcp\"],\"env\":{\"PAGEBOLT_API_KEY\":\"pf_live_your_key_here\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add custodia-admin-pagebolt-mcp-pwkbk7nyo5 --env PAGEBOLT_API_KEY=pf_live_your_key_here -- npx -y pagebolt-mcp

Либо через JSON-конфиг:

claude mcp add-json custodia-admin-pagebolt-mcp-pwkbk7nyo5 "{\"command\":\"npx\",\"args\":[\"-y\",\"pagebolt-mcp\"],\"env\":{\"PAGEBOLT_API_KEY\":\"pf_live_your_key_here\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add custodia-admin-pagebolt-mcp-pwkbk7nyo5 --env PAGEBOLT_API_KEY=pf_live_your_key_here -- npx -y pagebolt-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.custodia-admin-pagebolt-mcp-pwkbk7nyo5]
command = "npx"
args = ["-y", "pagebolt-mcp"]

[mcp_servers.custodia-admin-pagebolt-mcp-pwkbk7nyo5.env]
PAGEBOLT_API_KEY = "pf_live_your_key_here"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите Custodia-Admin/pagebolt-mcp, а в поле команды запуска — строку ниже:
npx -y pagebolt-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например custodia-admin-pagebolt-mcp-pwkbk7nyo5.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: custodia-admin-pagebolt-mcp-pwkbk7nyo5
    command: npx
    args:
      - "-y"
      - "pagebolt-mcp"
    env:
      PAGEBOLT_API_KEY: pf_live_your_key_here
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "custodia-admin-pagebolt-mcp-pwkbk7nyo5": {
      "command": "npx",
      "args": [
        "-y",
        "pagebolt-mcp"
      ],
      "env": {
        "PAGEBOLT_API_KEY": "pf_live_your_key_here"
      }
    }
  }
}

Похожие MCP-сервера

hyperbrowserai/mcp

hyperbrowserai/mcp

от hyperbrowserai

MCP сервер Hyperbrowser для скрапинга, краулинга и извлечения структурированных данных. Включает браузерные агенты OpenAI CUA и Claude. Для веб-автоматизации и сбора данных LLM.

TypeScript⭐ 789
scrapeless-ai/scrapeless-mcp-server

scrapeless-ai/scrapeless-mcp-server

официальный

от scrapeless-ai

Scrapeless MCP Server подключает LLM и AI-агентов к вебу: поиск Google, тренды, браузерная автоматизация, скрапинг (HTML, Markdown, скриншоты). Применяется для AI-ассистентов, копилотов и веб-агентов.

TypeScript⭐ 169
junipr-labs/mcp-server

junipr-labs/mcp-server

от junipr-labs

MCP-сервер Junipr даёт AI-ассистентам доступ к 75+ инструментам веб-интеллигенции: скриншоты, PDF, метаданные и многое другое. Бесплатный тариф: 500 кредитов/месяц. Всё через один API.

JavaScript⭐ 1
ymw0407/auth-fetch-mcp

ymw0407/auth-fetch-mcp

от ymw0407

MCP сервер для AI-ассистентов: открывает браузер для входа на защищённые страницы, захватывает очищенный HTML и сохраняет сессии локально. Помогает разработчикам читать сайты с авторизацией через ИИ без повторных логинов.

TypeScript⭐ 36
kimtth/mcp-aoai-web-browsing

kimtth/mcp-aoai-web-browsing

от kimtth

Сервер MCP для браузерной автоматизации через Playwright, интегрированный с Azure OpenAI и OpenAI. Преобразует инструменты MCP в вызовы функций OpenAI, позволяя AI-агентам управлять веб-страницами....

Python⭐ 35
Playwright MCP

Playwright MCP

официальный

от microsoft

Playwright управляет браузером: открывает страницы, кликает, заполняет формы. Работает по accessibility-дереву, без скриншотов.

TypeScript⭐ 38388
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин