LeashIndex Get the report

Index / data

io.github.lazyants/hetzner

io-github-lazyants-hetzner declares 185 capabilities across 185 tools, with 2 critical issues. One of them, no-revocation, is recorded for every server in the index because MCP has no field in which to declare a way to switch a tool off; a missing declaration is not evidence that the control is missing.

100/100 exposureHigh exposure

Manifest recorded 2026-10-27 from tools/list answered by the npm package @lazyants/hetzner-mcp-server@4.0.2 (published to npm as @lazyants/hetzner-mcp-server, listed in the official MCP registry as io.github.lazyants/hetzner 4.0.2), run in an isolated container with no network access and placeholder credentials. The date changes only when the manifest does. Not verified by a maintainer.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 185 tools

185 of 185 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · irreversible-uncapped · 51 of 185 tools

51 tools are classified as irreversible or destructive and declare no limit. 42 of them are counted only because the server annotated them destructiveHint. In MCP that annotation marks a tool that may make destructive changes rather than only additive ones; it does not say the change cannot be undone.

high · no-expiry · All 185 tools

185 of 185 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 185 tools

185 of 185 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 72 of 185 tools

72 tools can modify data and declare no limit.

low · uncapped-read · 62 of 185 tools

62 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
hetzner_list_serversread declared
hetzner_get_serverread declared
hetzner_create_serverwrite inferred
hetzner_update_serverwrite inferred
hetzner_delete_serverdestructive declared
hetzner_power_ondestructive declared
hetzner_power_offdestructive declared
hetzner_rebootdestructive declared
hetzner_resetdestructive declared
hetzner_shutdowndestructive declared
hetzner_rebuild_serverdestructive declared
hetzner_resize_serverwrite assumed
hetzner_enable_rescuewrite assumed
hetzner_disable_rescuewrite assumed
hetzner_get_server_metricsread declared
hetzner_list_server_actionsread declared
hetzner_change_server_protectiondelete inferred
hetzner_request_consolewrite inferred
hetzner_enable_backupwrite assumed
hetzner_disable_backupdestructive declared
hetzner_change_alias_ipsdestructive declared
hetzner_change_dns_ptrwrite assumed
hetzner_attach_server_to_networkwrite assumed
hetzner_detach_server_from_networkdestructive declared
hetzner_add_server_to_placement_groupwrite inferred
hetzner_remove_server_from_placement_groupdestructive declared
hetzner_reset_server_passworddestructive declared
hetzner_list_locationsread declared
hetzner_get_locationread declared
hetzner_list_server_typesread declared
hetzner_get_server_typeread declared
hetzner_get_pricingread declared
hetzner_wait_for_actionread declared
hetzner_list_networksread declared
hetzner_list_network_membersread declared
hetzner_get_networkread declared
hetzner_create_networkwrite inferred
hetzner_update_networkwrite inferred
hetzner_delete_networkdestructive declared
hetzner_add_subnetwrite inferred
hetzner_delete_subnetdestructive declared
hetzner_add_routewrite inferred
hetzner_delete_routedestructive declared
hetzner_change_ip_rangewrite assumed
hetzner_change_network_protectiondelete inferred
hetzner_list_network_actionsread declared
hetzner_list_firewallsread declared
hetzner_get_firewallread declared
hetzner_create_firewallwrite inferred
hetzner_update_firewallwrite inferred
hetzner_delete_firewalldestructive declared
hetzner_set_firewall_ruleswrite inferred
hetzner_apply_firewallwrite assumed
hetzner_remove_firewalldestructive declared
hetzner_list_firewall_actionsread declared
hetzner_list_load_balancersread declared
hetzner_get_load_balancerread declared
hetzner_create_load_balancerwrite inferred
hetzner_update_load_balancerwrite inferred
hetzner_delete_load_balancerdestructive declared
hetzner_add_lb_targetwrite inferred
hetzner_remove_lb_targetdestructive declared
hetzner_add_lb_servicewrite inferred
hetzner_update_lb_servicewrite inferred
hetzner_delete_lb_servicedestructive declared
hetzner_change_lb_algorithmwrite assumed
hetzner_change_lb_typewrite assumed
hetzner_attach_lb_to_networkwrite assumed
hetzner_detach_lb_from_networkdestructive declared
hetzner_get_lb_metricsread declared
hetzner_list_lb_typesread declared
hetzner_change_load_balancer_protectiondelete inferred
hetzner_list_load_balancer_actionsread declared
hetzner_enable_lb_public_interfacewrite assumed
hetzner_disable_lb_public_interfacedestructive declared
hetzner_change_lb_dns_ptrwrite assumed
hetzner_list_certificatesread declared
hetzner_get_certificateread declared
hetzner_create_certificatewrite inferred
hetzner_update_certificatewrite inferred
hetzner_delete_certificatedestructive declared
hetzner_retry_certificatewrite assumed
hetzner_list_certificate_actionsread declared
hetzner_list_floating_ipsread declared
hetzner_get_floating_ipread declared
hetzner_create_floating_ipwrite inferred
hetzner_update_floating_ipwrite inferred
hetzner_delete_floating_ipdestructive declared
hetzner_assign_floating_ipwrite inferred
hetzner_unassign_floating_ipdestructive declared
hetzner_change_floating_ip_rdnswrite assumed
hetzner_change_floating_ip_protectiondelete inferred
hetzner_list_floating_ip_actionsread declared
hetzner_list_primary_ipsread declared
hetzner_get_primary_ipread declared
hetzner_create_primary_ipwrite inferred
hetzner_update_primary_ipwrite inferred
hetzner_delete_primary_ipdestructive declared
hetzner_assign_primary_ipwrite inferred
hetzner_unassign_primary_ipdestructive declared
hetzner_change_primary_ip_rdnswrite assumed
hetzner_change_primary_ip_protectiondelete inferred
hetzner_list_primary_ip_actionsread declared
hetzner_list_volumesread declared
hetzner_get_volumeread declared
hetzner_create_volumewrite inferred
hetzner_update_volumewrite inferred
hetzner_delete_volumedestructive declared
hetzner_attach_volumewrite assumed
hetzner_detach_volumedestructive declared
hetzner_resize_volumewrite assumed
hetzner_change_volume_protectiondelete inferred
hetzner_list_volume_actionsread declared
hetzner_list_imagesread declared
hetzner_get_imageread declared
hetzner_update_imagewrite inferred
hetzner_delete_imagedestructive declared
hetzner_create_imagewrite inferred
hetzner_change_image_protectiondelete inferred
hetzner_list_image_actionsread declared
hetzner_list_storage_boxesread declared
hetzner_create_storage_boxwrite inferred
hetzner_get_storage_boxread declared
hetzner_update_storage_boxwrite inferred
hetzner_delete_storage_boxdestructive declared
hetzner_list_storage_box_foldersread declared
hetzner_list_storage_box_actionsread declared
hetzner_change_storage_box_protectiondelete inferred
hetzner_change_storage_box_typewrite assumed
hetzner_reset_storage_box_passwordwrite assumed
hetzner_update_storage_box_access_settingswrite inferred
hetzner_rollback_storage_box_snapshotdestructive declared
hetzner_enable_storage_box_snapshot_planwrite inferred
hetzner_disable_storage_box_snapshot_planwrite assumed
hetzner_list_storage_box_typesread declared
hetzner_get_storage_box_typeread declared
hetzner_list_storage_box_snapshotsread declared
hetzner_create_storage_box_snapshotwrite inferred
hetzner_get_storage_box_snapshotread declared
hetzner_update_storage_box_snapshotwrite inferred
hetzner_delete_storage_box_snapshotdestructive declared
hetzner_list_storage_box_subaccountsread declared
hetzner_create_storage_box_subaccountwrite inferred
hetzner_get_storage_box_subaccountread declared
hetzner_update_storage_box_subaccountwrite inferred
hetzner_delete_storage_box_subaccountdestructive declared
hetzner_change_storage_box_subaccount_home_directorywrite assumed
hetzner_reset_storage_box_subaccount_passwordwrite assumed
hetzner_update_storage_box_subaccount_access_settingswrite inferred
hetzner_list_ssh_keysread declared
hetzner_get_ssh_keyread declared
hetzner_create_ssh_keywrite inferred
hetzner_update_ssh_keywrite inferred
hetzner_delete_ssh_keydestructive declared
hetzner_list_isosread declared
hetzner_get_isoread declared
hetzner_attach_isowrite assumed
hetzner_detach_isodestructive declared
hetzner_list_placement_groupsread declared
hetzner_get_placement_groupread declared
hetzner_create_placement_groupwrite inferred
hetzner_update_placement_groupwrite inferred
hetzner_delete_placement_groupdestructive declared
hetzner_list_zonesread declared
hetzner_get_zoneread declared
hetzner_create_zonewrite inferred
hetzner_update_zonewrite inferred
hetzner_delete_zonedestructive declared
hetzner_export_zonefileread declared
hetzner_import_zonefiledestructive declared
hetzner_change_zone_protectiondelete inferred
hetzner_change_zone_ttlwrite assumed
hetzner_change_zone_primary_nameserversread inferred
hetzner_list_zone_actionsread declared
hetzner_list_zone_rrsetsread declared
hetzner_get_zone_rrsetread declared
hetzner_create_zone_rrsetwrite inferred
hetzner_update_zone_rrsetwrite inferred
hetzner_delete_zone_rrsetdestructive declared
hetzner_change_zone_rrset_protectionwrite assumed
hetzner_change_zone_rrset_ttlwrite assumed
hetzner_set_zone_rrset_recordsdestructive declared
hetzner_add_zone_rrset_recordsread inferred
hetzner_update_zone_rrset_recordsread inferred
hetzner_remove_zone_rrset_recordsdestructive declared
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.