Orshot
@rishimohan
About Orshot
Render on-brand images, PDFs and videos from templates. 60+ tools: brand kit, folders, workflows. Hosted, OAuth, no API key.
Connection details
https://mcp.orshot.com/mcpSetup
claude mcp add orshot --transport http https://mcp.orshot.com/mcpTools
66Check if authenticated and list available workspaces.
List all workspaces you have access to via OAuth.
Set which workspace to use for subsequent operations.
List studio templates in the active workspace. Supports server-side search by name and filtering by tags.
Get full details of a studio template including design structure.
Get the available modification parameters for a studio template. Returns the list of dynamic fields (text, image, etc.) that can be customized when rendering via orshot_generate_image. The response contains a "modifications" array where each entry has: - id: The key to use in the modifications object when rendering. For single-page templates this is just the parameterId (e.g. "headline"). For multi-page templates it is prefixed with the page number (e.g. "page1@headline", "page2@cta_text"). - type: The parameter type — "text", "imageUrl", "videoUrl", "backgroundColor", "fill", "color" - description: Human-readable label Beyond these listed keys, EVERY parameterizable element also accepts implicit dot-notation render props (not listed in the response): - Style: "paramId.fontSize": "64px", "paramId.color": "#FF0000", etc. - Animation timing (video renders): "paramId.showAt", "paramId.hideAt", "paramId.enterType"/"enterDuration"/"enterEasing"/"enterReverse", "paramId.exitType"/"exitDuration"/"exitEasing"/"exitReverse" - Video elements: "paramId.trimStart", "paramId.trimEnd", "paramId.muted", "paramId.loop" Audio is NOT a modification — swap a template's soundtrack via videoOptions.audioSource on orshot_generate_image. - element: The element details (type, current default content, parameterId) Also returns "modifications_json" — a flat key→defaultValue map you can use as a starting point and override specific keys.
Create a new studio template with an initial design structure. 📖 Read the **orshot://template-design-spec** resource first — it has the element structure, text rules, the verified animation schema, canvas sizes, and the common render gotchas (this tool also returns ⚠️ "Design checks" warnings for those gotchas so you can fix them in the polish update). 🎨 For design quality, read the **orshot://design-spec/general** resource (the craft layer: hierarchy, 2-font typography, 60-30-10 color, brand-first, variety, anti-slop) — then the matching vertical pack, e.g. **orshot://design-pack/social-media** (formats, safe areas, archetypes, a concrete recipe). For recognised verticals this tool returns a "🎨 Design check" (layout-repetition, font/contrast, plus an informational brand-kit note) to resolve in your polish update. Brand assets are CONTEXTUAL — apply them only when the design should be on-brand (the prompt references the user's brand/product); a generic/standalone look needs no brand assets. IMPORTANT: Keep the initial design simple — create the template with basic layout and core elements (canvas, background, key text/image placeholders). Then use orshot_update_template_design in follow-up calls to refine styling, add decorative elements, and polish the design. This incremental approach produces much better results than trying to build a perfect template in a single call. Thumbnails are generated automatically in the background after creation — you do NOT need to render the template manually to preview it. They appear on the template (visible via orshot_get_studio_template) within a few seconds per page. Recommended workflow: 1. orshot_get_brand_kit — fetch brand assets first (images, colors, fonts) filtered by relevant tags 2. orshot_create_template_design — create template using brand assets: - Use brand colors for backgrounds, text colors, accents - Use brand fonts (font name without extension) for fontFamily in text elements - Use brand images (direct_url) for logos, backgrounds, product shots - Use brand videos (direct_url) for video elements 3. orshot_update_template_design — refine and add more elements, styling, decorative SVGs, etc. 4. orshot_update_template_design — further polish if needed ### Brand Asset Tag Matching When building templates, match brand assets by their tags to use the most relevant ones: - Tags like "logo", "icon" → use for logo placements - Tags like "background", "hero" → use for background images - Tags like "primary", "accent" → use for key color choices - Tags like "heading", "display" → use for title fonts - Tags like "body", "regular" → use for body text fonts IMPORTANT Element Format: - Position: use nested object { x: number, y: number } - Dimensions: use nested object { width: number, height: number } - Style values: use STRINGS with units, e.g. fontSize: "40px", fontWeight: "700" Common canvas sizes: - Square: 1080×1080 (Instagram post) - Story: 1080×1920 (Instagram/TikTok story) - Slide: 1920×1080 (Presentations) - YouTube Thumbnail: 1280×720 - OG Image: 1200×630 - Twitter Header: 1500×500 ## Design Guidelines ### Canvas Properties Each page has a canvas object: { width, height, backgroundColor, backgroundImage, borderWidth, borderColor, borderStyle } - backgroundColor: Hex color or gradient, e.g. "#ffffff", "linear-gradient(180deg, #000 0%, #333 100%)" - backgroundImage: URL for a background image - borderWidth: Number in pixels (0 for no border) - borderColor: Color string, e.g. "rgba(0, 0, 0, 1)" - borderStyle: "solid" | "dashed" | "dotted" ### Element Structure Each element in pages_data[].elements[] needs: - id: Unique string identifier (use UUID) - type: "text" | "image" | "shape" | "element" | "video" - position: { x: number, y: number } — position from top-left in pixels - dimensions: { width: number, height: number } — size in pixels - style: Object with CSS-like properties (values as STRINGS with units) - zIndex: Number for layer ordering (higher = on…
Update an existing studio template's design structure. Use this after orshot_create_template_design to add elements and build the design. You can also use this to update an existing template's design by fetching its current state with orshot_get_studio_template first, then sending modified pages_data. Thumbnails are regenerated automatically in the background whenever pages_data, canvas_width, or canvas_height change. Pure metadata updates (name, description, tags) do not trigger re-rendering. You do NOT need to render the template manually to refresh the preview. ## Using Brand Assets Before updating, fetch relevant brand assets with orshot_get_brand_kit (filtered by tags matching your design purpose): - Brand colors → use their `value` field for style.color, style.fill, canvas.backgroundColor - Brand fonts → use the font `name` (without .ttf/.otf extension) as style.fontFamily. Custom workspace fonts take priority over Google Fonts. - Brand images → use their `direct_url` as element content for image elements - Brand videos → use their `direct_url` as element content for video elements ## Design Guidelines ### Canvas Properties Each page has a canvas object: { width, height, backgroundColor, backgroundImage, borderWidth, borderColor, borderStyle } - backgroundColor: Hex color or gradient, e.g. "#ffffff", "linear-gradient(180deg, #000 0%, #333 100%)" - backgroundImage: URL for a background image - borderWidth: Number in pixels (0 for no border) - borderColor: Color string, e.g. "rgba(0, 0, 0, 1)" - borderStyle: "solid" | "dashed" | "dotted" ### Element Structure Each element in pages_data[].elements[] needs: - id: Unique string identifier (use UUID) - type: "text" | "image" | "shape" | "element" | "video" - position: { x: number, y: number } — position from top-left in pixels - dimensions: { width: number, height: number } — size in pixels - style: Object with CSS-like properties (values as STRINGS with units) - zIndex: Number for layer ordering (higher = on top) - For dynamic elements: parameterizable: true, parameterId: "snake_case_id", parameterType: "text" | "imageUrl" | "videoUrl" ### Common Element Properties (all types) - rotation: Number in degrees (0-360) - opacity: 0-1 (element-level opacity) - name: Optional display name for the layer - aspectRatioLocked: boolean (lock aspect ratio on resize) - clipPath: CSS clip-path value for masking, e.g. "polygon(...)", "circle(...)", "inset(...)" - style.opacity: 0-1 - style.mixBlendMode: "normal" | "multiply" | "screen" | "overlay" | "darken" | "lighten" | "color-dodge" | "color-burn" | "hard-light" | "soft-light" | "difference" | "exclusion" | "hue" | "saturation" | "color" | "luminosity" | "plus-lighter" - style.filter: CSS filter string, e.g. "blur(5px)", "grayscale(100%)", "brightness(1.2)" - style.dropShadowX: "0px" — drop shadow horizontal offset (separate from box shadow; applies as CSS filter) - style.dropShadowY: "0px" — drop shadow vertical offset - style.dropShadowBlur: "0px" — drop shadow blur radius - style.dropShadowColor: "rgba(0,0,0,0.2)" — drop shadow color ### Text Elements (type: "text") - content: Plain text string OR styled HTML for mixed formatting - Plain: "Hello World" - Styled (rich text): '<p><span style="color: red; font-weight: bold;">Bold Red</span> Normal</p>' - Multi-font styled text: '<p><span style="font-family: Playfair Display; font-size: 48px;">Elegant</span> <span style="font-family: Inter; font-size: 24px;">meets modern</span></p>' - Allowed tags: <b>, <strong>, <i>, <em>, <u>, <s>, <span>, <p>, <br> - Allowed CSS in style attr: color, font-family, font-size, font-weight, font-style, text-decoration, background-color, background-image, background-clip, letter-spacing, line-height, text-transform, padding - font-family in spans: Use any Google Font name (e.g. "Inter", "Prata", "DM Sans", "Playfair Display", "Montserrat", "Roboto"). The renderer auto-loads fonts from Google Fonts CDN. - Use styled HTML when different w…
Update individual element values in a saved template without re-sending the entire pages_data. Use this to change text content, swap images, update colors, or modify style properties on specific elements by their parameterId. Much faster and safer than orshot_update_template_design for targeted changes. Supports dot notation: "headline.fontSize" (style), "headline.x" / "headline.width" (position and size), "photo.crop" (object), "photo.alt". Use orshot_get_studio_template_modifications first to see available parameter keys. Examples: Single element: { data: [{ page: 1, modifications: { "headline": "New Title" } }] } Multiple: { data: [{ page: 1, modifications: { "headline": "Title", "hero_image": "https://..." } }] } Style update: { data: [{ page: 1, modifications: { "headline.fontSize": "64px", "headline.color": "#FF0000" } }] } Move/resize: { data: [{ page: 1, modifications: { "headline.x": 64, "headline.y": 120, "headline.width": 800 } }] } Crop an image: { data: [{ page: 1, modifications: { "photo.crop": { "x": 10, "y": 10, "width": 60, "height": 60 } } }] } Multi-page: { data: [{ page: 1, modifications: { "title": "Page 1" } }, { page: 2, modifications: { "title": "Page 2" } }] } WHAT LANDS (max 50 mods/request): content (text, image/video URLs incl. data: URIs), style props, position (x, y) and size (width, height), crop objects, and .alt. A "pageN@key" prefix inside an item retargets that key to page N. ⚠️ NOT patchable — these are render-time only and come back in the response's "skipped" array, so nothing is stored: - Animation/transition keys ("photo6.showAt", hideAt/enterType/...) and video dynamics (.trimStart/.muted/.loop). For SAVED timing use orshot_update_template_design (full pages_data); for ONE render pass them as modifications on orshot_generate_image ("photo6.showAt": 2.1 works there). - AI prompt keys (.prompt/.promptMode/.promptReferences), .href and .contentType. - Page-level props (canvas, audioTracks, subtitle). The response separates outcomes: "applied" landed, "failed" needs you to change something (each entry says why), "skipped" is informational.
Permanently delete a studio template. This action cannot be undone.
Create a copy of an existing studio template.
Get a studio template's public sharing state — whether it's shared, the public link, the embed page + ready-to-paste iframe code, whether visitors can duplicate it, and view/copy stats. Use orshot_update_template_sharing to change any of it.
Turn public sharing of a studio template on or off, and control whether visitors can duplicate it. Returns the public link, embed page and iframe embed code. Fields you omit keep their current value. The link is minted once and stays stable — turning sharing off and on again revives the same link. allowDuplication needs a paid plan.
Generate an image, PDF, or video from a studio template. Supports rendering to multiple formats with optional quality, scale, page selection, and video options. For multi-page templates, use includePages to select specific pages (e.g. [1, 3]). For PDF output, use pdfDpi to control print quality (default 72, use 300 for print). For video/GIF output, use videoOptions to control duration, fps, and trimming — plus soundtrack (audioSource swaps/adds page audio tracks; use brand audio URLs), burned-in subtitles (subtitleSource auto-transcribes any voiceover URL via Whisper, or takes .srt/.vtt; style with the subtitle* keys, karaoke via subtitleMode "word-by-word"), global muting, and multi-page stitching (combinePages + pageTransition). LONG RENDERS: video/subtitle renders can take 60-90s. This server streams progress to keep the request alive; if your client times out anyway, the render still completes server-side (credits are used) — recover the output URL via orshot_list_workspace_logs instead of re-rendering. For guaranteed-no-timeout operation (or several long renders in a row), pass background: true — the tool returns immediately and you collect the output from the logs. SMART RESIZE (one design → any size): the design is deterministically re-laid-out to fit a new canvas. - Use `size` to render the design at a DIFFERENT size (e.g. size: "instagram-story" or "1080x1080" or { width, height }). - Use `extraSizes` to ADD extra sized copies in the SAME call (e.g. extraSizes: ["instagram-story","1080x1080","1200x630"]) — the response nests an "extraSizes" array of { name, size, width, height, url } beside each page. Perfect when a user asks for one design across multiple social formats. RESPONSE SHAPE (so you surface the right links to the user): - Single-page: `data.data` is one object → `data.data.content` is the main output URL; `data.data.extraSizes` (if requested) is an array of variants, each `{ name, size, width, height, content }` where `content` is that variant's URL. - Multi-page: `data.data` is an array (one per page); each page has its own `content` and `extraSizes`. This tool also prepends a ready-to-share summary of every output + variant URL, so present those links to the user; a per-variant `error` means that one size failed (the others still succeeded). Optionally publish the rendered output to connected social accounts by including the "publish" parameter. IMPORTANT: Only include the "publish" parameter when the user explicitly asks to publish or post to social media. Never auto-publish. Use orshot_list_social_accounts first to get the account IDs needed for publish.accounts.
Render the same studio template multiple times with different modifications in a single call. Use this for bulk image generation — e.g. personalized certificates, product cards, social posts for a list of items. Each item in the `renders` array is a set of modifications (same format as orshot_generate_image). All renders share the same template, format, and options. Smart Resize works here too: `size` (render every item at a different canvas size) and `extraSizes` (add sized copies beside each item) apply to ALL renders in the batch. Use orshot_get_studio_template_modifications first to see available parameter keys. Example: Generate 3 personalized certificates: templateId: "12345" renders: [ { "name": "Alice", "course": "Design 101" }, { "name": "Bob", "course": "Design 101" }, { "name": "Charlie", "course": "Design 201" } ]
Generate an image from a pre-built Orshot library template. Use orshot_list_library_templates to see available templates and orshot_get_library_template_modifications to see what parameters each accepts. Common templates: - website-screenshot: Capture a webpage (modifications: { websiteUrl, fullCapture?, delay?, width?, height? }) - tweet-image: Screenshot a tweet (modifications: { tweetUrl }) - beautify-screenshot: Add padding/shadow to a screenshot (modifications: { screenshotImage }) - open-graph-image-1: OG image for blog posts (modifications: { title, description }) - image-background-removal-api: Remove image background (modifications: { inputImage }) - dynamic-image-resizer: Resize/crop an image (modifications: { imageUrl, width?, height?, resizeType? })
List all available pre-built library templates (website-screenshot, tweet-image, OG images, mockups, etc.).
Get the available modification parameters for a specific library template. Use this to discover what fields you can customize (e.g. websiteUrl for website-screenshot, tweetUrl for tweet-image).
List brand asset images in the workspace. Use tag filtering to find assets for specific purposes (e.g. "logo", "background", "product"). Tags use AND logic — all specified tags must match. Returns up to 100 images, newest first.
Upload an image to brand assets. Accepts a public URL, base64 string, or binary. Supported: PNG, JPEG, WebP, SVG, GIF. Max 8MB, auto-resized to 2000×2000 max (SVGs kept as-is). Use tags to categorize for easy retrieval when building templates (e.g. ["logo", "brand"], ["background", "dark"]).
Replace tags on a brand asset image. Pass empty array to clear all tags.
Permanently delete a brand asset image.
List saved brand colors in the workspace. Supports hex, rgb, hsl, and gradient types. Use tag filtering to find colors for specific purposes (e.g. "primary", "background", "accent"). Tags use AND logic. Returns up to 200 colors.
Save a brand color. Supports hex (#FF5733, #RRGGBBAA), rgb, hsl, and CSS gradients. Use tags to categorize (e.g. ["primary", "brand"], ["background", "dark"]). Max 200 colors per workspace.
Replace tags on a saved brand color. Pass empty array to clear all tags.
Permanently delete a saved brand color.
List custom fonts uploaded to the workspace. Use tag filtering to find fonts for specific purposes (e.g. "heading", "body", "brand"). Tags use AND logic. Returns up to 100 fonts. When creating templates, use the font's `name` field (without extension) as the fontFamily in element styles. Custom fonts take priority over Google Fonts.
Upload a custom font to the workspace. Accepts URL, base64, or binary. Supported: TTF, OTF, WOFF, WOFF2. Max 10MB. Use tags to categorize (e.g. ["heading", "brand"], ["body", "regular"]).
Replace tags on a custom font. Pass empty array to clear all tags.
Permanently delete a custom font. Templates using this font will fall back to the default font.
List brand videos in the workspace. Use tag filtering to find videos for specific purposes (e.g. "intro", "background", "product"). Tags use AND logic. Returns up to 100 videos with metadata (width, height, duration, format).
Upload a video to brand assets. Accepts URL, base64, or binary. Supported: MP4, WebM, MOV, AVI, MKV, FLV, WMV, M4V, GIF. Max 60MB. Use tags to categorize (e.g. ["intro", "brand"], ["background", "loop"]).
Replace tags on a brand video. Pass empty array to clear all tags.
Permanently delete a brand video.
List audio files in the workspace's brand library. Use tag filtering to find tracks for specific purposes (e.g. "music", "voiceover", "sfx"). Tags use AND logic. Returns up to 100 audio files with metadata (duration, format, file size). Use a track's direct_url as the audio source on video template pages.
Upload an audio file to the brand library. Accepts URL or base64. Supported: MP3, WAV, M4A, AAC, OGG, Opus, FLAC, WebM, AIFF, WMA. Max 50MB. Use tags to categorize (e.g. ["music", "upbeat"], ["voiceover"]). Pass metadata.duration (seconds) when known — URL/base64 uploads cannot probe it automatically.
Replace tags on a brand audio file. Pass empty array to clear all tags.
Permanently delete a brand audio file.
Fetch all brand assets at once — images, colors, fonts, videos, and audio. Optionally filter each type by tags. This is the recommended starting point when creating branded templates. Use tag filtering to get only relevant assets for your design task. Example workflow: 1. orshot_get_brand_kit with tags matching your design purpose (e.g. "social-media") 2. Use returned brand colors for backgrounds, text colors 3. Use returned brand fonts for text elements (set fontFamily to the font name without extension) 4. Use returned brand images for logos, backgrounds, product shots 5. Use returned brand videos for video elements 6. Use returned brand audio for background music / voiceover on video templates
List all connected social media accounts in the active workspace. Returns each account's id (numeric), platform, account_name, account_username, and account_avatar. Use the numeric id values in the "publish.accounts" array of orshot_generate_image to post renders directly to social media. Supported platforms: Twitter/X, Instagram, LinkedIn, Pinterest, Facebook, TikTok, YouTube, Threads, Bluesky, Reddit, Telegram, Snapchat, Google Business.
List render/API logs for the active workspace, newest first. Each entry is a trimmed summary: status, source, template, output format, render time, credits used, and the OUTPUT URL (main render; extra-size variants noted). Results are paginated with an opaque cursor — pass the returned next_cursor as "cursor" to fetch the next (older) page. Also the RECOVERY path for renders whose tool call timed out client-side: a completed render's output URL is here even when the render response never made it back — filter by template_id and/or format: "mp4" and take the newest entry instead of re-rendering (which would double-spend credits). Useful for reviewing recent render activity, debugging failed renders (filter status: "error"), or auditing credit usage over a date range.
Given a studio template, returns the 2-3 ready-made automations that fit it best (matched on the template's content, shape, and which integrations the workspace already has connected). Each suggestion comes back DRAFT-READY: its `steps` already have this template wired into the render step — pass them straight to orshot_create_workflow (status 'draft') and share the returned edit link. Call this right after rendering or designing a template to pitch a specific automation instead of a generic one.
Discover the building blocks for workflow automations — every trigger, source, render, and destination node, with its config schema and whether the current plan can use it. Call this before building a workflow. Pass `key` to get one node's full config schema.
List the third-party integrations (Google Sheets, Drive, Airtable, Shopify, HubSpot, Slack, Dropbox, S3, WordPress) this workspace has connected, with the account each is connected as. Use before building a workflow to know which sources/destinations are wired (never returns tokens).
Resolve the concrete IDs a workflow source needs from a connected integration, and preview its columns. This is how you turn 'use my ABC spreadsheet' into a real { spreadsheetId, sheetTab }: list the workspace's spreadsheets/Drive folders/Airtable bases+tables, then sample a source's fields. Call with no args for the provider/resource catalog. Always confirm the resolved name back to the user before creating a workflow.
Dry-run a set of workflow steps WITHOUT saving — returns whether it's valid, runnable, plus any errors (blocking) and warnings (incomplete: missing config, no destination, no trigger). Use this to iterate on steps before orshot_create_workflow.
List the workspace's workflow automations, newest first. Optionally filter by status.
Get a workflow's full definition — status, trigger, and its ordered steps (with config).
Create a workflow automation. Provide ordered steps (trigger → render → destination) built from orshot_list_workflow_nodes; validate first with orshot_validate_workflow. Defaults to 'draft'. Set status:'active' only when it's complete and runnable — an incomplete workflow can't be activated. Returns the created workflow plus any warnings.
Update a workflow — rename, edit its steps, or change status (draft/active/paused/archived). Send only the fields you want to change. Activating requires the workflow to be complete and runnable.
Manually trigger a workflow run now (in addition to its normal trigger). Returns the queued run id; use orshot_get_workflow_run to watch it. The workflow must be complete/runnable.
List a workflow's recent runs with their status and timing.
Get one run's detail including per-node results — which step ran, its status, output, and any error. Use this to debug why a workflow run failed.
Get (or create) the inbound webhook URL for a webhook-triggered workflow — the URL to POST events to from your own app or a tool like Zapier/Make, plus its signing secret. Only relevant for workflows whose trigger is a webhook.
Get a workflow's public sharing state — whether it's shared, the public link and embed page, and whether its template is included when someone copies it. Use orshot_update_workflow_sharing to change any of it.
Turn public sharing of a workflow on or off. Sharing publishes it to a public page anyone can view and copy into their own workspace. Fields you omit keep their current value. The link is minted once and stays stable — turning sharing off and on again revives the same link.
Delete a workflow. This stops any future runs. Ask the user to confirm before deleting.
Mint (or update) a public, signed render URL for a studio template and return it ready to use. Use this when you need a STABLE, reusable, cacheable image link — OG/social images, email images, docs/dashboard embeds — rather than a one-off render (orshot_generate_image). The returned URL renders the template on the fly; pass modification values as query params to produce variants from the same URL. Control access with `active`, `maxRenders`, `validTill`, and `cacheForSeconds`. Calling again for the same template updates only the fields you pass (partial update) and keeps the signature.
Return the dynamic URL configuration (signed URL, active state, limits, expiry, view count) for a template, or a not-found error if none is configured.
Rotate the signature for a template's dynamic URL. Every previously shared URL for this template stops working immediately — use it to revoke access. Returns the new signed URL.
Delete the dynamic URL for a template. The public URL stops working. Does not affect the template itself.
List the studio template folders in the active workspace, in the same order the dashboard sidebar shows them. Start here before creating a folder (names are unique per workspace) or before moving templates, since orshot_move_template_to_folder needs a folder id.
Create a studio template folder in the active workspace. PAID PLANS ONLY — a Free workspace gets a plan refusal that should be reported to the user, not retried. Names are unique per workspace and capped at 50 characters. Creating a folder does not move anything into it: follow up with orshot_move_template_to_folder for each template.
Rename an existing template folder. The templates inside are untouched. Same name rules as creation: 1-50 characters, unique within the workspace.
Delete a template folder. The folder itself is gone for good, but NO templates are deleted — every template inside returns to 'All templates' unfiled. Confirm with the user before calling this, since the grouping cannot be restored (re-filing each template is manual).
File a studio template into a folder, or pull it out of whatever folder it is in. Pass folderId to file it; pass folderId: null to unfile it back to 'All templates'. A template lives in at most one folder, so moving it into a new folder removes it from the old one. The folder must belong to the active workspace.
Overview
What is Orshot?
Orshot is a creative automation platform. Design a template once, then generate on-brand images, PDFs and videos from it at scale.
This is the official remote MCP server. Nothing to install, no build step, no API key to paste. Point any MCP client at the hosted endpoint and authorise over OAuth.
How to connect
{
"mcpServers": {
"orshot": {
"url": "https://mcp.orshot.com/mcp"
}
}
}
On first use your client prompts you to authorise. Access is scoped to a single Orshot workspace, so your templates and brand kit stay isolated to your account.
Works in Claude, Cursor, VS Code, Codex, Windsurf, ChatGPT, Cline, LM Studio, Zed, Goose and Antigravity.
What the agent can do
60+ tools, grouped by job:
- Templates - list, read, create from a brief, update, patch individual elements, duplicate, delete, share
- Folders - create, rename, delete, and file templates into them
- Rendering - PNG, JPG, WebP, AVIF, PDF, MP4, WebM and GIF; batch render many rows in one call; Smart Resize one design into every social format
- Dynamic URLs - mint signed, cacheable render links for OG images, email and embeds
- Brand assets - images, colours, fonts, videos and audio, with tag filtering so renders stay on brand
- Workflows - discover nodes, validate, create, run and inspect automations that render on a trigger or a schedule
- Publishing - post a finished render straight to a connected social account
Every tool carries a read-only or destructive annotation, so a client can tell at a glance what will change your workspace.
Use cases
- Render a launch OG image from a headline, as a signed URL a page can hot-link
- Turn every row of a spreadsheet into a finished ad creative or carousel
- Generate certificates, invoices, tickets and reports as PDFs
- Produce a video ad from a template and publish it without leaving the chat
- Keep an agency's client assets on brand, one workspace per client
Learn more
Frequently asked questions
What is the Orshot remote MCP server?
The Orshot remote MCP server is a hosted Model Context Protocol endpoint at https://mcp.orshot.com/mcp, so AI assistants can connect to it without installing or running anything locally.
How do I connect to the Orshot MCP server?
Add the endpoint https://mcp.orshot.com/mcp to any MCP-compatible client such as Claude Code, Cursor, or VS Code. The setup snippets on this page configure each client in one step.
Does the Orshot MCP server require authentication?
Yes. Orshot uses OAuth: the first time you connect, your MCP client opens a browser window to sign in and authorize access, then reuses the credentials for future sessions.
Which transport does the Orshot MCP server use?
Orshot exposes a stdio endpoint, the transport used by remote MCP servers and supported by all major MCP clients.
Basic information
More remote MCP servers
AdisInsight
Pharmaceutical drug & clinical trial intelligence
Apollo.io
Contacts, companies, sales engagement
Agentic Atlas
Consult field-tested agent-system design patterns through 8 hosted, read-only tools for orientation, deep reading, relationships, provenance, glossary terms, and publication decisions.
Agency AI MCP
Agency AI MCP - Create, launch, automate and manage Meta and Google ads from Claude and ChatGPT. Pull live campaign performance, ROAS, pacing and anomalies, get budget and creative strategy, then create ads, edit campaig
Adobe Marketing Agent
Marketing campaign and audience insights from Adobe
Comments