---
title: Portainer API Integration on Truto
slug: portainer
category: Application Development
canonical: "https://truto.one/integrations/detail/portainer/"
---

# Portainer API Integration on Truto



**Category:** Application Development  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 256 tools for Portainer that AI agents can call directly.

- **list_all_portainer_roles** — List all Portainer roles available for use. Returns an array of role objects including id, name, description, and priority.
- **list_all_portainer_kubernete_applications** — List Kubernetes applications across all namespaces in a Portainer environment. When nodeName is provided, returns only applications running on that node. Returns an array of application objects, each with an id and schema-specific attributes defined in the upstream K8sApplication schema. Required: kubernete_id, namespace, nodeName.
- **list_all_portainer_applications_counts** — Get the count of Kubernetes applications across all namespaces in a Portainer environment. Returns an integer count of applications, optionally filtered to a specific node when nodeName is supplied. Required: kubernete_id.
- **delete_a_portainer_cluster_role_bindings_delete_by_id** — Delete a list of cluster role bindings from a Portainer Kubernetes environment. Accepts an array of cluster role binding names to remove. Returns an empty 204 response on success. Required: kubernete_id (the environment identifier) and a JSON array of cluster role binding names in the request body.
- **delete_a_portainer_cluster_roles_delete_by_id** — Delete a list of Kubernetes cluster roles in a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id and a request body array of cluster role names.
- **list_all_portainer_kubernete_clusterrolebindings** — List Kubernetes cluster role bindings within a Portainer environment at the cluster level. Returns each binding's name and attributes. Required: kubernete_id.
- **list_all_portainer_kubernete_clusterroles** — List Kubernetes cluster roles within a Portainer environment at the cluster level. Returns an array of K8sClusterRole objects including id and attributes whose field-level shape is defined in the upstream OpenAPI schema. Required: kubernete_id.
- **list_all_portainer_kubernete_configmaps** — List ConfigMaps across all namespaces in a Portainer Kubernetes environment. Returns an array of K8sConfigMap objects; when isUsed is set to true, each item includes information about applications that use it. Required: kubernete_id, isUsed.
- **list_all_portainer_configmaps_counts** — Get the count of ConfigMaps across all namespaces in a Portainer Kubernetes environment. Returns an integer count of ConfigMaps; for non-admin users only ConfigMaps in accessible namespaces are counted. Required: kubernete_id.
- **list_all_portainer_kubernete_cron_jobs** — List Kubernetes Cron Jobs in a Portainer environment that the authenticated user has access to. Returns an array of Cron Job objects. Required: kubernete_id.
- **delete_a_portainer_cron_jobs_delete_by_id** — Delete Kubernetes Cron Jobs from a Portainer environment, grouped by namespace. Returns an empty 204 response on success. Required: kubernete_id and a request body mapping each namespace to an array of Cron Job names to delete.
- **list_all_portainer_kubernete_dashboards** — Get Kubernetes dashboard summary data for a Portainer environment, providing counts of commonly used Kubernetes resources. Returns an array of dashboard summary objects whose fields are defined by the upstream K8sDashboard schema (resource counts). Required: kubernete_id.
- **list_all_portainer_kubernete_describes** — Get a description of a Kubernetes resource in a Portainer environment. Returns the resource description with content-type-specific fields that vary by resource kind. Required: kubernete_id, name, kind.
- **list_all_portainer_kubernetes** — List Kubernetes events in a Portainer environment, optionally filtered by the resource id of a specific involved Kubernetes object. Returns Kubernetes event objects with an id and attributes whose fields are defined upstream in the kubernetes.K8sEvent schema. Required: kubernete_id.
- **list_all_portainer_kubernete_ingresscontrollers** — List Kubernetes ingress controllers for a Portainer environment, optionally filtering to only allowed controllers. Returns: attributes (ingress controller fields defined by the upstream kubernetes.K8sIngressController schema). Required: kubernete_id.
- **portainer_kubernete_ingresscontrollers_bulk_update** — Update (block/unblock) Kubernetes ingress controllers for a Portainer environment by submitting an array of ingress controller objects. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_ingresses** — List Kubernetes ingresses at the cluster level for a Portainer environment. Returns ingress records including id and attributes with fields defined in the upstream K8sIngressInfo schema. Required: kubernete_id.
- **list_all_portainer_ingresses_counts** — Get the count of Kubernetes ingresses within a specific Portainer environment. Returns an integer representing the total number of ingresses. Required: kubernete_id.
- **delete_a_portainer_ingresses_delete_by_id** — Delete one or more Kubernetes Ingresses in a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_jobs** — List Kubernetes Jobs in a Portainer environment that the authenticated user has access to. Optionally include jobs owned by cron jobs. Returns: id. Required: kubernete_id.
- **delete_a_portainer_jobs_delete_by_id** — Delete a list of Kubernetes Jobs in a Portainer environment by providing a namespace-to-jobs map. Returns an empty 204 response on success. Required: kubernete_id (environment identifier) and a request body mapping namespace names to arrays of Job names.
- **list_all_portainer_kubernete_max_resource_limits** — Get max CPU and memory limits (unused resources) for all nodes within a Kubernetes cluster in Portainer. Returns a map of per-node resource limits including CPU and memory capacity per node. Required: kubernete_id.
- **list_all_portainer_metrics_applications_resources** — List the total CPU (cores) and memory (bytes) requests and limits of all applications across all namespaces in a Portainer Kubernetes environment. Returns: CpuRequest, CpuLimit, MemoryRequest, MemoryLimit. Required: kubernete_id, node.
- **list_all_portainer_metrics_nodes** — List live metrics for all nodes in a Portainer Kubernetes environment. Returns the NodeMetricsList object whose field shape is defined by the Kubernetes v1beta1.NodeMetricsList schema referenced upstream. Required: kubernete_id.
- **get_single_portainer_metrics_node_by_id** — Get live metrics for a specific node by id in a Portainer Kubernetes environment. Returns: apiVersion, kind, metadata, timestamp, window, usage. Required: kubernete_id, id.
- **list_all_portainer_metrics_pods** — List pods with their live metrics in a Portainer Kubernetes environment namespace. Returns a v1beta1.PodMetricsList whose fields are defined by the upstream Kubernetes metrics API and are not expanded in the Portainer API documentation. Required: kubernete_id, namespace.
- **get_single_portainer_metrics_pod_by_id** — Get live metrics for a specific pod in a Portainer Kubernetes environment namespace. Returns a v1beta1.PodMetrics object whose fields are defined by the upstream Kubernetes metrics API and are not expanded in the Portainer API documentation. Required: kubernete_id, namespace, id.
- **list_all_portainer_kubernete_namespaces** — List all Kubernetes namespaces in a Portainer environment, scoped by the user's role and permissions. Returns: Name. Required: kubernete_id, withResourceQuota, withUnhealthyEvents.
- **create_a_portainer_kubernete_namespace** — Create a Kubernetes namespace in a Portainer environment. Returns: Name. Required: kubernete_id, Name.
- **update_a_portainer_kubernete_namespace_by_id** — Update a Kubernetes namespace in a Portainer environment. Returns: Name. Required: kubernete_id, id, Name.
- **portainer_kubernete_namespaces_list_events** — List Kubernetes events for a namespace in a Portainer environment, optionally filtered by resource id. Returns: id. Required: kubernete_id, namespace.
- **get_single_portainer_kubernete_namespace_by_id** — Get details of a Kubernetes namespace in a Portainer environment by id. Returns: id, attributes. Required: kubernete_id, id.
- **portainer_kubernete_namespaces_bulk_update** — Update Kubernetes namespaces within a Portainer environment. Returns: id, attributes. Required: kubernete_id.
- **portainer_kubernete_namespaces_bulk_delete** — Delete a Kubernetes namespace in a Portainer environment. Returns a success message string. Required: kubernete_id, namespace.
- **list_all_portainer_namespace_configmaps** — Get a ConfigMap by name within a specific namespace in a Portainer Kubernetes environment. Returns the full Kubernetes ConfigMap object including its name, namespace, and configuration data. Required: kubernete_id, namespace, configmap.
- **list_all_portainer_namespace_ingresscontrollers** — List ingress controllers for a Portainer Kubernetes environment in a specific namespace. Returns an array of ingress controller objects with attributes defined by the upstream K8sIngressController schema. Required: kubernete_id, namespace.
- **portainer_namespace_ingresscontrollers_bulk_update** — Update (block/unblock) Kubernetes ingress controllers by namespace for a Portainer environment. Accepts an array of ingress controller objects to update. Returns an empty 204 response on success. Required: kubernete_id, namespace.
- **list_all_portainer_namespace_ingresses** — List Kubernetes ingresses in a specific namespace within a Portainer environment. Returns: id, name. Required: kubernete_id, namespace.
- **create_a_portainer_namespace_ingress** — Create a Kubernetes ingress in a specific namespace within a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id, namespace.
- **get_single_portainer_namespace_ingress_by_id** — Get a single Kubernetes ingress by id in a specific namespace within a Portainer environment. Returns: id, name, namespace. Required: kubernete_id, namespace, id.
- **portainer_namespace_ingresses_bulk_update** — Update a Kubernetes ingress in a specific namespace within a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id, namespace.
- **list_all_portainer_namespace_persistent_volume_claims** — List Kubernetes PersistentVolumeClaims in a namespace within a Portainer environment. Returns PVC objects including name and attributes. Required: kubernete_id, namespace.
- **get_single_portainer_namespace_persistent_volume_claim_by_id** — Get a specific PersistentVolumeClaim by name within a Kubernetes namespace in a Portainer environment. Returns the PVC object including its id and attributes. Required: kubernete_id, namespace, id.
- **delete_a_portainer_namespace_pod_by_id** — Delete a Kubernetes pod in a given namespace from Portainer. The owning controller (Deployment, StatefulSet, DaemonSet) recreates the pod; naked pods are removed permanently. Returns an empty 204 response on success. Required: kubernete_id, namespace, id.
- **create_a_portainer_pod_restart** — Restart all containers in a Kubernetes pod in place using the Kubernetes 1.35 alpha pod-restart subresource; the pod itself is preserved. Returns an empty 204 response on success. Required: kubernete_id, namespace, name. The cluster must expose the pod-restart subresource (Kubernetes 1.35+ with the matching feature gate enabled).
- **list_all_portainer_namespace_secrets** — Get a Kubernetes Secret by name within a specified namespace in a Portainer environment. Returns the secret object including its name, namespace, and data. Required: kubernete_id, namespace, secret.
- **list_all_portainer_namespace_service_accounts** — Get a specific Kubernetes service account by name within a namespace in a Portainer environment. Returns: name. Required: kubernete_id, namespace, name.
- **portainer_service_account_image_pull_secrets_bulk_update** — Replace the imagePullSecrets list on a Kubernetes service account in a Portainer environment with the provided list. Returns an empty 204 response on success. Required: kubernete_id, namespace, id.
- **list_all_portainer_namespace_services** — List Kubernetes services for a given namespace in a Portainer environment. Returns: attributes containing Kubernetes service information as defined by the upstream K8sServiceInfo schema. Required: kubernete_id, namespace.
- **create_a_portainer_namespace_service** — Create a Kubernetes service within a given namespace in a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id, namespace.
- **portainer_namespace_services_bulk_update** — Update a Kubernetes service within a given namespace in Portainer. Returns an empty 204 response on success. Required: kubernete_id, namespace, and a K8sServiceInfo request body containing the updated service configuration.
- **portainer_namespace_systems_bulk_update** — Toggle the system state for a Kubernetes namespace in a Portainer environment. Returns an empty 204 response on success. Required: kubernete_id, namespace.
- **list_all_portainer_namespace_volumes** — List Kubernetes volumes within a specific namespace in a Portainer environment. Returns: attributes containing Portainer-defined K8sVolumeInfo fields (volume details and optionally the applications using each volume). Required: kubernete_id, namespace.
- **list_all_portainer_namespaces_counts** — Get the total number of Kubernetes namespaces within a Portainer environment, including system namespaces. Returns an integer count that depends on the user's role and permissions. Required: kubernete_id.
- **list_all_portainer_kubernete_nodes** — List Kubernetes cluster nodes for a Portainer environment. Returns each node's id and attributes (as defined by the upstream KubernetesNodeResponse schema). Required: kubernete_id.
- **create_a_portainer_node_drain** — Drain a Kubernetes node in Portainer by safely evicting all pods from the node, preparing it for maintenance or removal. Returns an empty 204 response on success. Required: kubernete_id, name.
- **list_all_portainer_kubernete_nodes_limits** — Get CPU and memory limits of all nodes within a Kubernetes cluster in Portainer. Returns a map keyed by node name where each entry contains the node's CPU and Memory limits. Required: kubernete_id.
- **list_all_portainer_kubernete_persistent_volume_claims** — List all PersistentVolumeClaims in a Portainer Kubernetes environment. Returns an array of PersistentVolumeClaim objects. Required: kubernete_id. Results are scoped by namespace for non-admin users.
- **delete_a_portainer_persistent_volume_claims_delete_by_id** — Delete a list of PersistentVolumeClaims in a Portainer Kubernetes environment by providing PVC namespace and name pairs. Returns an empty 204 response on success. Required: kubernete_id and a body array of PVC namespace/name pairs.
- **portainer_persistent_volume_claims_resizes_bulk_update** — Resize a PersistentVolumeClaim in a Portainer Kubernetes environment to a new size. Returns an empty 204 response on success. Required: kubernete_id. The StorageClass must support volume expansion.
- **list_all_portainer_kubernete_persistent_volumes** — List all PersistentVolumes in a Portainer Kubernetes environment. Returns: name. Required: kubernete_id.
- **get_single_portainer_kubernete_persistent_volume_by_id** — Get a specific PersistentVolume by id in a Portainer Kubernetes environment. Returns: name. Required: kubernete_id, id.
- **delete_a_portainer_persistent_volumes_delete_by_id** — Delete a list of PersistentVolumes in a Portainer Kubernetes environment by providing their names. Returns an empty 204 response on success. Required: kubernete_id and the list of PersistentVolume names to delete.
- **portainer_persistent_volumes_reclaim_policies_bulk_update** — Update the reclaim policy of a PersistentVolume in a Portainer Kubernetes environment. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_rbac_enableds** — Check whether RBAC is enabled in a specific Portainer Kubernetes cluster. Returns a boolean indicating the RBAC status. Required: kubernete_id.
- **delete_a_portainer_role_bindings_delete_by_id** — Delete Kubernetes role bindings in a Portainer environment by submitting a namespace-to-role-binding-names map. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_rolebindings** — List Kubernetes role bindings in a Portainer environment that the authenticated user has access to. Returns an array of role binding records with id and attributes. Required: kubernete_id.
- **list_all_portainer_kubernete_roles** — List Kubernetes roles in a Portainer environment that the authenticated user has access to. Returns: name. Required: kubernete_id.
- **delete_a_portainer_roles_delete_by_id** — Delete Kubernetes roles in a Portainer environment by providing a map of namespaces to arrays of role names. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_secrets** — List Kubernetes Secrets across all namespaces in a Portainer environment. When isUsed is set to true, information about the applications that use each secret is included in the response. Returns an array of K8sSecret objects including id and additional secret attributes. Required: kubernete_id, isUsed.
- **list_all_portainer_secrets_counts** — Get the count of Kubernetes Secrets across all namespaces the user has access to in Portainer. Returns the total count as an integer. Required: kubernete_id (the environment identifier).
- **delete_a_portainer_service_accounts_delete_by_id** — Delete a list of Kubernetes service accounts from a Portainer environment. Accepts a map where each key is a namespace and each value is an array of service account names to delete. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_serviceaccounts** — List Kubernetes service accounts in a Portainer environment that the user has access to. Returns: name. Required: kubernete_id.
- **list_all_portainer_kubernete_services** — List Kubernetes services that the user has access to in a Portainer environment. Returns an array of Kubernetes service objects. Required: kubernete_id. Optional: withApplications to include associated applications with each service.
- **list_all_portainer_services_counts** — Get the total count of Kubernetes services the user has access to in a Portainer environment. Returns the service count as an integer. Required: kubernete_id (environment identifier).
- **delete_a_portainer_services_delete_by_id** — Delete Kubernetes services in a Portainer environment by providing a map of namespace to service names. Returns an empty 204 response on success. Required: kubernete_id.
- **list_all_portainer_kubernete_storage_classes** — List all Kubernetes StorageClasses in a Portainer environment. Returns: Name. Required: kubernete_id.
- **get_single_portainer_kubernete_storage_class_by_id** — Get a specific Kubernetes StorageClass by name in a Portainer environment. Returns: Name, attributes. Required: kubernete_id, id.
- **portainer_kubernete_storage_classes_bulk_update** — Set a specified StorageClass as the cluster default in Portainer, removing default status from any other StorageClass. Returns an empty 204 response on success. Required: kubernete_id, id.
- **delete_a_portainer_storage_classes_delete_by_id** — Delete one or more Kubernetes StorageClasses from a Portainer environment. Accepts a JSON array of StorageClass names to delete. Returns an empty 204 response on success. Required: kubernete_id and the array of StorageClass names.
- **list_all_portainer_kubernete_versions** — Get the Kubernetes cluster version and Portainer capability flags for a specific environment in Portainer. Returns: major, minor, gitVersion, and capability flags such as supportsPodRestart. Required: kubernete_id.
- **list_all_portainer_kubernete_volumes** — List all Kubernetes volumes in a Portainer environment, optionally including the applications using each volume. Returns: Name. Required: kubernete_id.
- **get_single_portainer_kubernete_volume_by_id** — Get a specific Kubernetes volume by namespace and id in a Portainer environment. Returns: Name, Namespace, Applications. Required: kubernete_id, namespace, id.
- **list_all_portainer_volumes_counts** — Get the total number of Kubernetes volumes within a Portainer environment. Returns an integer count of volumes; the count depends on the user's role and permissions. Required: kubernete_id.
- **list_all_portainer_kubernetes_configs** — Generate a kubeconfig file in Portainer that allows a client to communicate with the Kubernetes API server. Returns the kubeconfig file with Kubernetes-standard fields. Use ids to include only specific environment endpoints, or excludeIds to exclude environments. Both parameters are optional and accept arrays of environment endpoint identifiers.
- **list_all_portainer_settings** — Retrieve Portainer settings. Returns the full Portainer settings object containing global configuration options for the instance. No required parameters.
- **portainer_settings_bulk_update** — Update Portainer settings by submitting a new settings payload. Returns the updated Portainer settings object. Required: a JSON request body containing the new settings.
- **list_all_portainer_settings_publics** — Retrieve Portainer public settings — a small set of non-administrative settings. Returns the public settings object whose individual fields are defined upstream in the settings.publicSettingsResponse schema and are not enumerated in the available documentation.
- **list_all_portainer_system_info** — Retrieve Portainer system info. Returns the Portainer system info object with details about the running Portainer instance.
- **list_all_portainer_system_nodes** — Retrieve the count of nodes managed by Portainer. Returns: count. No required parameters.
- **list_all_portainer_system_status** — Check Portainer status. This public endpoint retrieves the current status of the Portainer instance, including whether authentication is enabled and whether analytics are active. No required parameters.
- **create_a_portainer_system_upgrade** — Upgrade Portainer to the Business Edition (BE). Returns an empty 204 response on success. Requires administrator access.
- **list_all_portainer_system_versions** — Check if Portainer has an update available. Returns a version response object containing Portainer update availability information. No required parameters.
- **list_all_portainer_teams** — List teams in Portainer. For non-administrator users, only returns teams they are a member of. Returns: Id, Name.
- **create_a_portainer_team** — Create a new team in Portainer. Returns the created team including its Id and Name. Required: Name. Returns 409 if a team with the same name already exists.
- **get_single_portainer_team_by_id** — Get a single Portainer team by id. Returns: Id, Name. Required: id.
- **update_a_portainer_team_by_id** — Update a Portainer team by id. Returns the updated team including its Id and Name. Required: id.
- **delete_a_portainer_team_by_id** — Delete a Portainer team by id. Returns an empty 204 response on success. Required: id.
- **list_all_portainer_websocket_attaches** — Attach a websocket in Portainer. When nodeName is provided the request is proxied to the underlying agent environment; otherwise the request is upgraded to the websocket protocol with an AttachStart operation. Returns an empty 200 response on success. Required: endpointId.
- **list_all_portainer_websocket_execs** — Execute a websocket exec session on a Portainer environment. When nodeName is provided the request is proxied to the underlying agent environment; otherwise the request is upgraded to the websocket protocol and an ExecStart operation is created and hijacked. Returns an empty 200 response on success. Required: endpointId.
- **list_all_portainer_websocket_kubernetes_shells** — Execute a websocket on a kubectl shell pod in Portainer, upgrading the request to a long-lived websocket connection that proxies client input to the pod. The response is a protocol upgrade with no structured JSON body. Required: endpointId.
- **list_all_portainer_websocket_pods** — Execute a command in a container within a Kubernetes pod via WebSocket in Portainer. The request is upgraded to the WebSocket protocol; no structured response body is returned. Required: endpointId, namespace, podName, containerName, command.
- **list_all_portainer_tags** — List all tags in Portainer. Returns: id.
- **create_a_portainer_tag** — Create a new tag in Portainer. Returns: id. Required: Name. Returns 409 if the name is already associated to an existing tag.
- **delete_a_portainer_tag_by_id** — Delete a Portainer tag by id. Returns an empty 204 response on success. Required: id.
- **create_a_portainer_auth** — Authenticate against Portainer using a username and password to obtain a JWT token. Returns: jwt. Required: Username, Password.
- **create_a_portainer_auth_logout** — Log out of Portainer, invalidating the current session. Returns an empty 204 response on success.
- **create_a_portainer_oauth_validate** — Authenticate with OAuth in Portainer by submitting OAuth credentials. Returns a JWT token for subsequent authenticated API calls. Required: OAuth credentials in the request body.
- **list_all_portainer_team_memberships** — List all team memberships in Portainer. Returns an array of team membership objects including id. No caller-supplied parameters required.
- **create_a_portainer_team_membership** — Create a new team membership in Portainer. Returns the created team membership object including id. A JSON request body with team membership details is required.
- **update_a_portainer_team_membership_by_id** — Update a team membership in Portainer by id. Returns the updated team membership object including id. Required: id. A JSON request body with team membership details is required.
- **delete_a_portainer_team_membership_by_id** — Delete a team membership in Portainer by id. Returns an empty 204 response on success. Required: id.
- **portainer_team_memberships_list_by_team** — List team memberships for a specific team in Portainer. Returns each membership's Id, UserID, TeamID, and Role. Required: team_id.
- **list_all_portainer_endpoints** — List Portainer environments (endpoints) with extensive filtering by group, type, status, tags, platform, edge properties, and more. Returns: Id, Type, URL.
- **create_a_portainer_endpoint** — Create a new Portainer environment (endpoint) to manage a Docker, Agent, Azure, Edge, or Kubernetes environment. Returns the created environment including Id, Name, Type, URL, Status, GroupID, and TLS settings. Required: Name, EndpointCreationType.
- **portainer_endpoints_bulk_delete** — Remove multiple Portainer environments in a single batch request, optionally cleaning up associated resources. Deprecated — prefer the POST /endpoints/delete endpoint instead. Returns an empty 204 response on success.
- **get_single_portainer_endpoint_by_id** — Get a single Portainer environment (endpoint) by id. Returns the full environment object including Id, Name, Type, URL, Status, GroupID, Snapshots, and TLS settings. Required: id.
- **update_a_portainer_endpoint_by_id** — Update a Portainer environment (endpoint) by id, modifying properties such as name, URL, TLS settings, group, tags, and status. Returns the updated environment including Id, Name, Type, URL, Status, GroupID, and TLS settings. Required: id.
- **delete_a_portainer_endpoint_by_id** — Delete a Portainer environment (endpoint) by id, optionally cleaning up associated resources. Returns an empty 204 response on success. Required: id.
- **portainer_endpoint_associations_bulk_update** — De-associate an edge environment (endpoint) in Portainer by id. Returns an empty 204 response on success. Required: id.
- **create_a_portainer_browse_put** — Upload a file to a specific destination path on the file system of a Portainer environment (endpoint), such as TLS files. Returns an empty 204 response on success. Required: endpoint_id, Path, file.
- **list_all_portainer_endpoint_dockerhubs** — Fetch Docker Hub pull limits for a Docker Hub registry in a Portainer environment. Returns the Docker Hub pull limit status for the specified registry. Required: endpoint_id, registry_id.
- **portainer_endpoint_forceupdateservices_bulk_update** — Force update a Docker service on a Portainer endpoint (environment). Returns a swarm service update response object. Required: id.
- **list_all_portainer_endpoint_registries** — List all registries available in a Portainer environment based on the current user's authorizations. Returns an array of registry objects for the specified environment, filtered by the caller's access permissions. Required: endpoint_id. For Kubernetes environments, an optional namespace parameter filters registries by namespace.
- **update_a_portainer_endpoint_registry_by_id** — Update registry access for a Portainer environment. Returns an empty 204 response on success. Required: id, endpoint_id, and a JSON access payload body.
- **portainer_endpoint_settings_bulk_update** — Update settings for a Portainer environment (endpoint) by id. Returns the updated Portainer Endpoint object including Id, Name, Status, URL, Type, and GroupID. Required: id.
- **create_a_portainer_endpoint_snapshot** — Create a snapshot of a Portainer environment (endpoint). Returns an empty 204 response on success. Required: endpoint_id.
- **create_a_portainer_endpoints_delete** — Remove multiple Portainer environments in a single batch and optionally clean up associated resources. Returns an empty 204 response on success; a 207 partial-success response is returned when some environments fail to delete. Requires a request body specifying the environments to remove.
- **create_a_portainer_endpoints_global_key** — Create or retrieve the Portainer environment (endpoint) for an EdgeID. Returns the endpoint global key response object including its id and content-specific attributes.
- **portainer_endpoints_relations_bulk_update** — Update relations for a list of Portainer environments, including edge groups, tags, and environment group assignments. Returns an empty 204 response on success. Required: a request body containing environment relations data.
- **create_a_portainer_endpoints_snapshot** — Trigger a snapshot of all Portainer environments (endpoints). Returns an empty 204 response on success.
- **list_all_portainer_endpoints_summaries** — Get Portainer environment summary counts including environment status breakdown (up, down), unassigned count, and breakdowns by group, type, and health. Returns: type.
- **list_all_portainer_templates** — List available Portainer app templates. Returns: id. The full template object shape is defined by the upstream templates.listResponse schema, which is not enumerated in the API docs; individual fields vary by Portainer version and configured template source.
- **create_a_portainer_template_file** — Get a Portainer template's file content by template id. Returns: FileContent. Required: template_id.
- **list_all_portainer_users** — List Portainer users. Returns: Id. Non-administrator users can only see other non-administrator accounts. Passwords are filtered out and never returned. Optionally filter by environmentId.
- **create_a_portainer_user** — Create a new Portainer user. Returns the created user object including Id, Username, and Role. Only administrators can create users; returns 409 if the user already exists. Required: Username, Password, Role.
- **get_single_portainer_user_by_id** — Get a single Portainer user by id. Returns: Id. Passwords are filtered out and never returned. Required: id.
- **update_a_portainer_user_by_id** — Update a Portainer user by id. Returns: Id. Regular users can only update their own details and cannot change their username or role. Required: id.
- **delete_a_portainer_user_by_id** — Delete a Portainer user by id. Returns an empty 204 response on success. Required: id.
- **portainer_users_current** — Retrieve details about the current authenticated Portainer user. Returns: Id, Username, Role. User passwords are filtered out and never returned.
- **list_all_portainer_user_effective_acceses** — List a Portainer user's effective access on every environment. Returns: role, environment for each accessible environment, following the access viewer's policy precedence. Environments with no role are omitted. Required: user_id.
- **list_all_portainer_user_memberships** — List team memberships for a Portainer user by user id. Returns a TeamMembership object including Id, TeamID, UserID, and Role. Required: user_id.
- **portainer_user_passwds_bulk_update** — Update the password for a Portainer user by id. Returns an empty 204 response on success. Required: id, password.
- **list_all_portainer_user_tokens** — List all API keys for a Portainer user. Returns an array of API key objects, each with an id and additional attributes defined in the upstream portainer.APIKey schema. Required: user_id.
- **create_a_portainer_user_token** — Create a new API access token for a Portainer user. Only the calling user can generate a token for themselves. Returns: id. Required: user_id. Password is required only for internal authentication.
- **delete_a_portainer_user_token_by_id** — Delete an API key (user token) associated with a Portainer user. Returns an empty 204 response on success. Required: user_id, id.
- **list_all_portainer_admin_checks** — Check if an administrator account exists in the Portainer database. Returns an empty 204 response on success; a 404 indicates no administrator user has been initialized yet.
- **create_a_portainer_admin_init** — Initialize the Portainer administrator user account on an uninitialized instance. Returns the created admin user object. Returns 409 if an admin is already initialized.
- **create_a_portainer_upload_tl** — Upload a TLS file (CA, certificate, or key) to Portainer. The file is stored in a specified folder which is created if it does not already exist. Returns an empty 204 response on success. Required: certificate, folder, file.
- **list_all_portainer_stacks** — List all Portainer stacks based on the current user's authorizations. Returns: Id, Name. Limited stacks are not returned by this endpoint.
- **get_single_portainer_stack_by_id** — Get a single Portainer stack by id. Returns: Id, Name. Required: id.
- **update_a_portainer_stack_by_id** — Update a file-based Portainer stack by id. Returns: id, Name. Required: id, endpointId. Only for file-based stacks.
- **delete_a_portainer_stack_by_id** — Delete a Portainer stack by id. Returns an empty 204 response on success. Required: id, endpointId.
- **portainer_stacks_start** — Start a stopped Portainer stack. Returns the stack object including Id, Name, EndpointID, SwarmID, and Env. Required: stack_id, endpointId. Fails with 409 if the stack is already active, deploying, or in error state.
- **portainer_stack_associates_bulk_update** — Associate an orphaned Portainer stack to a new environment(endpoint). Returns the updated stack object including Id, Name, EndpointID, and SwarmID. Required: id, endpointId, swarmId, orphanedRunning.
- **list_all_portainer_stack_files** — Get the stack file content for a specific Portainer stack. Returns: StackFileContent. Required: stack_id.
- **create_a_portainer_stack_git** — Update Git configuration for a Portainer stack, including repository reference name and auto-update settings. When SourceID is set, URL/auth/TLS are inherited from the referenced Source. Returns: Id. Required: stack_id.
- **portainer_git_redeploys_bulk_update** — Redeploy a Portainer stack by pulling its latest configuration from Git and reapplying it. Returns the updated stack object including id, name, and type. Required: id.
- **create_a_portainer_stack_migrate** — Migrate a Portainer stack to another environment(endpoint), re-creating it in the target before removing the original. Returns the migrated stack with Id, Name, EndpointID, and SwarmID. Required: stack_id. Fails with 409 if a stack with the same name already runs on the target.
- **create_a_portainer_kubernetes_repository** — Deploy a new Kubernetes stack in Portainer from a git repository into a specified environment. Returns the created stack object including id, name, type, and status. Required: endpointId and a stack config request body.
- **create_a_portainer_kubernetes_string** — Deploy a new Kubernetes stack from inline manifest text in Portainer. Returns the created Stack object including id, name, and endpointId. Required: endpointId.
- **create_a_portainer_kubernetes_url** — Deploy a new Kubernetes stack from a manifest URL in Portainer. Returns the created stack object including its Id. Required: endpointId and a stack config request body.
- **create_a_portainer_standalone_file** — Deploy a new standalone compose stack from a file upload in Portainer. Returns the created stack object including its id, name, and endpointId. Required: endpointId and Name.
- **create_a_portainer_standalone_repository** — Deploy a new compose stack from a Git repository into a Portainer Docker environment. Returns the created portainer.Stack object including Id, Name, Type, EndpointID, and Status. Required: endpointId.
- **create_a_portainer_standalone_string** — Deploy a new standalone compose stack from inline text content into a Portainer Docker environment. Returns the created stack object including its Id, Name, and EndpointId. Required: endpointId, Name, StackFileContent.
- **create_a_portainer_swarm_file** — Deploy a new swarm stack from a file upload in Portainer. Returns the created stack object including its id and stack attributes. Required: endpointId, Name, SwarmID, file.
- **create_a_portainer_swarm_repository** — Deploy a new swarm stack from a Git repository into a Portainer Docker environment. Returns the created stack object including Id, Name, Status, and EndpointId. Required: endpointId.
- **create_a_portainer_swarm_string** — Deploy a new swarm stack in Portainer from inline compose file text. Returns the created stack object including Id, Name, Type, EndpointId, SwarmId, and Status. Required: endpointId, Name, SwarmID, StackFileContent.
- **portainer_stacks_names_bulk_delete** — Delete a Portainer Kubernetes stack by name. Returns an empty 204 response on success. Required: name, endpointId.
- **create_a_portainer_stacks_webhook** — Trigger a Portainer stack git update via webhook. Returns a success response with no body. A 409 is returned if autoupdate for the stack is unavailable or a stack deployment is already in progress. Required: webhook_id.
- **list_all_portainer_registries** — List all registries in Portainer based on the current user's authorizations. Administrators see all registries; non-admin users see only authorized ones. Returns: Id, URL.
- **create_a_portainer_registry** — Create a new registry in Portainer. Returns the created registry object including Id and URL. A 409 is returned if another registry with the same name or same URL and credentials already exists. Required: URL.
- **get_single_portainer_registry_by_id** — Get a single Portainer registry by id. Returns: Id, Name, URL. Required: id.
- **update_a_portainer_registry_by_id** — Update a Portainer registry by id. Returns the updated registry object including Id, Name, and URL. Required: id.
- **delete_a_portainer_registry_by_id** — Delete a Portainer registry by id. Returns an empty 204 response on success. Required: id.
- **create_a_portainer_registrie_configure** — Configure a registry in Portainer by submitting a registry configuration payload. Returns an empty 204 response on success. Required: registry_id.
- **create_a_portainer_registries_ping** — Test connection to a registry in Portainer using provided credentials before persisting it. Returns a response indicating whether the registry connection test was successful. Required: the request body containing registry credentials.
- **list_all_portainer_webhooks** — List Portainer webhooks, optionally filtered by endpoint and resource. Returns: ID. The filters parameter accepts a JSON string with EndpointID and ResourceID keys.
- **create_a_portainer_webhook** — Create a Portainer webhook for a specific resource. Returns: ID. Required: ResourceID, EndpointID. Returns 409 if a webhook for this resource already exists.
- **update_a_portainer_webhook_by_id** — Update a Portainer webhook by id. Returns: ID. Required: id.
- **delete_a_portainer_webhook_by_id** — Delete a Portainer webhook by id. Returns an empty 202 response on success. Required: id.
- **portainer_webhooks_execute** — Execute a Portainer webhook by its token UUID to restart the associated Docker service. Returns an empty 202 response on success. Required: webhook_id.
- **create_a_portainer_backup** — Create a Portainer system data snapshot backup archive that can be used to restore the system. Accepts a password in the request body to encrypt the backup. Returns the backup archive as a binary file download on success.
- **create_a_portainer_restore** — Trigger a system restore in Portainer using a provided backup file. Returns an empty 200 response on success. Requires a restore request payload containing the backup file data.
- **list_all_portainer_custom_templates** — List available custom templates in Portainer, optionally filtered by template type and edge status. Returns: id, Description, Type. Required: type.
- **get_single_portainer_custom_template_by_id** — Get a single custom template by id in Portainer. Returns: id, Description, Type. Required: id.
- **update_a_portainer_custom_template_by_id** — Update a custom template in Portainer by id. Returns the updated template including id, Title, Description, Platform, Type, Logo, and Variables. Required: id.
- **delete_a_portainer_custom_template_by_id** — Delete a custom template in Portainer by id. Returns an empty 204 response on success. Required: id.
- **list_all_portainer_custom_template_files** — Retrieve the stack file content for a Portainer custom template. Returns: FileContent containing the file's text content. Required: custom_template_id.
- **portainer_custom_template_git_fetches_bulk_update** — Fetch the latest config file content from a Portainer custom template's git repository configuration. Returns the file response containing FileContent. Required: id.
- **create_a_portainer_create_file** — Create a Portainer custom template by uploading a file. Returns the created custom template object including its id, title, description, platform, and type. Required: Title, Description, Note, Platform, Type, File.
- **create_a_portainer_create_repository** — Create an EdgeStack from a git repository in Portainer. Returns the created EdgeStack object including its Id, Name, DeploymentType, and EdgeGroups. Requires a stack configuration request body with git repository details. Edge compute features must be enabled.
- **create_a_portainer_create_string** — Create a Portainer custom template from inline file content provided as a string. Returns: id, Description, Type. Required: Title, Description, Note, Platform, Type, FileContent.
- **list_all_portainer_container_gpus** — Fetch GPU device data for a specific Docker container in a Portainer environment. Returns: gpus, with each GPU entry including name and value. Required: environment_id, container_id.
- **list_all_portainer_dashboards** — Get Docker dashboard counters for a Portainer environment. Returns a summary of resource counters for the specified environment. Required: environment_id.
- **list_all_portainer_images** — List Docker images in a Portainer environment. Returns image objects with id and attributes whose fields are defined by the upstream Portainer API schema. Required: environment_id.
- **portainer_edge_jobs_attach_log** — Update the logs collected from a Portainer Edge Job on a specific environment. Returns an empty 200 response on success. Required: endpoint_id, job_id.
- **list_all_portainer_edge_jobs** — List all Portainer EdgeJobs. Returns: id.
- **get_single_portainer_edge_job_by_id** — Get a single Portainer EdgeJob by id. Returns: id, Name. Required: id.
- **update_a_portainer_edge_job_by_id** — Update a Portainer EdgeJob by id. Returns the updated EdgeJob including id, Name, CronExpression, EdgeGroups, Endpoints, Recurring, and Created. Required: id.
- **delete_a_portainer_edge_job_by_id** — Delete a Portainer EdgeJob by id. Returns an empty 204 response on success. Required: id.
- **list_all_portainer_edge_stacks** — List Portainer EdgeStacks. Returns an array of EdgeStack objects including Id, Name, EdgeGroups, DeploymentType, and Registries.
- **get_single_portainer_edge_stack_by_id** — Get a single Portainer EdgeStack by id. Returns the EdgeStack object including Id, Name, EdgeGroups, DeploymentType, and Registries. Required: id.
- **update_a_portainer_edge_stack_by_id** — Update a Portainer EdgeStack by id with new EdgeStack data. Returns the updated EdgeStack object including Id, Name, EdgeGroups, DeploymentType, and Registries. Required: id.
- **delete_a_portainer_edge_stack_by_id** — Delete a Portainer EdgeStack by id. Returns an empty 204 response on success. Required: id.
- **list_all_portainer_edge_status** — Get the edge environment status for a specific Portainer environment. Returns the edge environment status response object whose field-level details are not available in the discovered source.
- **list_all_portainer_edge_groups** — List all Portainer EdgeGroups. Returns decorated EdgeGroup records including id and attributes from the upstream edgegroups.decoratedEdgeGroup schema. Edge compute features must be enabled.
- **create_a_portainer_edge_group** — Create a Portainer EdgeGroup. Returns the created EdgeGroup including id and attributes from the upstream portainer.EdgeGroup schema. Required: attributes.
- **get_single_portainer_edge_group_by_id** — Get a single Portainer EdgeGroup by id. Returns: id. Required: id.
- **update_a_portainer_edge_group_by_id** — Update a Portainer EdgeGroup by id. Returns the updated EdgeGroup including id and attributes from the upstream portainer.EdgeGroup schema. Required: id, attributes.
- **delete_a_portainer_edge_group_by_id** — Delete a Portainer EdgeGroup by id. Returns an empty 204 response on success. Cannot delete an EdgeGroup that is in use by an Edge stack or Edge job. Required: id.
- **list_all_portainer_edge_job_files** — Fetch the file content of an EdgeJob in Portainer. Returns: FileContent. Required: edge_job_id.
- **list_all_portainer_edge_job_tasks** — List tasks for a Portainer Edge Job. Returns task container objects with id and schema-specific attributes defined by the upstream edgejobs.taskContainer schema. Required: edge_job_id.
- **portainer_edge_job_tasks_list_logs** — Fetch the log for a specific task on a Portainer Edge Job. Returns a file response object with id and schema-specific attributes defined by the upstream edgejobs.fileResponse schema. Required: edge_job_id, task_id.
- **portainer_edge_job_tasks_attach_log** — Collect the log for a specific task on a Portainer Edge Job. Returns an empty 204 response on success. Required: edge_job_id, task_id.
- **portainer_edge_job_tasks_bulk_delete** — Clear the log for a specific task on a Portainer Edge Job. Returns an empty 204 response on success. Required: edge_job_id, task_id.
- **list_all_portainer_edge_stack_files** — Fetch the stack file content for a Portainer Edge Stack by its id. Returns: StackFileContent. Required: edge_stack_id.
- **portainer_edge_stack_status_bulk_update** — Update the deployment status of a Portainer EdgeStack. Called by an Edge Environment to report its stack deployment status. Returns the updated EdgeStack object including Id, Name, and DeploymentType. Required: id.
- **list_all_portainer_endpoint_groups** — List all Portainer environment groups based on current user authorizations; administrators see all groups while other users see only authorized ones. Returns: id. The size parameter includes endpoint counts and type breakdown per group.
- **create_a_portainer_endpoint_group** — Create a new Portainer environment group. Returns the created group with its id and attributes.
- **get_single_portainer_endpoint_group_by_id** — Get a single Portainer environment group by id. Returns: id. Required: id. The size parameter includes endpoint counts and type breakdown.
- **update_a_portainer_endpoint_group_by_id** — Update a Portainer environment group by id. Returns the updated group with its id and attributes. Required: id.
- **delete_a_portainer_endpoint_group_by_id** — Delete a Portainer environment group by id. Returns an empty 204 response on success. Required: id.
- **update_a_portainer_endpoint_group_endpoint_by_id** — Add an environment (endpoint) to an environment (endpoint) group in Portainer. Returns an empty 204 response on success. Required: endpoint_group_id, id.
- **delete_a_portainer_endpoint_group_endpoint_by_id** — Remove an environment (endpoint) from an environment (endpoint) group in Portainer. Returns an empty 204 response on success. Required: endpoint_group_id, id.
- **create_a_portainer_file_preview** — Preview the content of a target file in a git repository in Portainer. Retrieves the compose file content based on the provided git repository configuration. Returns: FileContent. Requires a request body with repository file preview details.
- **list_all_portainer_gitops_sources** — List all GitOps sources in Portainer, returning a deduplicated list of git repositories used across all GitOps workflows. Returns: id, name, url, type. Filter by status or source type, sort by name, status, or type.
- **get_single_portainer_gitops_source_by_id** — Get a single GitOps source in Portainer by id, including its connection settings and linked workflows. Returns: id, name, url, type. Required: id.
- **update_a_portainer_gitops_source_by_id** — Update an existing GitOps source in Portainer backed by a Git repository. Returns the updated source including id, name, url, and type. Required: id.
- **delete_a_portainer_gitops_source_by_id** — Delete an existing GitOps source in Portainer by id. Returns an empty 204 response on success. A 409 is returned if the source is still referenced by workflows or custom templates. Required: id.
- **portainer_source_acceses_bulk_update** — Update the access control settings for an existing GitOps source in Portainer. Returns the updated source object including id, name, status, type, and url. Required: id and a source access control payload.
- **create_a_portainer_source_test** — Test the connection of a stored GitOps source in Portainer, applying optional connection overrides to the stored configuration. Returns a connection test result object. Required: source_id.
- **create_a_portainer_sources_git** — Create a new GitOps Git source in Portainer backed by a Git repository. Returns: ID, Name, URL, Status, Type. Required: URL. Returns 409 if a source with the same URL and credentials already exists.
- **list_all_portainer_sources_summaries** — Summarize GitOps source status counts in Portainer. Returns a count of sources per status: healthy, syncing, error, paused, and unknown. No parameters required.
- **create_a_portainer_sources_test** — Test connectivity for Git connection details in Portainer before persisting them as a source. Returns a connection test result indicating whether the repository is reachable. Required: Git connection details body with repository URL and credentials to validate.
- **list_all_portainer_gitops_workflows** — List all GitOps workflows in Portainer — stacks with GitConfig enabled across all environments. Returns: id, name, type. Supports filtering by status, type, platform, and environment IDs, and sorting by name, type, status, creationDate, or lastSyncDate.
- **list_all_portainer_workflows_summaries** — Summarize Portainer GitOps workflow status counts across all environments. Returns: healthy, syncing, error, paused, unknown (integer count of workflows in each status).
- **list_all_portainer_kubernetes_helms** — List Helm releases in a Portainer Kubernetes environment. Returns each release with name, namespace, and additional release attributes from the upstream schema. Required: endpoint_id.
- **create_a_portainer_kubernetes_helm** — Install a Helm chart in a Portainer Kubernetes environment. Returns: id. Required: endpoint_id.
- **delete_a_portainer_kubernetes_helm_by_id** — Delete a Helm release by id in a Portainer Kubernetes environment. Returns an empty 204 response on success. Required: endpoint_id, id.
- **portainer_kubernetes_helms_list_history** — List the revision history of a Helm release in a Portainer Kubernetes environment. Returns each historical revision with name, namespace, revision, and additional release attributes from the upstream schema. Required: endpoint_id, release.
- **get_single_portainer_kubernetes_helm_by_id** — Get a specific Helm release by release name in a Portainer Kubernetes environment. Returns: name, namespace, chart, config, info, manifest, hooks, version. Required: endpoint_id, id.
- **create_a_portainer_rollback** — Rollback a Helm release to a previous revision in a Portainer Kubernetes environment. Returns the rolled-back Helm release object. Required: endpoint_id, release.
- **list_all_portainer_templates_helms** — Search Helm charts in a Portainer Helm repository by repository URL and optional chart name. Returns the search results as a plain string. Required: repo.
- **get_single_portainer_templates_helm_by_id** — Get a Portainer Helm template by id. Returns the template information as a plain string. Required: id.
- **list_all_portainer_helm_repositories** — List a Portainer user's helm repositories. Returns: url. Required: user_id.
- **create_a_portainer_helm_repository** — Create a helm repository for a Portainer user by providing a repository URL. Returns the created repository including url and global. Required: user_id, url.
- **delete_a_portainer_helm_repository_by_id** — Delete a helm repository for a Portainer user by id. Returns an empty 204 response on success. Required: user_id, id.
- **create_a_portainer_ldap_check** — Test LDAP connectivity in Portainer by submitting LDAP connection details. Returns an empty 204 response on success. Required: LDAP details request body (defined by the ldap.checkPayload schema upstream).
- **list_all_portainer_motds** — Fetch the Portainer message of the day (MOTD). Returns the motd object as defined by the upstream motd.Motd schema; the specific fields are not enumerated in the discovered API documentation.
- **create_a_portainer_resource_control** — Create a new resource control in Portainer to restrict access to a Docker resource. Returns: id. Required: a resource control details body. Fails if a resource control is already associated with the target resource.
- **update_a_portainer_resource_control_by_id** — Update an existing resource control in Portainer by id. Returns: id. Required: id, a resource control details body.
- **delete_a_portainer_resource_control_by_id** — Remove a resource control in Portainer by id. Returns an empty 204 response on success. Required: id.
- **list_all_portainer_ssls** — Inspect the SSL settings in Portainer. Returns the current SSL configuration object as defined by the portainer.SSLSettings schema.
- **portainer_ssls_bulk_update** — Update the SSL settings in Portainer. Accepts an SSL settings payload as defined by the ssl.sslUpdatePayload schema. Returns an empty 204 response on success.
- **list_all_portainer_status** — Check Portainer status. Returns: InstanceID, Version.

## How it works

1. **Link your customer's Portainer account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Portainer.** The Proxy API is a 1-to-1 mapping of the Portainer API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Embed container orchestration into your DevOps platform** — Give your users a way to deploy and manage containerized workloads on Kubernetes, Docker Swarm, or Edge environments without leaving your product. Truto handles Portainer authentication and API normalization so you can ship the integration in days.
- **Power Internal Developer Portals with live cluster data** — Surface pod metrics, namespace inventories, and application health inside your IDP so developers get self-serve visibility without cluster credentials. One-click pod restarts and log fetches become native features of your portal.
- **Add Portainer as a deployment target in your CI/CD tool** — Let customers connect their Portainer environments as a deployment destination for stacks, Helm charts, and GitOps-driven redeploys. Removes the need for your users to store raw Kubernetes credentials in your pipeline.
- **Automate Edge fleet provisioning for IoT and retail SaaS** — When a new site or device comes online in your platform, programmatically create Edge Groups, push Edge Stacks, and monitor connectivity via Portainer. Ideal for vertical SaaS managing distributed hardware fleets.
- **Feed FinOps and observability tools with Kubernetes utilization data** — Pull node limits, pod metrics, and application resource usage across all connected Portainer environments to power chargeback reports, right-sizing recommendations, and capacity dashboards.

## What you can build

- **Environment auto-registration** — Register newly provisioned clusters as Portainer endpoints, tag them, and assign team access programmatically when infrastructure spins up in your platform.
- **One-click stack deployment** — Let users deploy Docker Compose stacks, Kubernetes manifests, or Helm charts from your UI using inline strings, Git repositories, or URL sources.
- **Pod and node control panel** — Ship a live view of Kubernetes pods and nodes with actions like pod restart, node drain, and namespace bulk updates directly from your product.
- **GitOps redeploy triggers** — Fire Portainer webhooks or trigger Git-based redeploys automatically when your CI/CD pipeline finishes a build, keeping clusters in sync with the latest artifacts.
- **Edge fleet orchestration dashboard** — Create Edge Groups, push Edge Jobs to thousands of remote nodes, and stream back task execution logs to give your users centralized fleet visibility.
- **Cluster metrics and inventory sync** — Continuously ingest node/pod metrics, ConfigMaps, Secrets, PVCs, and Ingress inventories to power your own dashboards, alerts, or cost analytics.

## FAQs

### How do end users authenticate their Portainer instance through Truto?

Portainer supports API key and JWT-based authentication against a customer's Portainer Server URL. Truto handles the connection flow so your users provide their instance URL and credentials once, and Truto manages token lifecycle and secure storage.

### Does the integration support self-hosted and on-prem Portainer deployments?

Yes. Portainer is typically self-hosted, so each end user connects their own Business Edition or Community Edition instance URL. Truto supports per-tenant base URLs so every customer's connection points to their own Portainer server.

### Which orchestrators does the Portainer integration cover?

The available tools cover Kubernetes (namespaces, pods, ingresses, services, ConfigMaps, secrets, PVCs, Helm), Docker Swarm and standalone Docker stacks, and Edge environments (Edge Groups, Edge Stacks, Edge Jobs). You can operate across all of them through the same connection.

### Can we deploy applications programmatically, or is this read-only?

It's fully bi-directional. You can create stacks from files, Git repositories, or inline strings, deploy Helm charts, restart pods, drain nodes, create namespaces and services, and trigger webhook-based redeploys.

### How fresh is metrics data from Portainer?

Metrics endpoints (nodes, pods, application resources) return live data from Portainer's metrics server at the time of the API call. There is no built-in caching layer, so freshness matches what Portainer itself has from the underlying cluster.

### Is this integration available today, or built on request?

Portainer is available as an integration on Truto with the tool inventory listed. If you need additional endpoints, custom resource types, or bespoke workflows, Truto's team can extend coverage on request.

## Related reading

- [Connect Portainer to ChatGPT: Manage Kubernetes Clusters and Stacks](https://truto.one/blog/connect-portainer-to-chatgpt-manage-kubernetes-clusters-and-stacks/) — Learn how to connect Portainer to ChatGPT using an MCP server. Automate Kubernetes deployments, audit cluster limits, and troubleshoot Edge jobs with AI agents.
- [Connect Portainer to Claude: Orchestrate Helm Charts and GitOps](https://truto.one/blog/connect-portainer-to-claude-orchestrate-helm-charts-and-gitops/) — Learn how to connect Portainer to Claude using a managed MCP server. This step-by-step guide covers configuration, tool calling, and orchestrating GitOps.
- [Connect Portainer to AI Agents: Monitor Nodes and Manage Edge Jobs](https://truto.one/blog/connect-portainer-to-ai-agents-monitor-nodes-and-manage-edge-jobs/) — Learn how to connect Portainer to AI Agents using Truto's /tools API. Build autonomous workflows to monitor Kubernetes nodes and manage Edge Jobs.
