{
  "service": "fly",
  "displayName": "Fly.io",
  "categories": [
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Fly API Token",
      "placeholder": "Fly API token",
      "description": "Fly.io API token sent as a Bearer token to the Machines API. Generate a token with flyctl as described in the official Machines API guide: https://fly.io/docs/machines/api/working-with-machines-api/",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://fly.io/",
  "actions": [
    {
      "id": "fly.create_machine",
      "service": "fly",
      "name": "create_machine",
      "description": "Create a Fly Machine in an app using a JSON Machine configuration.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "config": {
            "type": "object",
            "properties": {
              "image": {
                "type": "string",
                "minLength": 1,
                "description": "The Docker image to run in the Machine."
              }
            },
            "additionalProperties": true,
            "description": "The Fly Machine configuration object. Include the documented image field when creating a Machine, and pass additional Fly Machine config fields as needed."
          },
          "lease_ttl": {
            "type": "integer",
            "description": "Seconds to acquire a lease on the newly created Machine."
          },
          "lsvd": {
            "type": "boolean",
            "description": "Whether to enable Log Structured Virtual Disks for this Machine."
          },
          "min_secrets_version": {
            "type": "integer",
            "description": "Minimum secrets version required for the Machine."
          },
          "name": {
            "type": "string",
            "description": "Unique name for this Machine. Fly generates one when omitted."
          },
          "region": {
            "type": "string",
            "description": "Target Fly region. Fly chooses a nearby region when omitted."
          },
          "skip_launch": {
            "type": "boolean",
            "description": "Whether to create the Machine without booting it."
          },
          "skip_secrets": {
            "type": "boolean",
            "description": "Whether to skip applying app secrets to the Machine."
          },
          "skip_service_registration": {
            "type": "boolean",
            "description": "Whether to leave the Machine disconnected from request routing."
          }
        },
        "additionalProperties": false,
        "required": [
          "app_name",
          "config"
        ],
        "description": "Input parameters for creating a Fly Machine."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "checks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "The check name."
                },
                "output": {
                  "type": "string",
                  "description": "The latest check output."
                },
                "status": {
                  "type": "string",
                  "description": "The latest check status."
                },
                "updated_at": {
                  "type": "string",
                  "description": "When Fly last updated this check status."
                }
              },
              "additionalProperties": true,
              "description": "A Machine check status entry."
            },
            "description": "Check statuses for this Machine."
          },
          "config": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The Fly Machine configuration object returned by the Machines API."
          },
          "created_at": {
            "type": "string",
            "description": "When this Machine was created."
          },
          "events": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The event identifier."
                },
                "request": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Request details for this event."
                },
                "source": {
                  "type": "string",
                  "description": "The event source."
                },
                "status": {
                  "type": "string",
                  "description": "The event status."
                },
                "timestamp": {
                  "type": "integer",
                  "description": "The event timestamp."
                },
                "type": {
                  "type": "string",
                  "description": "The event type."
                }
              },
              "additionalProperties": true,
              "description": "A Machine event returned by Fly."
            },
            "description": "Events for this Machine."
          },
          "host_status": {
            "type": "string",
            "description": "The Machine host status."
          },
          "id": {
            "type": "string",
            "description": "The Machine ID."
          },
          "image_ref": {
            "type": "object",
            "properties": {
              "digest": {
                "type": "string",
                "description": "The image digest."
              },
              "labels": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "description": "A label value."
                },
                "description": "Image labels keyed by label name."
              },
              "registry": {
                "type": "string",
                "description": "The image registry."
              },
              "repository": {
                "type": "string",
                "description": "The image repository."
              },
              "tag": {
                "type": "string",
                "description": "The image tag."
              }
            },
            "additionalProperties": true,
            "description": "The resolved image reference for a Machine."
          },
          "incomplete_config": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The Fly Machine configuration object returned by the Machines API."
          },
          "instance_id": {
            "type": "string",
            "description": "The version-specific Machine instance ID."
          },
          "name": {
            "type": "string",
            "description": "The Machine name."
          },
          "nonce": {
            "type": "string",
            "description": "The lease nonce when the Machine is currently leased."
          },
          "private_ip": {
            "type": "string",
            "description": "The Machine private 6PN IPv6 address."
          },
          "region": {
            "type": "string",
            "description": "The Fly region where the Machine resides."
          },
          "state": {
            "type": "string",
            "description": "The current Machine state."
          },
          "updated_at": {
            "type": "string",
            "description": "When this Machine was last updated."
          }
        },
        "additionalProperties": true,
        "description": "A Fly Machine returned by the Machines API."
      }
    },
    {
      "id": "fly.get_app",
      "service": "fly",
      "name": "get_app",
      "description": "Retrieve details for a Fly App by name.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for retrieving a Fly App."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The app identifier."
          },
          "internal_numeric_id": {
            "type": "integer",
            "description": "The internal numeric app identifier."
          },
          "machine_count": {
            "type": "integer",
            "description": "The number of Machines in the app."
          },
          "name": {
            "type": "string",
            "description": "The app name."
          },
          "network": {
            "type": "string",
            "description": "The private network name associated with the app."
          },
          "organization": {
            "type": "object",
            "properties": {
              "internal_numeric_id": {
                "type": "integer",
                "description": "The internal numeric organization identifier."
              },
              "name": {
                "type": "string",
                "description": "The organization display name."
              },
              "slug": {
                "type": "string",
                "description": "The organization slug."
              }
            },
            "additionalProperties": true,
            "description": "Fly organization information for an app."
          },
          "status": {
            "type": "string",
            "description": "The app status."
          },
          "volume_count": {
            "type": "integer",
            "description": "The number of volumes in the app."
          }
        },
        "additionalProperties": true,
        "description": "Fly App details returned by the Machines API."
      }
    },
    {
      "id": "fly.get_machine",
      "service": "fly",
      "name": "get_machine",
      "description": "Retrieve a Fly Machine by app and Machine ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "machine_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly Machine ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for selecting a Fly Machine by app and Machine ID."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "checks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string",
                  "description": "The check name."
                },
                "output": {
                  "type": "string",
                  "description": "The latest check output."
                },
                "status": {
                  "type": "string",
                  "description": "The latest check status."
                },
                "updated_at": {
                  "type": "string",
                  "description": "When Fly last updated this check status."
                }
              },
              "additionalProperties": true,
              "description": "A Machine check status entry."
            },
            "description": "Check statuses for this Machine."
          },
          "config": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The Fly Machine configuration object returned by the Machines API."
          },
          "created_at": {
            "type": "string",
            "description": "When this Machine was created."
          },
          "events": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The event identifier."
                },
                "request": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Request details for this event."
                },
                "source": {
                  "type": "string",
                  "description": "The event source."
                },
                "status": {
                  "type": "string",
                  "description": "The event status."
                },
                "timestamp": {
                  "type": "integer",
                  "description": "The event timestamp."
                },
                "type": {
                  "type": "string",
                  "description": "The event type."
                }
              },
              "additionalProperties": true,
              "description": "A Machine event returned by Fly."
            },
            "description": "Events for this Machine."
          },
          "host_status": {
            "type": "string",
            "description": "The Machine host status."
          },
          "id": {
            "type": "string",
            "description": "The Machine ID."
          },
          "image_ref": {
            "type": "object",
            "properties": {
              "digest": {
                "type": "string",
                "description": "The image digest."
              },
              "labels": {
                "type": "object",
                "additionalProperties": {
                  "type": "string",
                  "description": "A label value."
                },
                "description": "Image labels keyed by label name."
              },
              "registry": {
                "type": "string",
                "description": "The image registry."
              },
              "repository": {
                "type": "string",
                "description": "The image repository."
              },
              "tag": {
                "type": "string",
                "description": "The image tag."
              }
            },
            "additionalProperties": true,
            "description": "The resolved image reference for a Machine."
          },
          "incomplete_config": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The Fly Machine configuration object returned by the Machines API."
          },
          "instance_id": {
            "type": "string",
            "description": "The version-specific Machine instance ID."
          },
          "name": {
            "type": "string",
            "description": "The Machine name."
          },
          "nonce": {
            "type": "string",
            "description": "The lease nonce when the Machine is currently leased."
          },
          "private_ip": {
            "type": "string",
            "description": "The Machine private 6PN IPv6 address."
          },
          "region": {
            "type": "string",
            "description": "The Fly region where the Machine resides."
          },
          "state": {
            "type": "string",
            "description": "The current Machine state."
          },
          "updated_at": {
            "type": "string",
            "description": "When this Machine was last updated."
          }
        },
        "additionalProperties": true,
        "description": "A Fly Machine returned by the Machines API."
      }
    },
    {
      "id": "fly.list_apps",
      "service": "fly",
      "name": "list_apps",
      "description": "List Fly Apps for an organization through the Machines API.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "org_slug": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly organization slug, or personal, to filter apps."
          },
          "app_role": {
            "type": "string",
            "description": "Optional app role filter."
          }
        },
        "additionalProperties": false,
        "required": [
          "org_slug"
        ],
        "description": "Input parameters for listing Fly Apps."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "apps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The app identifier."
                },
                "internal_numeric_id": {
                  "type": "integer",
                  "description": "The internal numeric app identifier."
                },
                "machine_count": {
                  "type": "integer",
                  "description": "The number of Machines in the app."
                },
                "name": {
                  "type": "string",
                  "description": "The app name."
                },
                "network": {
                  "type": "string",
                  "description": "The private network name associated with the app."
                },
                "organization": {
                  "type": "object",
                  "properties": {
                    "internal_numeric_id": {
                      "type": "integer",
                      "description": "The internal numeric organization identifier."
                    },
                    "name": {
                      "type": "string",
                      "description": "The organization display name."
                    },
                    "slug": {
                      "type": "string",
                      "description": "The organization slug."
                    }
                  },
                  "additionalProperties": true,
                  "description": "Fly organization information for an app."
                },
                "status": {
                  "type": "string",
                  "description": "The app status."
                },
                "volume_count": {
                  "type": "integer",
                  "description": "The number of volumes in the app."
                }
              },
              "additionalProperties": true,
              "description": "Fly App details returned by the Machines API."
            },
            "description": "Fly Apps matching the request."
          },
          "total_apps": {
            "type": "integer",
            "description": "The total number of apps returned by Fly."
          }
        },
        "additionalProperties": true,
        "description": "Apps returned by the Fly Machines API."
      }
    },
    {
      "id": "fly.list_machines",
      "service": "fly",
      "name": "list_machines",
      "description": "List Fly Machines in an app with optional state, region, and summary filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "include_deleted": {
            "type": "boolean",
            "description": "Whether to include deleted Machines."
          },
          "region": {
            "type": "string",
            "description": "Optional Fly region filter."
          },
          "state": {
            "type": "string",
            "description": "Comma-separated Machine states to filter, such as created, started, stopped, or suspended."
          },
          "summary": {
            "type": "boolean",
            "description": "Whether to omit large Machine details such as config, checks, and events."
          }
        },
        "additionalProperties": false,
        "required": [
          "app_name"
        ],
        "description": "Input parameters for listing Fly Machines in an app."
      },
      "outputSchema": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "checks": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The check name."
                  },
                  "output": {
                    "type": "string",
                    "description": "The latest check output."
                  },
                  "status": {
                    "type": "string",
                    "description": "The latest check status."
                  },
                  "updated_at": {
                    "type": "string",
                    "description": "When Fly last updated this check status."
                  }
                },
                "additionalProperties": true,
                "description": "A Machine check status entry."
              },
              "description": "Check statuses for this Machine."
            },
            "config": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The Fly Machine configuration object returned by the Machines API."
            },
            "created_at": {
              "type": "string",
              "description": "When this Machine was created."
            },
            "events": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "description": "The event identifier."
                  },
                  "request": {
                    "type": "object",
                    "properties": {},
                    "additionalProperties": true,
                    "description": "Request details for this event."
                  },
                  "source": {
                    "type": "string",
                    "description": "The event source."
                  },
                  "status": {
                    "type": "string",
                    "description": "The event status."
                  },
                  "timestamp": {
                    "type": "integer",
                    "description": "The event timestamp."
                  },
                  "type": {
                    "type": "string",
                    "description": "The event type."
                  }
                },
                "additionalProperties": true,
                "description": "A Machine event returned by Fly."
              },
              "description": "Events for this Machine."
            },
            "host_status": {
              "type": "string",
              "description": "The Machine host status."
            },
            "id": {
              "type": "string",
              "description": "The Machine ID."
            },
            "image_ref": {
              "type": "object",
              "properties": {
                "digest": {
                  "type": "string",
                  "description": "The image digest."
                },
                "labels": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string",
                    "description": "A label value."
                  },
                  "description": "Image labels keyed by label name."
                },
                "registry": {
                  "type": "string",
                  "description": "The image registry."
                },
                "repository": {
                  "type": "string",
                  "description": "The image repository."
                },
                "tag": {
                  "type": "string",
                  "description": "The image tag."
                }
              },
              "additionalProperties": true,
              "description": "The resolved image reference for a Machine."
            },
            "incomplete_config": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The Fly Machine configuration object returned by the Machines API."
            },
            "instance_id": {
              "type": "string",
              "description": "The version-specific Machine instance ID."
            },
            "name": {
              "type": "string",
              "description": "The Machine name."
            },
            "nonce": {
              "type": "string",
              "description": "The lease nonce when the Machine is currently leased."
            },
            "private_ip": {
              "type": "string",
              "description": "The Machine private 6PN IPv6 address."
            },
            "region": {
              "type": "string",
              "description": "The Fly region where the Machine resides."
            },
            "state": {
              "type": "string",
              "description": "The current Machine state."
            },
            "updated_at": {
              "type": "string",
              "description": "When this Machine was last updated."
            }
          },
          "additionalProperties": true,
          "description": "A Fly Machine returned by the Machines API."
        },
        "description": "Machines returned for the requested Fly App."
      }
    },
    {
      "id": "fly.restart_machine",
      "service": "fly",
      "name": "restart_machine",
      "description": "Restart a Fly Machine, optionally with a Unix signal and timeout.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "machine_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly Machine ID."
          },
          "signal": {
            "type": "string",
            "enum": [
              "SIGHUP",
              "SIGINT",
              "SIGQUIT",
              "SIGKILL",
              "SIGUSR1",
              "SIGUSR2",
              "SIGTERM"
            ],
            "description": "Unix signal to use for the restart."
          },
          "timeout": {
            "type": "string",
            "description": "Restart timeout as a Go duration string or number of seconds."
          }
        },
        "additionalProperties": false,
        "required": [
          "app_name",
          "machine_id"
        ],
        "description": "Input parameters for restarting a Fly Machine."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true,
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Acknowledgement for a successful Fly lifecycle request."
      }
    },
    {
      "id": "fly.start_machine",
      "service": "fly",
      "name": "start_machine",
      "description": "Start a Fly Machine.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "machine_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly Machine ID."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for selecting a Fly Machine by app and Machine ID."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true,
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Acknowledgement for a successful Fly lifecycle request."
      }
    },
    {
      "id": "fly.stop_machine",
      "service": "fly",
      "name": "stop_machine",
      "description": "Stop a Fly Machine, optionally with a Unix signal and timeout.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "machine_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly Machine ID."
          },
          "signal": {
            "type": "string",
            "enum": [
              "SIGHUP",
              "SIGINT",
              "SIGQUIT",
              "SIGKILL",
              "SIGUSR1",
              "SIGUSR2",
              "SIGTERM"
            ],
            "description": "Unix signal to send when stopping the Machine."
          },
          "timeout": {
            "type": "string",
            "description": "Stop timeout as a Go duration string, such as 1s."
          }
        },
        "additionalProperties": false,
        "required": [
          "app_name",
          "machine_id"
        ],
        "description": "Input parameters for stopping a Fly Machine."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ok": {
            "const": true,
            "type": "boolean"
          }
        },
        "additionalProperties": false,
        "description": "Acknowledgement for a successful Fly lifecycle request."
      }
    },
    {
      "id": "fly.wait_for_machine",
      "service": "fly",
      "name": "wait_for_machine",
      "description": "Wait for a Fly Machine to reach a desired state.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "app_name": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly App name."
          },
          "machine_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Fly Machine ID."
          },
          "from_event_id": {
            "type": "string",
            "description": "Machine event ID to start waiting after."
          },
          "state": {
            "type": "string",
            "enum": [
              "started",
              "stopped",
              "suspended",
              "destroyed",
              "failed",
              "settled"
            ],
            "description": "Desired Machine state to wait for."
          },
          "timeout": {
            "type": "integer",
            "description": "Maximum wait time in seconds. Fly defaults to 60 seconds."
          },
          "version": {
            "type": "string",
            "description": "Machine version ID to wait for."
          }
        },
        "additionalProperties": false,
        "required": [
          "app_name",
          "machine_id"
        ],
        "description": "Input parameters for waiting until a Fly Machine reaches a state."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "string",
            "description": "The event ID observed by the wait request."
          },
          "ok": {
            "type": "boolean",
            "description": "Whether the Machine reached the desired state."
          },
          "state": {
            "type": "string",
            "description": "The Machine state observed by Fly."
          },
          "version": {
            "type": "string",
            "description": "The Machine version observed by Fly."
          }
        },
        "additionalProperties": true,
        "description": "Result returned after waiting for a Fly Machine state."
      }
    }
  ]
}
