{"openapi":"3.1.0","info":{"title":"LetsCloud MCP Server","description":"Remote Model Context Protocol server + REST API for managing LetsCloud cloud infrastructure. Authenticate every request with your LetsCloud API key via 'Authorization: Bearer <api-key>'.","contact":{"name":"LetsCloud","url":"https://www.letscloud.io/"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"version":"2.0.0"},"paths":{"/info":{"get":{"tags":["Info"],"summary":"Service information (JSON)","operationId":"info_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Info Info Get"}}}}}}},"/health":{"get":{"tags":["Info"],"summary":"Health check","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/api/v1/account":{"get":{"tags":["LetsCloud"],"summary":"Get account profile","operationId":"account_api_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Account Api V1 Account Get"}}}}}}},"/api/v1/locations":{"get":{"tags":["LetsCloud"],"summary":"List locations","operationId":"locations_api_v1_locations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Locations Api V1 Locations Get"}}}}}}},"/api/v1/locations/{slug}/plans":{"get":{"tags":["LetsCloud"],"summary":"List plans at a location","operationId":"plans_api_v1_locations__slug__plans_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Plans Api V1 Locations  Slug  Plans Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locations/{slug}/images":{"get":{"tags":["LetsCloud"],"summary":"List images at a location","operationId":"images_api_v1_locations__slug__images_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Images Api V1 Locations  Slug  Images Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ssh-keys":{"get":{"tags":["LetsCloud"],"summary":"List SSH keys","operationId":"list_ssh_keys_api_v1_ssh_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Ssh Keys Api V1 Ssh Keys Get"}}}}}},"post":{"tags":["LetsCloud"],"summary":"Create an SSH key","operationId":"create_ssh_key_api_v1_ssh_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SSHKeyCreateBody"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Ssh Key Api V1 Ssh Keys Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ssh-keys/{title}":{"get":{"tags":["LetsCloud"],"summary":"Get an SSH key by title","operationId":"get_ssh_key_api_v1_ssh_keys__title__get","parameters":[{"name":"title","in":"path","required":true,"schema":{"type":"string","title":"Title"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Ssh Key Api V1 Ssh Keys  Title  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/ssh-keys/{slug}":{"delete":{"tags":["LetsCloud"],"summary":"Delete an SSH key by slug","operationId":"delete_ssh_key_api_v1_ssh_keys__slug__delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances":{"get":{"tags":["LetsCloud"],"summary":"List instances","operationId":"list_instances_api_v1_instances_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Instances Api V1 Instances Get"}}}}}},"post":{"tags":["LetsCloud"],"summary":"Create an instance","operationId":"create_instance_api_v1_instances_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InstanceCreateBody"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Instance Api V1 Instances Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}":{"get":{"tags":["LetsCloud"],"summary":"Get an instance","operationId":"get_instance_api_v1_instances__identifier__get","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Instance Api V1 Instances  Identifier  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["LetsCloud"],"summary":"Delete an instance","operationId":"delete_instance_api_v1_instances__identifier__delete","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}/power-on":{"put":{"tags":["LetsCloud"],"summary":"Power on an instance","operationId":"power_on_api_v1_instances__identifier__power_on_put","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}/power-off":{"put":{"tags":["LetsCloud"],"summary":"Power off an instance","operationId":"power_off_api_v1_instances__identifier__power_off_put","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}/reboot":{"put":{"tags":["LetsCloud"],"summary":"Reboot an instance","operationId":"reboot_api_v1_instances__identifier__reboot_put","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}/reset-password":{"put":{"tags":["LetsCloud"],"summary":"Reset root password","operationId":"reset_password_api_v1_instances__identifier__reset_password_put","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/snapshots":{"get":{"tags":["LetsCloud"],"summary":"List snapshots","operationId":"list_snapshots_api_v1_snapshots_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response List Snapshots Api V1 Snapshots Get"}}}}}}},"/api/v1/snapshots/{slug}":{"get":{"tags":["LetsCloud"],"summary":"Get a snapshot","operationId":"get_snapshot_api_v1_snapshots__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Snapshot Api V1 Snapshots  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["LetsCloud"],"summary":"Update a snapshot label","operationId":"update_snapshot_api_v1_snapshots__slug__put","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotUpdateBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["LetsCloud"],"summary":"Delete a snapshot","operationId":"delete_snapshot_api_v1_snapshots__slug__delete","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/_OK"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/instances/{identifier}/snapshots":{"post":{"tags":["LetsCloud"],"summary":"Create a snapshot of an instance","operationId":"create_snapshot_api_v1_instances__identifier__snapshots_post","parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotCreateBody"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Snapshot Api V1 Instances  Identifier  Snapshots Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InstanceCreateBody":{"properties":{"location_slug":{"type":"string","title":"Location Slug"},"plan_slug":{"type":"string","title":"Plan Slug"},"hostname":{"type":"string","title":"Hostname"},"label":{"type":"string","title":"Label"},"image_slug":{"type":"string","title":"Image Slug"},"ssh_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ssh Slug"},"password":{"anyOf":[{"type":"string","minLength":8},{"type":"null"}],"title":"Password"}},"type":"object","required":["location_slug","plan_slug","hostname","label","image_slug"],"title":"InstanceCreateBody"},"ResetPasswordBody":{"properties":{"new_password":{"type":"string","minLength":8,"title":"New Password"}},"type":"object","required":["new_password"],"title":"ResetPasswordBody"},"SSHKeyCreateBody":{"properties":{"title":{"type":"string","minLength":1,"title":"Title"},"key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key","description":"Existing public key (optional)"}},"type":"object","required":["title"],"title":"SSHKeyCreateBody"},"SnapshotCreateBody":{"properties":{"label":{"type":"string","minLength":1,"title":"Label"}},"type":"object","required":["label"],"title":"SnapshotCreateBody"},"SnapshotUpdateBody":{"properties":{"label":{"type":"string","minLength":1,"title":"Label"}},"type":"object","required":["label"],"title":"SnapshotUpdateBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"_OK":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"_OK"}}}}