Cursor
Add the Windpaint plugin or MCP server to Cursor to generate images and video from the agent.
The Windpaint plugin for Cursor adds five skills and the hosted MCP server. Cursor’s agent can then generate media, run products, and write code against the Windpaint API.
Prerequisites
- Cursor with agent mode.
- A Windpaint API key from Settings → API Keys in the dashboard. See API keys.
Install the plugin
Install Windpaint from the plugin marketplace
Open Cursor’s plugin marketplace, search for Windpaint, and install it. The plugin’s source is the public repo windpaint-ai/skills.
Set your key
In the plugin’s configuration, set WINDPAINT_API_KEY to your aak_... key. The bundled MCP server sends it as Authorization: Bearer ....
Check the connection
Open Cursor Settings → MCP. windpaint should be enabled with 20 tools listed. Then ask the agent “What’s my Windpaint credit balance?”. It calls get_balance and answers.
MCP server only
To add just the tools, put this in .cursor/mcp.json in your project, or ~/.cursor/mcp.json for every project:
{
"mcpServers": {
"windpaint": {
"url": "https://mcp.windpaint.ai/mcp",
"headers": {
"Authorization": "Bearer ${env:WINDPAINT_API_KEY}"
}
}
}
}
${env:WINDPAINT_API_KEY} is read from the environment Cursor was launched from, so the key stays out of the file. Export it in your shell profile and start Cursor from a terminal (cursor .), or replace the reference with the key itself in the global file only. Add "X-Windpaint-Project": "my-project" under headers to pin a project.
To get the skills too without the plugin, run npx skills add windpaint-ai/skills in the project. Cursor’s agent also reads AGENTS.md, which points it at the right skill for each task.
Try it
Animate assets/hero.png into a 5 second clip with a slow dolly-in. Estimate first.
What happens:
- The agent loads the
windpaintandwindpaint-videoskills and callslist_capabilitiesto find a livevideo.generatemodel, which needs a start frame. - It uploads
assets/hero.pngwithupload_asset. The MCP server can’t read your disk, so the agent reads the file and sends it asdata_base64. - It calls
estimate_costwith the asset id instart_frame, reports the credits and your balance, and waits for your go-ahead. - It submits with
generate(wait=false), then callswait_for_jobuntil the clip is done, which takes a few minutes. - It calls
download_asset, which returns a 15-minute signed URL, saves the MP4 withcurl, and reports the path and the credits charged.