{"name":"photoConvert MCP Server","description":"Agentic Photo & Video Converter with Browser Local Storage persistence","version":"1.0.0","protocol":"mcp-jsonrpc-2.0","rateLimiter":{"status":"active","limit":60,"remaining":59,"windowSeconds":60},"loadBalancer":{"status":"active","strategy":"least-connections","healthyNodes":3,"totalNodes":3,"totalRequestsProcessed":0,"nodes":[{"id":"mcp-node-core-01","name":"LOCAL RUNTIME (CORE WORKER)","role":"primary","status":"healthy","avgLatencyMs":12,"activeConnections":0},{"id":"mcp-node-edge-02","name":"CLIENT IN-MEMORY WORKER","role":"edge","status":"healthy","avgLatencyMs":18,"activeConnections":0},{"id":"mcp-node-stream-03","name":"MEDIASTREAM PIPELINE WORKER","role":"worker","status":"healthy","avgLatencyMs":25,"activeConnections":0}]},"toolsCount":30,"tools":[{"name":"convert_image","description":"Converts an image autonomously in real-time to modern formats (WebP, PNG, JPEG, AVIF) with optional resizing, compression, and grayscale. Supports zero-cloud in-memory conversion when imageBase64 is provided.","inputSchema":{"type":"object","properties":{"imageBase64":{"type":"string","description":"Base64-encoded image data or Data URI (e.g. data:image/png;base64,...). When provided, performs real-time in-memory conversion without any cloud storage."},"fileName":{"type":"string","description":"Optional file name of the original image (e.g., sample.png)"},"format":{"type":"string","enum":["webp","png","jpeg","avif","bmp"],"description":"Target image format"},"quality":{"type":"number","minimum":0.1,"maximum":1,"description":"Compression quality from 0.1 (smallest) to 1.0 (lossless)"},"maxWidth":{"type":"number","description":"Max width in pixels to downscale the image"},"maxHeight":{"type":"number","description":"Max height in pixels to downscale the image"},"applySketchFilter":{"type":"boolean","description":"Apply hand-drawn monochrome ink sketch filter matching site style"},"applyGrayscale":{"type":"boolean","description":"Convert to grayscale"},"rotate":{"type":"number","enum":[0,90,180,270],"description":"Rotate clockwise in degrees"}},"required":["format"]}},{"name":"convert_video","description":"Transcodes video to WebM in the browser or extracts poster frames or audio.","inputSchema":{"type":"object","properties":{"action":{"type":"string","enum":["webm","poster","audio-wav"],"description":"Action to perform: transcode to webm, grab poster frame, or extract wav audio"},"posterTime":{"type":"number","description":"Timestamp in seconds for poster frame capture (default: 0.5s)"},"posterFormat":{"type":"string","enum":["webp","jpeg","png"],"description":"Format for extracted poster frame"},"videoBitrate":{"type":"number","description":"Bitrate in bps (e.g., 2000000 for 2 Mbps)"},"videoScale":{"type":"number","enum":[1,0.75,0.5],"description":"Downscale resolution factor"},"mute":{"type":"boolean","description":"Strip audio track from output video"}},"required":["action"]}},{"name":"extract_poster_frame","description":"Captures a clean frame at any timestamp from a video file as WebP or JPEG.","inputSchema":{"type":"object","properties":{"timestamp":{"type":"number","description":"Seek second in video (e.g. 0.5, 1.0, 5.2)"},"format":{"type":"string","enum":["webp","jpeg","png"]},"quality":{"type":"number","minimum":0.1,"maximum":1}},"required":["timestamp"]}},{"name":"extract_audio","description":"Decodes video audio track and saves directly to MP3, WAV, AAC, M4A, FLAC, or OGG.","inputSchema":{"type":"object","properties":{"inputPath":{"type":"string","description":"Path to source video file on disk"},"outputFormat":{"type":"string","enum":["mp3","wav","aac","m4a","flac","ogg"],"default":"mp3","description":"Audio format output"},"bitrate":{"type":"string","default":"192k","description":"Audio bitrate for lossy formats"},"channels":{"type":"number","enum":[1,2],"default":2,"description":"Audio channels: 1 (mono) or 2 (stereo)"}}}},{"name":"convert_audio","description":"Converts standalone audio files between MP3, WAV, AAC, M4A, FLAC, and OGG.","inputSchema":{"type":"object","properties":{"inputPath":{"type":"string","description":"Path to audio file on disk"},"format":{"type":"string","enum":["mp3","wav","aac","m4a","flac","ogg"],"default":"mp3"},"bitrate":{"type":"string","default":"192k"},"sampleRate":{"type":"number"}},"required":["inputPath"]}},{"name":"convert_batch","description":"Batch converts entire folders or arrays of images on disk with zero repetitive prompts.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Folder path to scan and convert"},"format":{"type":"string","enum":["webp","png","jpeg","avif"],"default":"webp"},"quality":{"type":"number","default":82},"recursive":{"type":"boolean","default":false}}}},{"name":"get_media_info","description":"Unified metadata inspector for images, audio, and video files.","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"Path to image, audio, or video file"}},"required":["filePath"]}},{"name":"optimize_for_agent","description":"Optimizes high-resolution screenshots into compact WebP for LLM vision models.","inputSchema":{"type":"object","properties":{"inputPath":{"type":"string","description":"Path to image file"},"maxDimension":{"type":"number","default":1280}},"required":["inputPath"]}},{"name":"analyze_media","description":"Inspects a single image or SVG file for website performance bottlenecks, dimensions, format efficiency, and optimization potential.","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"Path to media file to analyze"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number","description":"Optional token budget"}},"required":["filePath"]}},{"name":"analyze_web_assets","description":"Deeply scans a project or directory for media bottlenecks, duplicates, and calculates the PhotoNow Performance Score.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Directory path to scan (defaults to project workspace)"},"recursive":{"type":"boolean","default":true},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number","default":1200}}}},{"name":"find_oversized_assets","description":"Finds media assets exceeding maximum web display dimensions or file size thresholds.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Directory to inspect"},"maxDimension":{"type":"number","default":1920},"maxSizeBytes":{"type":"number","default":512000},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"find_inefficient_formats","description":"Identifies photographic PNGs, legacy JPEGs, and animated GIFs that would benefit from WebP/AVIF.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Directory to inspect"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"find_duplicate_assets","description":"Finds exact and perceptual duplicates across project assets using local dHash and SHA-256.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Directory to inspect"},"similarityThreshold":{"type":"number","default":93.75},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"find_responsive_opportunities","description":"Identifies large single-resolution images that cause mobile bandwidth bloat without responsive variants.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Directory to inspect"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"test_web_performance","description":"Audits asset-centric website performance, measures media weights, identifies LCP candidate, and calculates PhotoNow Score.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Website URL (e.g. http://localhost:3000 or https://example.com)"},"localPath":{"type":"string","description":"Local project path or HTML directory"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"get_web_performance_summary","description":"Retrieves compact summary of the latest website performance audit with top actionable opportunities.","inputSchema":{"type":"object","properties":{"testId":{"type":"string","description":"Optional previous test ID"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"compare_web_performance","description":"Compares two website performance audit snapshots to quantify score changes and bandwidth reductions.","inputSchema":{"type":"object","properties":{"beforeTestId":{"type":"string","description":"Test ID before optimization"},"afterTestId":{"type":"string","description":"Test ID after optimization"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"generate_optimization_plan","description":"Generates a step-by-step optimization plan with planId, estimated savings, and non-destructive target paths.","inputSchema":{"type":"object","properties":{"directoryPath":{"type":"string","description":"Project directory to optimize"},"targetDir":{"type":"string","description":"Destination folder for optimized assets (default: .photonow/optimized)"},"format":{"type":"string","enum":["webp","avif"],"default":"webp"},"quality":{"type":"number","default":82},"maxDimension":{"type":"number","default":1920},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"optimize_web_assets","description":"Safely executes media optimizations from a plan with output validation, backup guards, and idempotency.","inputSchema":{"type":"object","properties":{"planId":{"type":"string","description":"Plan ID from generate_optimization_plan"},"directoryPath":{"type":"string","description":"Directory path if optimizing ad-hoc"},"overwriteSource":{"type":"boolean","default":false},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"verify_optimization","description":"Re-audits optimized media, validates decoding and dimensions, measures actual byte reductions, and generates local reports.","inputSchema":{"type":"object","properties":{"planId":{"type":"string","description":"Plan ID to verify"},"directoryPath":{"type":"string","description":"Directory path if ad-hoc"},"generateReport":{"type":"boolean","default":true},"reportFormat":{"type":"string","enum":["html","markdown","json"],"default":"html"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}}}},{"name":"inspect_project","description":"Scans project structure, identifies web framework (Next.js, Vite, Nuxt, Astro, Hugo), routes, components, and media directories.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath"]}},{"name":"get_asset_usage","description":"Cross-references where an asset is used in source code: routes, components, rendered dimensions, and LCP candidate status.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"assetPath":{"type":"string","description":"Path or file name of the asset to inspect"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath","assetPath"]}},{"name":"find_unused_assets","description":"Detects potentially unreferenced/dead assets with confidence ratings (SAFE, LIKELY, UNCERTAIN) without deleting them.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath"]}},{"name":"check_performance_budget","description":"Evaluates project assets or live URL against performance budgets (maxPageBytes, maxImageBytes, LCP budget), returning PASS, WARN, or FAIL.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"targetUrl":{"type":"string","description":"Optional live URL to evaluate"},"budget":{"type":"object","description":"Optional inline performance budget overrides"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath"]}},{"name":"verify_runtime_performance","description":"Measures observed browser runtime metrics (LCP, FCP, CLS, resource timing) on local or live URLs, separating OBSERVED from SIMULATED.","inputSchema":{"type":"object","properties":{"targetUrl":{"type":"string","description":"Target website URL (e.g. http://localhost:3000)"},"timeoutMs":{"type":"number","default":8000},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["targetUrl"]}},{"name":"generate_source_patch","description":"Generates unified diffs to update source code references (extension updates, responsive srcset/sizes) when assets are optimized.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"planId":{"type":"string","description":"Plan ID from generate_optimization_plan"},"dryRun":{"type":"boolean","default":true},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath","planId"]}},{"name":"apply_source_patch","description":"Safely applies generated source code patches with automated backups and rollback manifest recording.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"patch":{"type":"object","description":"Patch object from generate_source_patch"},"confirmApply":{"type":"boolean","description":"Must be explicitly set to true to apply code modifications"},"dryRun":{"type":"boolean","default":false},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath","patch","confirmApply"]}},{"name":"rollback_operation","description":"Restores original source files and media assets from an automated backup using its operationId manifest.","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"operationId":{"type":"string","description":"Operation ID to rollback (e.g. op_abc123)"},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath","operationId"]}},{"name":"optimize_project","description":"Autonomous high-level agent mission: executes the entire 10-step lifecycle (discover -> understand -> analyze -> measure -> diagnose -> plan -> patch -> optimize -> verify -> report).","inputSchema":{"type":"object","properties":{"projectPath":{"type":"string","description":"Project root directory path"},"mode":{"type":"string","enum":["safe","review","aggressive"],"default":"safe"},"dryRun":{"type":"boolean","default":false},"format":{"type":"string","enum":["webp","avif"],"default":"webp"},"maxDimension":{"type":"number","default":1920},"quality":{"type":"number","default":82},"applySourcePatches":{"type":"boolean","default":false},"detailLevel":{"type":"string","enum":["compact","standard","detailed","raw"],"default":"compact"},"tokenBudget":{"type":"number"}},"required":["projectPath"]}},{"name":"list_storage_conversions","description":"Lists all stored media files and conversions saved in the browser IndexedDB.","inputSchema":{"type":"object","properties":{"limit":{"type":"number","description":"Max number of items to return"},"mediaType":{"type":"string","enum":["all","image","video","audio"]}}}}]}