Posting3 min read

Connect an agent over MCP

Siren has a remote MCP server at https://mcp.mysiren.ai/mcp. Add that URL in your agent. The agent opens a consent page. You tap Authorise. No API keys to copy. The agent door is on every plan, Spark included. The one tier rule left is video: renders need Pro or above. Stills, cards, and Studio cards are open to every plan.

The agent uses your Brand DNA and your already-connected channels. Posting stays off until you turn on Allow posting on the consent screen. Revoke any time in Developers.

Wiring an agent, or an agent reading this? Start with SKILL.md: the tool order, what needs Allow posting, and five copy-paste prompts.

What an agent can do with Siren, per agent: Claude Code · Cursor · ChatGPT · Claude · overview.

What to ask

Once the agent is connected, the prompts are one line:

  • "Write and render a launch video for our new export feature, then post it to X."
  • "Make three stills from last week's win and schedule the best one for Monday 9am."
  • "Read the brand DNA, fix what is thin, then draft the next campaign."

Posting stays behind Allow posting: the agent asks, you approve, the post fires. Videos need Pro or above; stills and cards run on every plan.

Claude Code

claude mcp add --transport http siren https://mcp.mysiren.ai/mcp

Claude (claude.ai)

Settings → Connectors → Custom → paste https://mcp.mysiren.ai/mcp

Cursor

Settings → Tools & MCP. Add a remote server, or put this in ~/.cursor/mcp.json / .cursor/mcp.json:

{ "mcpServers": { "siren": { "url": "https://mcp.mysiren.ai/mcp" } } }

Then Connect. Cursor opens the consent page.

ChatGPT

Developer Mode on. Settings → Apps & Connectors → Create. URL: https://mcp.mysiren.ai/mcp

Grok

grok.com/connectors → New → Custom. Same URL.

Grok Build / CLI:

grok mcp add --transport http siren https://mcp.mysiren.ai/mcp

After Authorise

The agent can call:

  • Generate and post: get_account, clarify_brief, create_campaign, render_asset, list_runs, get_run, post_run, schedule_post

  • Videos: list_films, list_platinum_films, describe_film. Platinum films are studio-grade, 50 credits each, for a big launch. Browse the 45 video formats, then get one's body schema, a reference body, its media slots and the brand prefills

  • Media: upload_media. Store a photo or video from an https URL or base64 and get a workspace-owned URL for any media slot

  • Brand DNA: get_brand_dna, update_brand_dna

  • Product screens (stored on R2): list_product_screens, upload_product_screen, update_product_screen, delete_product_screen Another brand: your agent does the lookup and passes brand (or brand_override on render_asset): name, site, logo_url, primary, accent, sells. Siren does not crawl sites on this path. The logo has to be a live https image file: their header mark, their /brand or /press page, or the app icon. A missing, dead or damaged logo comes back as brand_logo_required, brand_logo_unreachable or brand_logo_unreadable, because a video with no mark is generic.

  • Logo: upload_logo

  • People library (team faces for stills): list_people, add_person, delete_person

  • Mascot: get_mascot, create_mascot (from a description or a reference picture), mascot_step (keep, retry, add a pose)

  • Brand videos (read by Gemini, played in videos when a prompt names them): list_brand_videos, upload_brand_video, delete_brand_video

  • Results: list_media, delete_media, get_performance, list_posts

  • Credits: buy_credits returns a Stripe checkout link the human pays. The balance is on get_account.

post_run queues a live publish behind a short cancellable window (about two minutes) and fires it. Then poll get_run and read posts[].url for the live permalink and the caption. Pass caption to create_campaign or post_run and your words go out verbatim; omit it and Siren writes the caption. schedule_post (and create_campaign with scheduled_at) queues a post for a time in your timezone and fires the chosen platforms in order (X, LinkedIn, Instagram, TikTok, YouTube). Both need Allow posting and a channel already connected in the Siren dashboard.

upload_product_screen takes a name plus image_url (https PNG, JPG, or WebP) or image_base64, and optional screen_type, device, and theme. Same work with an API key: POST /api/v1/programmatic/brand-assets/screens.

Videos are deterministic: the same body always renders the same MP4. list_films shows what each of the 45 video formats is for; describe_film returns the body JSON Schema, a reference body, the seed envelope, and the media slots (which fields take image or video URLs). Omitted media fields fill from your Brand DNA screen library, so you rarely pass images at all. Your own values always win.

Have video of your own? upload_media stores it (MP4/MOV/WebM up to 200 MB) and returns a workspace-owned URL. Put that URL in videoClips on Alchemy or Gallery and the engine cuts it into sprite sheets that play inside the video. Only your own uploads are accepted; a foreign URL is dropped, not fetched. Same work with an API key: GET /api/v1/programmatic/films, GET /api/v1/programmatic/films/{id}, POST /api/v1/programmatic/media.

Brand Memory is not on MCP. Agents cannot read or write the memory ledger. They can read and patch Brand DNA (overview, tagline, offer, features, products, audience).

Registry listing: ai.mysiren/siren.

© 2026 Siren Ai, Inc.