{
"schema_version": "1.0",
"name": "PrivateTools Universal Converter",
"description": "Convert image, audio, and video files locally in an open browser tab.",
"endpoint": "/convert/agents/",
"compatibility_endpoint": "/tools/convert/agents/",
"shared_human_and_agent_endpoint": "/tools/convert/",
"execution": {
"environment": "browser",
"processing": "local_only",
"uploads_to_server": false,
"browsing_context_required": true
},
"transports": [
{
"type": "webmcp",
"discovery": "document.modelContext.getTools()",
"tools": [
"inspect_converter",
"load_file",
"configure_converter",
"convert_selected_files",
"download_converted_files",
"clear_converter"
]
},
{
"type": "window_api",
"discovery": "window.privateTools.converter",
"methods": [
"loadFile(File | { name, mime_type?, data: Blob | ArrayBuffer | typed array | base64 })",
"inspect()",
"configure(options)",
"convert()",
"download(optionalFileNames)",
"clear({ confirm: true })"
]
},
{
"type": "browser_dom",
"file_input_selector": "[data-agent-input=\"converter-files\"]",
"action_selector": "[data-agent-action]",
"result_selector": "[data-agent-action=\"download-result\"]"
}
],
"workflow": [
"Call load_file with base64, or call window.privateTools.converter.loadFile with a File, Blob, ArrayBuffer, typed array, or base64. The DOM file input remains an optional browser-automation fallback.",
"Call inspect to read the detected media type, supported output formats, and current state.",
"Call configure with only the settings that should change.",
"Call convert and wait for its structured result.",
"Call download with optional exact output file names."
],
"constraints": {
"webmcp_base64_max_decoded_bytes": 67108864,
"one_media_type_per_batch": true,
"image_batch_limit": 50,
"audio_batch_limit": 20,
"video_batch_limit": 8
}
}Loading local workspace…