{"name":"CloudPilot","description":"Manage Odoo hosting on CloudPilot: servers, Odoo instances, logs, backups and notifications. Send a message with a data part {\"skill\": \"<skill id>\", \"arguments\": {...}} and a CloudPilot API key as a bearer token; the reply is a Task with the CloudPilot API response as a JSON artifact.","version":"1.0.0","supportedInterfaces":[{"url":"https://mcp.cloudpilot.app/a2a","protocolBinding":"JSONRPC","protocolVersion":"1.0"}],"provider":{"organization":"CloudPilot","url":"https://cloudpilot.app"},"documentationUrl":"https://cloudpilot.app/docs/mcp","iconUrl":"https://cloudpilot.app/assets/brand/cloudpilot-mark-192.png","capabilities":{"streaming":false,"pushNotifications":false,"extendedAgentCard":false},"securitySchemes":{"apiKey":{"httpAuthSecurityScheme":{"scheme":"bearer","description":"A CloudPilot API key (nck_...), created under Settings -> API keys at https://my.cloudpilot.app. See https://cloudpilot.app/auth.md"}}},"securityRequirements":[{"schemes":{"apiKey":{"list":[]}}}],"defaultInputModes":["application/json","text/plain"],"defaultOutputModes":["application/json"],"skills":[{"id":"get_me","name":"Current user and account","description":"The user the API key belongs to and the account it acts in: email, account, role, plan and usage. Arguments (JSON Schema): {}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_me\",\"arguments\":{}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_servers","name":"List servers","description":"All servers in the account, with type, region, size, Odoo version, OS, number of instances and status. Arguments (JSON Schema): {}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_servers\",\"arguments\":{}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_server","name":"Server details","description":"One server: type, region, size, IP address, Odoo version, status and enabled features. Arguments (JSON Schema): {\"serverId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Server ID (from list_servers)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_server\",\"arguments\":{\"serverId\":\"<serverId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_server_stats","name":"Server resource usage","description":"Current CPU, load, memory, disk and database connection usage of a server. Arguments (JSON Schema): {\"serverId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Server ID (from list_servers)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_server_stats\",\"arguments\":{\"serverId\":\"<serverId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_instances","name":"List Odoo instances","description":"All Odoo instances in the account, with their server, domain, edition and status. Arguments (JSON Schema): {}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_instances\",\"arguments\":{}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_instance","name":"Instance details","description":"One Odoo instance: server, domains, edition, workers and status. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_instance\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_instance_status","name":"Instance health","description":"Live state of an Odoo instance: whether Odoo is running, its memory and CPU use, uptime and database size. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_instance_status\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_instance_logs","name":"Instance logs","description":"The end of an Odoo instance log, newest lines last. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"},\"bytes\":{\"type\":\"integer\",\"minimum\":1000,\"maximum\":1048576,\"description\":\"How much of the end of the log to return, in bytes (default 20000).\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_instance_logs\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_instance_modules","name":"Instance Git modules","description":"Custom, OCA and third-party addon repositories deployed to an instance from Git. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_instance_modules\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_backups","name":"List backups","description":"Backups (manual and scheduled) with size, status, storage and notes, newest first. Optionally for one instance. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Only backups of this instance\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_backups\",\"arguments\":{}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_backup_schedules","name":"Backup schedules","description":"The backup schedules of an instance: cron schedule, retention in days and storage. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_backup_schedules\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list_notifications","name":"Notifications","description":"Recent account alerts such as an instance down, low disk or a failed backup. Arguments (JSON Schema): {\"unread\":{\"type\":\"boolean\",\"description\":\"Only unread notifications\"},\"limit\":{\"type\":\"integer\",\"minimum\":1,\"maximum\":100,\"description\":\"Default 50\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"list_notifications\",\"arguments\":{}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"get_operation","name":"Operation progress","description":"Progress of a long-running action: status (queued, running, succeeded, failed), progress percentage and error. Arguments (JSON Schema): {\"operationId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Operation ID returned by an action\"}}","tags":["odoo","hosting","read"],"examples":["{\"skill\":\"get_operation\",\"arguments\":{\"operationId\":\"<operationId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"create_backup","name":"Back up an instance now","description":"Start a manual backup of an Odoo instance (database and filestore). Returns an operationId; poll get_operation until its status is succeeded or failed. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","action"],"examples":["{\"skill\":\"create_backup\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"restart_instance","name":"Restart an instance","description":"Restart an Odoo instance. Users are briefly disconnected: confirm with the user first. Returns an operationId; poll get_operation until its status is succeeded or failed. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","action"],"examples":["{\"skill\":\"restart_instance\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"start_instance","name":"Start an instance","description":"Start a stopped Odoo instance. Returns an operationId; poll get_operation until its status is succeeded or failed. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","action"],"examples":["{\"skill\":\"start_instance\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"stop_instance","name":"Stop an instance","description":"Stop an Odoo instance. It is unavailable until started again: confirm with the user first. Returns an operationId; poll get_operation until its status is succeeded or failed. Arguments (JSON Schema): {\"instanceId\":{\"type\":\"string\",\"pattern\":\"^[A-Za-z0-9_-]{1,100}$\",\"description\":\"Odoo instance ID (from list_instances)\"}}","tags":["odoo","hosting","action"],"examples":["{\"skill\":\"stop_instance\",\"arguments\":{\"instanceId\":\"<instanceId>\"}}"],"inputModes":["application/json"],"outputModes":["application/json"]}]}