Siren

Siren собирает и публикует визуальные рекламные кампании прямо из ассистента

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные

Что умеет

  • Создавать кампании и планировать публикации
  • Рендерить визуальные ассеты по бренд-гайду
  • Управлять продуктовыми экранами и медиафайлами
  • Публиковать и планировать посты
  • Настраивать шаблоны и автоматизацию студии

Какие данные видит

Ассистент работает с аккаунтом, брендбуком и медиатекой пользователя, без отдельной авторизации.

Нужен ли аккаунт

Не нужен: сервер работает без входа

Siren — MCP-сервер для брендированных визуальных кампаний. Ассистент планирует ролики, рендерит ассеты по фирменному стилю и публикует или планирует посты. Есть работа с брендбуком, продуктовыми экранами и шаблонами студии.

Как подключить

Как подключить Siren к Claude

Адрес сервера, который нужно вставить в настройках Claude:

https://mcp.mysiren.ai/mcp

  1. Откройте Claude (сайт claude.ai или приложение для компьютера).
  2. Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
  3. Нажмите Добавить пользовательский коннектор (Add custom connector).
  4. Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
  5. В чате нажмите + → Коннекторы и включите новый коннектор.

Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.

Авторизация

После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.

Как подключить Siren к ChatGPT

Адрес сервера, который нужно вставить в настройках ChatGPT:

https://mcp.mysiren.ai/mcp

  1. Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
  2. Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
  3. Откройте Настройки → Коннекторы и нажмите Создать (Create).
  4. Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
  5. В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
  6. В новом чате откройте + → Приложения/Коннекторы и включите коннектор.

Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.

Авторизация

При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.

Как подключить Siren к Cursor

Адрес сервера, который нужно вставить в настройках Cursor:

https://mcp.mysiren.ai/mcp

Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.

Вручную:

  1. В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
  2. Вставьте JSON, скопированный ниже, в открывшийся файл ~/.cursor/mcp.json (для одного проекта: .cursor/mcp.json в корне проекта).
  3. Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.

Авторизация

Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.

Список инструментов сервера (21)

Технические названия из tools/list. Нужны только разработчикам.

get_accountGet the connected Siren workspace: plan, key scopes, auto-post setting, and daily limit. Call this first to learn what the account can do before generating. Empty asset_types / channels / connected_accounts lists mean UNRESTRICTED, not missing — never stop on them. Film renders need plan pro or above (empire/scale/pro).
list_runsList the workspace's recent generation runs (newest first): status, brief, channel, asset URLs, and audience scores.
get_runGet one run by id — full status, output text, asset URLs, impact and audience scores, and any error. Poll this after create_campaign or render_asset until status is terminal. After post_run, `posts[]` carries each platform's status and, once it fires, the live URL and the caption that went out.
create_campaignCreate a Siren campaign from a plain-language brief — the full pipeline: plan, on-brand copy, deterministic render, verify. Returns the run; poll get_run until it finishes. Spends credits (image 10, video 25; voice or music-only is the same 25). Pass output_type to pin a film (list_films has the catalog); omit it and Siren picks. Optional scheduled_at (ISO-8601) queues a sequential post (X → Instagram → TikTok, or platforms you pass) when the render succeeds — requires Allow posting. Fails with a 402 upgrade message if the plan or balance can't cover it. ANY BRAND: pass `brand` to make it for a brand that is not this workspace's own, e.g. brand={"name": "Acme", "site": "acme.com", "logo_url": "https://acme.com/logo.png", "primary": "#FF4400"}. Nothing of this workspace's identity leaks in.
list_filmsEvery live film master Siren can render: name, what it is, when to hire it, runtime, aspect, and whether this plan can render it. Films are deterministic MP4s; video renders need Pro or above. Read this before promising a specific film, then describe_film for its body.
describe_filmThe full contract for one film: what it is and when to hire it, its body JSON Schema, a reference body, the seed envelope, media slots (which fields take image/video URLs), the brand prefills (colours, logo, screens) and the override rules. Call it before writing a render_asset body.
clarify_briefAsk Siren's clarifier whether a brief is specific enough to generate from. Returns ready=true/false plus follow-up questions. Use before create_campaign when the user's request is vague.
render_assetRender pre-formed SirenSeed bodies directly (advanced): deterministic template render, no planner. Each item: {output_type, channel, seed_body, archetype?, family?, surface?, caption?, voice_id?, brand_override?}. Prefer create_campaign unless the user has concrete seed JSON. Returns run ids — poll get_run for status. ANY BRAND: put brand_override={"name": "Acme", "site": "acme.com", "logo_url": "https://acme.com/logo.png", "primary": "#FF4400", "accent": "#111111"} on an item to render it for a brand that is not this workspace's own. With a name it is a clean slate: none of this workspace's logo, mascot, font, handle, screenshots or stills are used. Media slots take only URLs you uploaded with upload_media.
upload_mediaStore a photo or video the human wants in a post, from an https URL or base64. Returns a workspace-owned URL to put in any media slot of a film body (describe_film lists the slots) — the renderer reads it directly. Images: PNG/JPG/WebP up to 15 MB. Videos: MP4/MOV/WebM up to 200 MB. The same bytes are stored once (content-hashed).
post_runPost a finished run's assets to the workspace's CONNECTED SOCIAL ACCOUNT. This is live, public distribution on the customer's channel — always confirm with the user before calling. Only works if the grant was authorised with posting allowed. Pass `caption` to own the words; it goes out verbatim. The call queues the post behind a short publish window (about two minutes, cancellable) rather than firing inline: poll get_run after that and read `posts[].url` for the live permalink and the caption that went out.
schedule_postSchedule a finished run to post at scheduled_at (ISO-8601). Shows in the customer's local timezone. platforms: x, instagram, tiktok, linkedin, youtube, or everything. Posts fire sequentially. Requires Allow posting. Prefer this over post_run when the user names a time. On create_campaign you can pass scheduled_at instead.
get_brand_dnaGet this workspace's Brand DNA: name, overview, tagline, offer, features, products, audience, palette, logos. Not Brand Memory.
update_brand_dnaPatch Brand DNA. Send only keys to change. Nested bags (offer, product_map, icp) merge. Examples: {tagline, overview, offer: {product_name, one_liner, features, who_its_for, primary_cta}, product_map: {offerings, how_we_work}, icp: {who_buys, pains}}. Does not read or write Brand Memory.
list_product_screensList the brand assets in Brand DNA: product photos, app screenshots, packaging. Each row has name, kind, description, use_when, tags, scan_status (scanning / ready / failed), device, theme, url.
upload_product_screenUpload a brand asset (product photo, app screenshot, packaging) into Brand DNA and store it on R2. Pass image_url (https PNG/JPG/WebP) or image_base64. Two ways to file it: - Send `description` (and optionally kind, use_when, tags, name): Siren trusts your words and files the asset as-is. No read. - Send only the file: Gemini reads the picture and writes name, kind, description, use_when, tags itself. scan_status goes scanning → ready in about 8 seconds; poll list_product_screens. kind is free text ("product photo", "dashboard screenshot", "packaging"), there is no fixed list. A brief that names an asset ("advertise the pink handbag") pulls that file into the still. screen_type / device / theme only matter for device-framed screenshot masters.
update_product_screenEdit an existing brand asset: name, description, kind, use_when, and the screenshot tags (screen_type, device, theme).
delete_product_screenRemove a product screenshot from Brand DNA. Does not delete Brand Memory.
studio_templatesList Siren Studio's 33 React data-card types with family, description, and body schema. Use this before studio_card so the body matches.
studio_cardRender a Studio data card from a type + body. Deterministic React, no paint. Optional live post after render. Returns run_id, image url, and post url when posted.
studio_automateCreate a Studio profile on this API key. Returns generate curl and inbound hook URLs (Stripe, GitHub, Uptime Kuma, Product Hunt, generic). Passing delivery.social_account_ids turns on social delivery for the profile — that publishes, so it requires Allow posting.
studio_scheduleRender a Studio card then queue a ScheduledPost at scheduled_at.