Generating Video, PDFs, and Images with the Warp MCP Server
Connect Warp to a media-rendering MCP server, generate template-based images, PDFs and videos, and troubleshoot credentials, transport and output issues.
Short answer: Warp supplies the agent environment and MCP connection. It does not define an image, PDF or video renderer by itself. To render media from templates, connect Warp to a provider such as Orshot, whose documented Warp integration uses the hosted endpoint https://mcp.orshot.com/mcp. Then ask the Warp agent to call that provider’s rendering tools.
Warp describes MCP as a way for an agent to access external data and services in Agent Mode. The rendering capability comes from the connected MCP service, not from MCP or Warp alone. See Warp’s MCP launch post and the Orshot Warp integration page.
What the architecture does
The workflow has four parts:
- Warp: the agent interface, available in the desktop app, standalone CLI and cloud agents.
- MCP transport: the protocol connection that exposes tools to the agent.
- Rendering provider: a hosted service such as Orshot that turns a template and data into an image, PDF or video.
- Output storage or download: the URL, file or job result returned by the provider.
Warp’s terminal image and video viewing support is a separate feature. Kitty image protocol support lets Warp display media; it does not generate media through an MCP server. Warp documented that viewing feature in Launch Log 2.
Before you connect a rendering server
- Have a Warp account and the current Warp app or Warp Agent CLI.
- Identify the provider’s current MCP endpoint, transport, authentication method, template format and output rules.
- Keep provider credentials out of prompts and source control.
- Decide whether the agent runs locally or in the cloud. Warp states that local and remote environment variables in an MCP configuration do not automatically sync to another machine.
- Confirm the provider’s current usage limits and credit policy before building a production workflow.
Connect an MCP server in Warp
Warp’s CLI reference documents four ways to supply an MCP server: a server UUID, a Warp-managed integration ID, inline JSON, or a JSON configuration file. The --mcp flag can be repeated, so configurations can be combined. The exact command name and flags can change; use the current Warp MCP CLI reference as the authority.
Option 1: use a provider-managed integration
If Warp or the provider offers a managed integration, select it in the current Warp interface or pass its managed integration identifier using the documented CLI syntax. Managed integrations are different from arbitrary remote URLs and may have contextual requirements. Warp’s examples for Linear, Slack and Jira show this distinction.
Option 2: pass inline JSON
Use the provider’s documented Streamable HTTP configuration. The following shape illustrates the connection details for the Orshot endpoint; confirm the current authentication fields with Orshot before running it.
{
"mcpServers": {
"orshot": {
"url": "https://mcp.orshot.com/mcp"
}
}
}
Pass that JSON with the current Warp CLI’s inline configuration form. Because CLI syntax is version-sensitive, copy the flag form from Warp’s reference rather than assuming an older oz agent run command.
Option 3: use a configuration file
Create a file such as warp-mcp.json:
{
"mcpServers": {
"orshot": {
"url": "https://mcp.orshot.com/mcp"
}
}
}
Supply the file path with the current Warp MCP flag. A file is easier to review, share within a team and extend with additional servers. Do not commit secrets; use the credential mechanism documented by the provider and your execution environment.
Local versus cloud agents
Warp says that Warp Drive, rules, skills and MCP servers can work across local and cloud agents, but environment variables used by a server configuration do not sync automatically to remote machines. Configure credentials separately wherever the agent actually runs. A connection that works in your local terminal can therefore fail in a cloud agent with an authentication error.
Generate an image from a template
Once the server is connected and its tools are visible, start with a prompt that identifies the template, data and desired output. Orshot’s page demonstrates template-driven use cases such as a weekly report PDF and a Shopify product graphic. Treat these as provider examples, not guaranteed commands.
Using the connected rendering MCP server, render the "weekly-report" template as a PDF for this data:
{
"week": "2026-W40",
"revenue": "$18,420",
"orders": 312,
"top_product": "Widget Pro"
}
Return the generated file or download URL.
For an image, specify the output dimensions only when the provider’s template contract supports them:
Render the "product-social" template as a PNG with:
{
"product_name": "Widget Pro",
"price": "$49",
"image_url": "https://example.com/widget-pro.jpg"
}
Return the final asset and report any missing template variables.
Generate a PDF
PDF generation usually depends on the provider’s template definition, page size, fonts and pagination rules. Ask the agent to validate required fields before rendering and to return a file or URL. Do not assume that a template designed for a social image will paginate correctly as a document.
Render the "invoice" template as a PDF for customer "Acme":
{
"invoice_number": "INV-1042",
"items": [
{"description": "Widget Pro", "quantity": 2, "unit_price": 49}
],
"currency": "USD"
}
Before rendering, list any required variables that are missing.
Generate a video
Video rendering is commonly asynchronous because the provider must assemble frames, audio and encoding output. Ask the server for a job result and preserve the returned job identifier or URL. The provider’s documentation must define whether media is returned inline, as a download URL or through a later status check.
Use the "launch-video" template with:
{
"headline": "Widget Pro",
"duration_seconds": 10,
"product_image": "https://example.com/widget-pro.jpg"
}
Create the video and return the job status, output URL and any errors.
How to make prompts reliable
- Name the exact template identifier.
- Send structured data, preferably as JSON.
- State the requested format (PNG, PDF or video) only if the provider supports it for that template.
- Ask the agent to validate missing variables before starting a paid render.
- Request the output URL, job ID and provider error message in the response.
- For batch work, have your application call the provider directly when its API supports it instead of creating hundreds of interactive agent turns.
Or skip the browser setup
If your task is a website screenshot rather than a template-rendered marketing asset, ScreenshotNeo gives you a single HTTP request. It removes cookie and consent banners, newsletter popups and chat widgets before capture. Bot checks, blank pages, failed loads and cache hits are not billed, and the response identifies the page verdict and billing result in headers. ScreenshotNeo also provides an MCP server with take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients.
See the ScreenshotNeo API documentation for the complete option list.
cURL
curl -G "https://api.screenshotneo.com/v1/shot" \
-d access_key=YOUR_API_KEY \
--data-urlencode url=https://stripe.com \
-o shot.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"},
timeout=90,
)
r.raise_for_status()
open("shot.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://stripe.com'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`Screenshot failed: ${res.status}`);
const data = Buffer.from(await res.arrayBuffer());
await import('node:fs/promises').then(fs => fs.writeFile('shot.webp', data));
ScreenshotNeo includes full-page capture with lazy images, CSS selector element capture, dark mode, device presets or custom viewports, retina scale, PDF options, custom CSS and JavaScript, clicks, waits, request blocking, headers, cookies, user agents, authorization, timezone, geolocation, transparency, resizing, selectable cache TTLs, signed links, asynchronous jobs with signed webhooks, bulk capture of up to 100 URLs per call, a usage API and an OpenAPI specification. Its parameter names are compatible with those used by other screenshot APIs, which helps when switching.
There is a free plan with 1,000 screenshots per month and no card. Paid plans start at $5 for 3,000 screenshots; every feature is available on every plan. Create a free ScreenshotNeo account.
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Warp shows no rendering tools | The MCP server was not loaded, the URL is wrong, or the provider requires authentication. | Inspect the active MCP configuration, verify the endpoint in the provider’s current documentation, restart the agent session and complete the provider’s auth flow. |
| Connection works locally but fails in cloud | Credentials or environment variables were not copied to the remote execution environment. | Configure secrets separately for the cloud agent, as Warp’s CLI reference warns that environment variables do not sync automatically. |
| HTTP or transport error during startup | The server expects a different transport, or an old Warp version uses different MCP flags. | Confirm whether the provider currently requires Streamable HTTP, update Warp, and follow the current CLI reference. |
| Template render reports missing fields | Input keys do not match the template schema. | Ask the server for required variables, compare names and types exactly, and send structured JSON. |
| PDF layout is clipped or paginated incorrectly | The template was designed for another format or the provider’s page settings differ. | Use a document-specific template and verify page size, margins, fonts and pagination in the provider documentation. |
| Video request appears stuck | Encoding is asynchronous and the initial response is a job rather than a file. | Save the job ID, poll using the provider’s documented method or wait for its callback, and handle failed jobs explicitly. |
| Output URL cannot be downloaded | The URL is temporary, private or expired. | Download it promptly, use the provider’s signed URL rules, or store the asset in your own durable storage. |
| Warp can display a file but cannot create it | Terminal media viewing is being confused with MCP rendering. | Connect a rendering MCP service; Kitty support only concerns display. |
Performance, reliability and cost
- Latency: image renders may be synchronous; PDFs and videos can require asynchronous jobs. Design callers to accept a job ID and retry status checks.
- Retries: retry transient connection and server errors with bounded exponential backoff. Do not blindly repeat a render if the provider might charge per job; use an idempotency mechanism when the provider documents one.
- Concurrency: respect provider rate limits and credit limits. Queue large batches and record template version, input data and output URL for reproducibility.
- Credentials: use environment or secret-manager injection, never prompt text or committed JSON files.
- Validation: validate URLs, required fields and output type before calling the server. For videos and PDFs, verify the returned content before publishing it.
- Warp version: Warp’s CLI documentation says the Oz binary is being deprecated in favor of the Warp Agent CLI and that Oz commands remain supported through the end of September 2026. Consult the current documentation before adopting legacy commands.
- Screenshot costs: ScreenshotNeo bills only clean shots; bot checks, blank pages, timeouts, failed loads and cache hits cost nothing. Choose a cache TTL and block unnecessary resources when using it at scale.
FAQ
Does Warp itself render images, PDFs or videos?
No. Warp provides the agent and MCP connectivity. A connected external service supplies the renderer.
Can I connect more than one MCP server?
Yes. Warp’s CLI reference says the MCP flag can be repeated, allowing configurations to be combined.
Is Orshot’s 30-credit offer guaranteed?
The accessible Orshot page advertises 30 free credits. Recheck the current offer, eligibility and expiry terms before relying on it.
Can I use ScreenshotNeo for template rendering?
ScreenshotNeo is for capturing web pages and PDFs through its API and MCP tools. Use a template-rendering provider when you need provider-managed media templates.
Where should I verify current Warp commands?
Use Warp’s MCP server CLI reference and current getting-started documentation; command names and the Oz transition are time-sensitive.


