# Ngrok — MCP server on mcp.ai > Connect your Ngrok account and use 102 tools for developer tools straight from your AI agent. Connect with your own API key. Ngrok creates secure tunnels to locally hosted applications, enabling developers to share and test webhooks or services without configuring complex network settings. By: mcp.ai · official Page: https://mcp.ai/ngrok ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_ngrok?ms=1787293560000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/ngrok/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/ngrok/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/ngrok/skill.md Postman collection (v2.1): https://mcp.ai/ngrok/postman.json ## Tools - ngrok_create_api_key(metadata?: string, owner_id?: string, description?: string) — Creates a new API key for authenticating with the ngrok API. This tool allows programmatic creation of API keys that can be used to access ngrok's API services. - ngrok_create_credential(acl?: string[], metadata?: string, owner_id?: string, description?: string) — Creates a new tunnel authtoken credential for authenticating ngrok agents. This authtoken credential can be used to start a new tunnel session. The response to this API call is the only time the gener - ngrok_create_endpoint(url: string, type?: string, bindings?: string[], metadata?: string, description?: string, traffic_policy: string, pooling_enabled?: boolean) — Create a cloud endpoint on the ngrok account. Use when you need to set up a new cloud endpoint with custom traffic policies for handling HTTP traffic. - ngrok_create_event_source(type: string, subscription_id: string) — Add a new event source to an event subscription. Event sources define which types of events will trigger the subscription. Use this when you need to subscribe to additional event types for an existing - ngrok_create_event_subscription(sources: object[], metadata?: string, description?: string, destination_ids: string[]) — Creates a new event subscription in ngrok. Event subscriptions allow you to be notified when specific events occur in your ngrok account. Use this when you need to set up webhooks or event-driven work - ngrok_create_https_edge(metadata?: string, hostports?: string[], mutual_tls?: object, description?: string, tls_termination?: object) — Creates a new HTTPS edge in your ngrok account. HTTPS edges define how ngrok handles HTTPS traffic for your domains. Use this when you need to set up a new HTTPS endpoint with custom TLS or mutual TLS - ngrok_create_https_edge_route(oidc?: object, saml?: object, match: string, oauth?: object, backend?: object, edge_id: string, metadata?: string, match_type: string, compression?: object, description?: string, ip_restriction?: object, traffic_policy?: object, circuit_breaker?: object, request_headers?: object, response_headers?: object, user_agent_filter?: object, webhook_verification?: object, websocket_tcp_converter?: object) — Creates a new route on an HTTPS edge in ngrok. Routes define how traffic matching specific patterns should be handled and can include various security and transformation modules. Use when you need to - ngrok_create_ssh_credential(acl?: string[], metadata?: string, owner_id?: string, public_key: string, description?: string) — Creates a new SSH credential from an uploaded public SSH key. This SSH credential can be used to start new tunnels via ngrok's SSH gateway. Use when you need to authenticate SSH-based tunnel connectio - ngrok_create_vault(name?: string, metadata?: string, description?: string) — Creates a new vault in your ngrok account. Vaults are used for securely storing and managing sensitive data such as secrets, credentials, and tokens. - ngrok_create_vault_secret(name: string, value: string, metadata?: string, vault_id?: string, vault_name?: string, description?: string) — Tool to create a new secret in an ngrok vault for secure storage of sensitive data like API keys, passwords, or tokens. Use when you need to securely store sensitive information that can be referenced - ngrok_delete_api_key(id: string) — Delete an API key by its ID. This action permanently removes the specified API key from your ngrok account. This is an important security feature that allows users to revoke access when an API key is - ngrok_delete_credentials(id: string) — Delete a tunnel authtoken credential by ID. This action permanently removes the specified credential from your ngrok account. - ngrok_delete_edge_route_circuit_breaker_module(id: string, edge_id: string) — Delete the Circuit Breaker module from an HTTPS Edge Route. This action removes the circuit breaker configuration that protects upstream services from being overwhelmed by automatically rejecting requ - ngrok_delete_edge_route_compression_module(id: string, edge_id: string) — Delete the compression module from an HTTPS edge route. Use this to remove compression settings from a specific route within an HTTPS edge configuration. - ngrok_delete_edge_route_request_headers_module(id: string, edge_id: string) — Delete the request headers module from an HTTPS edge route. This removes any custom request header modifications configured for the specified route. Use this action when you need to stop modifying req - ngrok_delete_edge_route_response_headers_module(id: string, edge_id: string) — Delete the response headers module from an HTTPS edge route. Use when you need to remove response header manipulation from a specific route. - ngrok_delete_edge_route_saml_module(id: string, edge_id: string) — Delete the SAML module configuration from an HTTPS edge route. This action removes SAML authentication from the specified route, allowing traffic to pass through without SAML validation. The operation - ngrok_delete_edge_route_user_agent_filter_module(id: string, edge_id: string) — Delete the user agent filter module from an HTTPS edge route. Use this to remove user agent filtering from a specific route within an HTTPS edge configuration. - ngrok_delete_edge_route_webhook_verification_module(id: string, edge_id: string) — Delete the webhook verification module from an HTTPS edge route. This removes webhook signature verification configured for the specified route. Use this action when you need to stop verifying webhook - ngrok_delete_edge_route_websocket_tcp_converter_module(id: string, edge_id: string) — Delete the WebSocket TCP converter module from an HTTPS edge route. Use when you need to remove WebSocket to TCP conversion functionality from a specific route. The operation is idempotent. - ngrok_delete_endpoint(id: string) — Delete an endpoint by ID. This action permanently removes the specified endpoint from your ngrok account. Currently only available for cloud endpoints. Cloud endpoints are those created through the ng - ngrok_delete_event_source(type: string, subscription_id: string) — Delete an event source from an event subscription. This removes a specific event type from the subscription, so the subscription will no longer trigger for that event. Event sources define which types - ngrok_delete_event_subscription(id: string) — Delete an event subscription by ID. This action permanently removes the specified event subscription from your ngrok account. Event subscriptions allow you to receive notifications when specific event - ngrok_delete_https_edge(id: string) — Delete an HTTPS edge by ID. This action permanently removes the specified HTTPS edge configuration from your ngrok account. HTTPS edges define how ngrok handles HTTPS traffic for your domains. Once de - ngrok_delete_https_edge_route(id: string, edge_id: string) — Delete an HTTPS edge route by ID. This action permanently removes the specified route from an HTTPS edge configuration in your ngrok account. HTTPS edge routes define how traffic is handled for specif - ngrok_delete_reserved_domain_certificate(id: string) — Detach the certificate attached to a reserved domain. Use when you need to remove a certificate from a reserved domain without deleting the domain itself. - ngrok_delete_reserved_domain_certificate_management_policy(id: string) — Detach the certificate management policy from a reserved domain. Use this action when you need to remove certificate management configuration from a domain. - ngrok_delete_secret(id: string) — Delete a vault secret by ID. This action permanently removes the specified secret from your ngrok vault. - ngrok_delete_ssh_credentials(id: string) — Delete an SSH credential by ID. This action permanently removes the specified SSH credential from your ngrok account. SSH credentials are used to authenticate SSH connections through ngrok. Once delet - ngrok_delete_vault(id: string) — Delete a vault by ID. This action permanently removes the specified vault from your ngrok account. - ngrok_get_api_key(id: string) — Get the details of an API key by ID. Use this tool to retrieve information about a specific ngrok API key, including its description, metadata, and creation timestamp. - ngrok_get_credentials(id: string) — Tool to retrieve detailed information about a tunnel authtoken credential by ID. Use when you need to view the details, metadata, or ACL rules of an existing credential. Note: The token field will be - ngrok_get_edge_route_backend_module(id: string, edge_id: string) — Retrieves the backend module configuration for an HTTPS edge route. Backend modules define where traffic is routed after passing through the edge route's modules. Use this to verify backend configurat - ngrok_get_edge_route_circuit_breaker_module(id: string, edge_id: string) — Tool to retrieve the circuit breaker module configuration for a specific HTTPS edge route. Use when you need to check the current circuit breaker settings, verify protection parameters, or audit traff - ngrok_get_edge_route_compression_module(id: string, edge_id: string) — Retrieves the compression module configuration for a specific HTTPS edge route. Use this to check if compression is enabled for the route. - ngrok_get_edge_route_ip_restriction_module(id: string, edge_id: string) — Retrieves the IP restriction module configuration for a specific HTTPS edge route. Use this to check which IP policies are applied to control access to the route. - ngrok_get_edge_route_oidc_module(id: string, edge_id: string) — Retrieves the OIDC (OpenID Connect) module configuration for a specific HTTPS edge route. OIDC modules enable authentication via OpenID Connect providers on your edge routes. This action fetches the c - ngrok_get_edge_route_request_headers_module(id: string, edge_id: string) — Retrieves the request headers module configuration for a specific HTTPS edge route. The request headers module allows you to add and remove headers from HTTP requests before they are sent to your upst - ngrok_get_edge_route_response_headers_module(id: string, edge_id: string) — Get the response headers module configuration for an HTTPS edge route. Use when you need to retrieve the current response header manipulation settings for a specific route. - ngrok_get_edge_route_saml_module(id: string, edge_id: string) — Retrieves the SAML authentication module configuration for a specific HTTPS edge route. Use this to view SAML settings including identity provider configuration, session timeouts, and authorized group - ngrok_get_edge_route_traffic_policy(id: string, edge_id: string) — Retrieves the Traffic Policy module configuration for a specific HTTPS edge route. Traffic policies define how ngrok handles requests and responses on the edge route. Use this to inspect current traff - ngrok_get_edge_route_user_agent_filter_module(id: string, edge_id: string) — Retrieves the user agent filter module configuration for a specific HTTPS edge route. Use this to view filtering rules that control access based on User-Agent headers. - ngrok_get_edge_route_webhook_verification_module(id: string, edge_id: string) — Retrieves the webhook verification module configuration for an HTTPS edge route. Webhook verification modules validate incoming webhooks from supported providers. Use this to verify webhook configurat - ngrok_get_edge_route_websocket_tcp_converter_module(id: string, edge_id: string) — Retrieves the WebSocket TCP Converter module configuration for a specific HTTPS edge route. This module converts WebSocket connections to TCP streams. Use this to inspect whether the converter is enab - ngrok_get_endpoint(id: string) — Get the status of an endpoint by ID. Use this tool to retrieve detailed information about a specific ngrok endpoint, including its configuration, URLs, and associated resources. - ngrok_get_event_source(type: string, subscription_id: string) — Get an event source by type for a specific event subscription. Use this tool to retrieve details about a specific event source type that triggers notifications for an event subscription. - ngrok_get_https_edge(id: string) — Get the details of an HTTPS edge by ID. Use this to retrieve information about a specific HTTPS edge configuration including its hostports, TLS settings, and routes. - ngrok_get_https_edge_mutual_tls_module(id: string) — Retrieves the mutual TLS module configuration for an HTTPS edge. Use this to check if mutual TLS is enabled and which certificate authorities are configured for client certificate validation. - ngrok_get_https_edge_route(id: string, edge_id: string) — Retrieves detailed information about a specific HTTPS edge route by its ID. HTTPS edge routes define how ngrok routes traffic based on path matching rules and apply various modules like authentication - ngrok_get_ip_restrictions(restriction_id: string) — Retrieves detailed information about a specific IP restriction by its ID. IP restrictions control which IP addresses can access various ngrok resources (dashboard, API, agents, or endpoints). This act - ngrok_get_reserved_domain(id: string) — Get the details of a reserved domain by ID. Use this to retrieve information about a specific reserved domain including its hostname, certificate configuration, and DNS settings. - ngrok_get_secret(id: string) — Tool to retrieve detailed information about a vault secret by ID. Use when you need to view the metadata, description, or vault information for an existing secret. - ngrok_get_secrets_by_vault(id: string, limit?: integer, before_id?: string) — Tool to get all secrets in a vault by vault ID. Use this to retrieve the list of secrets stored in a specific ngrok vault. Supports pagination for large result sets. - ngrok_get_ssh_credentials(id: string) — Tool to retrieve detailed information about an SSH credential by ID. Use when you need to view the details, public key, metadata, or ACL rules of an existing SSH credential. - ngrok_get_vault(id: string) — Get the details of a vault by ID. Use this tool to retrieve information about a specific ngrok vault, including its name, description, metadata, and timestamps. - ngrok_list_agent_ingresses(limit?: integer, filter?: string, before_id?: string) — List all Agent Ingresses owned by this account. Agent Ingresses are used to configure custom domains for ngrok agent connections, allowing you to use your own domain instead of the default ngrok domai - ngrok_list_api_keys(limit?: integer, before_id?: string) — This tool lists all API keys owned by the user. The API keys are used to authenticate API requests to ngrok's REST API. The endpoint returns a paginated list of API keys. - ngrok_list_bot_users(limit?: integer, before_id?: string) — Tool to list all bot users on this ngrok account. Use when you need to retrieve all bot users with their status and metadata. - ngrok_list_cert_authorities(limit?: integer, filter?: string, before_id?: string) — List all certificate authorities on this account. Certificate authorities are x509 certificates used to sign other x509 certificates. Supports pagination and filtering via CEL expressions. - ngrok_list_credentials(limit?: string, filter?: string, before_id?: string) — List all tunnel authtoken credentials on the ngrok account. Use when you need to view all credentials that can authenticate ngrok agents and start tunnel sessions. - ngrok_list_endpoints(limit?: integer, filter?: string, before_id?: string) — List all active endpoints on the ngrok account. This tool will list all active endpoints on the ngrok account, providing visibility into running tunnels and endpoints. It requires no input parameters - ngrok_list_event_destinations(limit?: string, filter?: string, before_id?: string) — List all Event Destinations on the ngrok account. Event Destinations define where and how ngrok should send event data (e.g., to AWS, Datadog, Azure). Use this to view configured event streaming targe - ngrok_list_event_subscription_sources(subscription_id: string) — Tool to list the types for which this event subscription will trigger. Use when you need to see all event sources configured for a specific event subscription. - ngrok_list_event_subscriptions(limit?: string, filter?: string, before_id?: string) — List all event subscriptions on the ngrok account. Event subscriptions allow you to be notified when specific events occur in your ngrok account. Use this to view all configured event subscriptions. - ngrok_list_failover_backends(limit?: integer, before_id?: string) — List all failover backends on this account. Failover backends define failover behavior within a list of referenced backends where traffic is sent to the first backend, and if that backend is offline, - ngrok_list_http_response_backends(limit?: integer, before_id?: string) — List all HTTP response backends on the account. Use this to retrieve all configured static HTTP response backends that return fixed responses with specific status codes. - ngrok_list_https_edges(limit?: integer, before_id?: string) — Lists all HTTPS Edges in your ngrok account. HTTPS edges are configurations that tell ngrok how to handle HTTPS traffic. The action returns a paginated list of all HTTPS edges associated with your acc - ngrok_list_ip_policies(limit?: string, filter?: string, before_id?: string) — List all IP policies on this account. IP policies are reusable groups of CIDR ranges with an allow or deny action that can be attached to endpoints via the Endpoint Configuration IP Policy module. Sup - ngrok_list_ip_policy_rules(limit?: integer, before_id?: string) — This tool lists all IP policy rules associated with your ngrok account. It retrieves detailed information including rule id, creation timestamp, description, metadata, CIDR, the associated IP policy, - ngrok_list_ip_restrictions(limit?: integer, filter?: string, before_id?: string) — Lists all IP restrictions configured on the ngrok account. IP restrictions control which source CIDR blocks are permitted to access specific ngrok account features such as the dashboard, API, agents, - ngrok_list_reserved_addrs(limit?: string, filter?: string, before_id?: string) — List all reserved addresses on this account. Use this to retrieve all TCP addresses that have been reserved for listening to traffic on your ngrok account. - ngrok_list_reserved_domains(limit?: integer, filter?: string, before_id?: string) — List all reserved domains on this account. Use this to retrieve all hostnames that have been reserved for listening to HTTP, HTTPS, and TLS traffic on your ngrok account. - ngrok_list_service_users(limit?: string, filter?: string, before_id?: string) — Tool to list all service users on this ngrok account. Use when you need to retrieve all service users with their status and metadata. - ngrok_list_ssh_certificate_authorities(limit?: string, filter?: string, before_id?: string) — List all SSH Certificate Authorities on this account. SSH Certificate Authorities are pairs of SSH certificates and their private keys used to sign other SSH host and user certificates. Supports pagin - ngrok_list_ssh_credentials(limit?: integer, filter?: string, before_id?: string) — List all SSH credentials on the ngrok account. Use when you need to view all SSH public keys that can authenticate to start SSH tunnels. - ngrok_list_ssh_host_certificates(limit?: integer, before_id?: string) — List all SSH Host Certificates issued on this account. SSH Host Certificates are used to sign SSH host keys and authenticate SSH servers. Supports pagination for efficient retrieval of large result se - ngrok_list_ssh_user_certificates(limit?: string, before_id?: string) — List all SSH user certificates on the ngrok account. Use when you need to view all SSH certificates that authenticate SSH clients to SSH servers. - ngrok_list_static_backends(limit?: integer, before_id?: string) — List all static backends on the account. Static backends forward traffic to TCP addresses (hostname and port) that are reachable on the public internet. - ngrok_list_tcp_edges(limit?: string, before_id?: string) — Lists all TCP Edges in your ngrok account. TCP edges are configurations that tell ngrok how to handle TCP traffic. The action returns a paginated list of all TCP edges associated with your account. - ngrok_list_tls_certificates(limit?: integer, filter?: string, before_id?: string) — List all TLS certificates on the ngrok account. Use when you need to retrieve information about uploaded TLS certificates including validity, domains, and metadata. - ngrok_list_tls_edges(limit?: integer, before_id?: string) — Lists all TLS Edges in your ngrok account. TLS edges are configurations that tell ngrok how to handle TLS traffic. The action returns a paginated list of all TLS edges associated with your account. - ngrok_list_tunnel_sessions(limit?: string, filter?: string, before_id?: string) — List all online tunnel sessions running on this account. Tunnel sessions represent instances of ngrok agents or SSH reverse tunnel sessions connected to the ngrok service. Each tunnel session can incl - ngrok_list_tunnels(limit?: integer, before_id?: string) — List all active tunnels in the ngrok account. This tool lists all active tunnels in the ngrok account, providing details such as tunnel ID, public URL, start time, protocol, configuration details, and - ngrok_list_vault_secrets(limit?: integer, filter?: string, before_id?: string) — List all vault secrets owned by the ngrok account. Use when you need to view all secrets stored in vaults for traffic policy configurations. - ngrok_list_vaults(limit?: integer, filter?: string, before_id?: string) — List all vaults owned by the ngrok account. Vaults are used for securely storing and managing sensitive data such as secrets, credentials, and tokens. - ngrok_list_weighted_backends(limit?: string, before_id?: string) — List all weighted backends on the ngrok account. Weighted backends balance traffic among referenced backends proportionally based on their assigned weights. - ngrok_replace_edge_route_circuit_breaker_module(id: string, edge_id: string, enabled?: boolean, num_buckets?: integer, rolling_window?: integer, tripped_duration?: integer, volume_threshold?: integer, error_threshold_percentage?: number) — Replaces the circuit breaker module configuration on an HTTPS edge route. Circuit breakers protect upstream applications by rejecting traffic when error rates exceed thresholds, giving systems time to - ngrok_replace_edge_route_compression_module(id: string, edge_id: string, enabled: boolean) — Replaces the compression module configuration for an HTTPS edge route. Use this when you need to enable or disable automatic HTTP response compression for a specific route. - ngrok_replace_edge_route_request_headers_module(add?: object, remove?: string[], edge_id: string, enabled?: boolean, route_id: string) — Replaces the request headers module configuration for an HTTPS edge route. Use this to modify HTTP request headers before they are sent to your upstream application server. You can add new headers or - ngrok_replace_edge_route_response_headers_module(id: string, add?: object, remove?: string[], edge_id: string, enabled?: boolean) — Replaces the response headers module configuration for an HTTPS edge route. Use this to control which HTTP headers are added to or removed from responses sent to clients. This allows customization of - ngrok_replace_edge_route_traffic_policy(id: string, value: string, edge_id: string, enabled?: boolean) — Replaces the traffic policy module on an HTTPS edge route. Traffic policies allow you to control and modify HTTP traffic flowing through your ngrok endpoints. Use this action when you need to update o - ngrok_replace_edge_route_user_agent_filter_module(id: string, deny?: string[], allow?: string[], edge_id: string, enabled?: boolean) — Replaces the user agent filter module configuration for an HTTPS edge route. Use this to control which User-Agent strings are allowed or denied access to your route based on regex patterns. Denied pat - ngrok_replace_edge_route_webhook_verification_module(id: string, secret?: string, edge_id: string, enabled?: boolean, provider?: string) — Replaces the webhook verification module configuration for an HTTPS edge route. Use this to configure ngrok to automatically verify webhook signatures from supported providers. This ensures that only - ngrok_update_api_key(id: string, metadata?: string, description?: string) — Updates attributes of an API key by ID. Use this to modify the description or metadata of an existing API key without changing its token or credentials. - ngrok_update_credentials(id: string, acl?: string[], metadata?: string, description?: string) — Tool to update attributes of a tunnel authtoken credential by ID. Use when you need to modify the description, metadata, or ACL rules of an existing credential. - ngrok_update_endpoint(id: string, url?: string, bindings?: string[], metadata?: string, description?: string, traffic_policy?: string, pooling_enabled?: boolean) — Tool to update an Endpoint by ID, currently available only for cloud endpoints. Use this to modify the description, metadata, traffic policy, bindings, or other attributes of an existing endpoint. - ngrok_update_event_subscription(id: string, sources?: object[], metadata?: string, description?: string, destination_ids?: string[]) — Tool to update attributes of an event subscription by ID. Use when you need to modify the description, metadata, destination IDs, or sources of an existing event subscription. - ngrok_update_https_edge_route(id: string, oidc?: object, saml?: object, match?: string, oauth?: object, backend?: object, edge_id: string, metadata?: string, match_type?: string, compression?: object, description?: string, ip_restriction?: object, traffic_policy?: object, circuit_breaker?: object, request_headers?: object, response_headers?: object, user_agent_filter?: object, webhook_verification?: object, websocket_tcp_converter?: object) — Tool to update an HTTPS edge route by ID. Use when you need to modify route configuration for HTTPS traffic handling. Updates can include match patterns, module settings, and metadata. Unspecified mod - ngrok_update_reserved_domain(id: string, metadata?: string, description?: string, resolves_to?: object[], certificate_id?: string, certificate_management_policy?: object) — Tool to update the attributes of a reserved domain by ID. Use this to modify the description, metadata, certificate configuration, or DNS resolver targets of an existing reserved domain. - ngrok_update_secret(id: string, name?: string, value?: string, metadata?: string, description?: string) — Tool to update a vault secret by ID. Use when you need to modify the name, description, metadata, or value of an existing secret in the ngrok vault. - ngrok_update_ssh_credential(id: string, acl?: string[], metadata?: string, description?: string) — Tool to update attributes of an SSH credential by ID. Use when you need to modify the description, metadata, or ACL rules of an existing SSH credential. - ngrok_update_vault(id: string, name?: string, metadata?: string, description?: string) — Tool to update attributes of a vault by ID. Use when you need to modify the name, description, or metadata of an existing vault. ## Example prompts - "What can I do in Ngrok?" - "Show me a summary of my Ngrok account" ## Links Docs: https://mcp.ai/docs/mcps/ngrok Website: https://mcp.ai/mcps/ngrok