API & MCP Server
Two ways to automate InstallMage: a REST API for RMM tools and scripts, and an MCP server for AI agents. Both run on the same conversion engine and require an InstallMage Pro or MSP API key, created from Settings → API. See the changelog for what shipped most recently.
REST API
Submit a job, then poll for its status. Every request is authenticated with Authorization: Bearer im_....
Convert an EXE
curl -X POST https://ipvtmyjcocqggwtvkkog.supabase.co/functions/v1/api-convert \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@installer.exe" \
-F "create_intunewin=true" \
-F "callback_url=https://your-app.example.com/hooks/installmage"
# → { "jobId": "...", "status": "pending" }callback_url is optional and must be https://. When set, InstallMage POSTs { jobId, status, filenameOriginal, filenameConverted, errorLog } to it once the job finishes — it's a "done" ping, not a download link (the downloads bucket is private), so fetch the signed URL via api-status after you receive it.
Check job status
curl https://ipvtmyjcocqggwtvkkog.supabase.co/functions/v1/api-status?jobId=JOB_ID \
-H "Authorization: Bearer YOUR_API_KEY"
# → { "jobId": "...", "status": "completed", "progress": 100, "downloadUrl": "..." }status is one of pending, processing, completed, or failed. A 429 means either the request rate limit or your monthly conversion quota was hit; a 403 means the key isn't on a Pro or MSP subscription. Installers must be .exe files under 500MB.
Convert a batch (up to 5 EXEs)
curl -X POST https://ipvtmyjcocqggwtvkkog.supabase.co/functions/v1/api-convert-batch \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@installer1.exe" \
-F "file=@installer2.exe" \
-F "create_intunewin=true"
# → { "results": [
# { "filename": "installer1.exe", "jobId": "...", "status": "pending" },
# { "filename": "installer2.exe", "jobId": "...", "status": "pending" }
# ], "message": "2/2 conversion(s) started..." }Repeat the file field for each installer (max 5 per request, matching the dashboard's bulk upload). create_intunewin and callback_url apply to every file in the batch. Per-file failures (wrong extension, too large) don't fail the whole batch — check each entry's error field in the response, and poll api-status per jobId as usual.
MCP Server
A Model Context Protocol server (Streamable HTTP transport) at https://installmage.com/mcp — point any MCP-compatible client (Claude, a custom RMM copilot, etc.) at it to give the agent direct access to InstallMage.
Client config
{
"mcpServers": {
"installmage": {
"url": "https://installmage.com/mcp"
}
}
}Tools
convert_exe— submit an installer (as a public URL) plus your API key for conversion; returns ajobId.check_conversion_status— poll a job started withconvert_exefor progress and the download link.search_blog/get_blog_post— search InstallMage's packaging & deployment guides.silent_install_switches— silent-install command lines by installer framework (MSI, Inno Setup, NSIS, InstallShield, WiX, Advanced Installer, Squirrel).explain_exit_code— meaning and fix for an msiexec / Intune Win32 app exit code.
convert_exe and check_conversion_status need an apiKey argument (same Pro API key as the REST API above) — the other four tools are read-only and don't require one.