{"openapi":"3.1.0","info":{"title":"CloudCompare API","version":"0.1.0","description":"Brand-neutral storage-plan sizing: inventory-based storage calculator with growth projection, a media size estimator, and an organization reference — all local.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://cloudcompare.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/cloudcompare/docs"},"termsOfService":"https://connectorbay.com/cloudcompare/terms"},"servers":[{"url":"https://cloudcompare.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/cloudcompare/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/storage_plan":{"post":{"operationId":"storage_plan","summary":"Total storage needed for a described file inventory, with a percentage breakdown by category, and an","description":"Total storage needed for a described file inventory, with a percentage breakdown by category, and an\n    optional real compound-growth projection N months out. Use for \"how much storage do I need for 5000 photos\n    and 200 videos\", \"how much storage will I need in a year at 5% monthly growth\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"photos_count":{"default":0,"description":"Number of photos.","minimum":0,"title":"Photos Count","type":"integer"},"photos_avg_mb":{"default":0.0,"description":"Average photo size in MB.","minimum":0,"title":"Photos Avg Mb","type":"number"},"videos_count":{"default":0,"description":"Number of videos.","minimum":0,"title":"Videos Count","type":"integer"},"videos_avg_mb":{"default":0.0,"description":"Average video size in MB.","minimum":0,"title":"Videos Avg Mb","type":"number"},"documents_count":{"default":0,"description":"Number of documents.","minimum":0,"title":"Documents Count","type":"integer"},"documents_avg_mb":{"default":0.0,"description":"Average document size in MB.","minimum":0,"title":"Documents Avg Mb","type":"number"},"other_gb":{"default":0.0,"description":"Any other storage already used, in GB.","minimum":0,"title":"Other Gb","type":"number"},"monthly_growth_pct":{"default":0.0,"description":"Expected month-over-month growth rate, as a percent (e.g. 5 for 5%). Give with months_ahead to project.","minimum":0,"title":"Monthly Growth Pct","type":"number"},"months_ahead":{"default":0,"description":"How many months ahead to project, if projecting growth.","maximum":240,"minimum":0,"title":"Months Ahead","type":"integer"}},"title":"storage_planArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/estimate_media_size":{"post":{"operationId":"estimate_media_size","summary":"A rough per-item storage estimate for a photo (megapixels x format) or a video (resolution/quality x","description":"A rough per-item storage estimate for a photo (megapixels x format) or a video (resolution/quality x\n    duration, real bitrate formula). Use for \"how big is a 4K video at 10 minutes\", \"how big is a 24MP RAW photo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"kind":{"description":"photo | video","title":"Kind","type":"string"},"megapixels":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"photo: camera resolution in megapixels.","title":"Megapixels"},"photo_format":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"photo: jpeg | heic | png | raw","title":"Photo Format"},"resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"video: 480p | 720p | 1080p | 1440p | 4k | 8k","title":"Resolution"},"duration_sec":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"video: length in seconds.","title":"Duration Sec"},"quality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"low | medium | high","title":"Quality"},"custom_bitrate_mbps":{"anyOf":[{"exclusiveMinimum":0,"type":"number"},{"type":"null"}],"default":null,"description":"video: override the table with your own bitrate in Mbps.","title":"Custom Bitrate Mbps"}},"required":["kind"],"title":"estimate_media_sizeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/file_organization_reference":{"post":{"operationId":"file_organization_reference","summary":"Folder-organization strategies with real pros and cons, and deduplication concepts (exact hash,","description":"Folder-organization strategies with real pros and cons, and deduplication concepts (exact hash,\n    perceptual hash, filename heuristics). Use for \"how should I organize my photo library\", \"how do I find\n    duplicate photos\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"strategy":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"by_date | by_project_or_person | by_type | hybrid. Omit for all strategies.","title":"Strategy"}},"title":"file_organization_referenceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}