{"openapi":"3.1.0","info":{"title":"Linode Kubernetes (BYOK) API","version":"0.1.0","description":"Linode Kubernetes (BYOK) lets an AI assistant read your own Linode Kubernetes data through the Linode Kubernetes API with a key you supply (personal access token (read-only scopes are enough)). Read-only: 9 tools (list_clusters, get_cluster, list_node_pools, get_node_pool, list_api_endpoints, get_control_plane_acl, list_kubernetes_versions, list_tier_versions, list_lke_pricing). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-linode-lke.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-linode-lke/docs"},"termsOfService":"https://connectorbay.com/byok-linode-lke/terms"},"servers":[{"url":"https://byok-linode-lke.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-linode-lke/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_clusters":{"post":{"operationId":"list_clusters","summary":"List LKE Kubernetes clusters with region, status, tier, Kubernetes version, high-availability flag and tags. Use for \"Wh","description":"List LKE Kubernetes clusters with region, status, tier, Kubernetes version, high-availability flag and tags. Use for \"Which Kubernetes clusters do I run on Linode and what version are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"title":"list_clustersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_cluster":{"post":{"operationId":"get_cluster","summary":"Get one LKE cluster with region, status, tier, Kubernetes version, control plane settings and VPC. Use for \"Is LKE clust","description":"Get one LKE cluster with region, status, tier, Kubernetes version, control plane settings and VPC. Use for \"Is LKE cluster 1234 high availability and what version does it run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Numeric id of the LKE cluster, as shown by list_clusters.","minimum":1,"title":"Cluster Id","type":"integer"}},"required":["cluster_id"],"title":"get_clusterArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_node_pools":{"post":{"operationId":"list_node_pools","summary":"List the node pools of an LKE cluster with plan type, node count, autoscaler limits, Kubernetes version and node status.","description":"List the node pools of an LKE cluster with plan type, node count, autoscaler limits, Kubernetes version and node status. Use for \"How many nodes and which plan does each pool of cluster 1234 use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Numeric id of the LKE cluster, as shown by list_clusters.","minimum":1,"title":"Cluster Id","type":"integer"},"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"required":["cluster_id"],"title":"list_node_poolsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_node_pool":{"post":{"operationId":"get_node_pool","summary":"Get one node pool of an LKE cluster with its nodes, plan type, autoscaler, disks, labels and taints. Use for \"What are t","description":"Get one node pool of an LKE cluster with its nodes, plan type, autoscaler, disks, labels and taints. Use for \"What are the nodes in pool 55 of cluster 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Numeric id of the LKE cluster, as shown by list_clusters.","minimum":1,"title":"Cluster Id","type":"integer"},"pool_id":{"description":"Numeric id of the node pool, as shown by list_node_pools.","minimum":1,"title":"Pool Id","type":"integer"}},"required":["cluster_id","pool_id"],"title":"get_node_poolArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_api_endpoints":{"post":{"operationId":"list_api_endpoints","summary":"List the Kubernetes API server endpoints of an LKE cluster. Use for \"What is the API endpoint of LKE cluster 1234\".","description":"List the Kubernetes API server endpoints of an LKE cluster. Use for \"What is the API endpoint of LKE cluster 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Numeric id of the LKE cluster, as shown by list_clusters.","minimum":1,"title":"Cluster Id","type":"integer"},"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"required":["cluster_id"],"title":"list_api_endpointsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_control_plane_acl":{"post":{"operationId":"get_control_plane_acl","summary":"Show the control plane access list of an LKE cluster: whether it is enabled and the allowed IPv4 and IPv6 ranges. Use fo","description":"Show the control plane access list of an LKE cluster: whether it is enabled and the allowed IPv4 and IPv6 ranges. Use for \"Which IP ranges may reach the control plane of cluster 1234\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cluster_id":{"description":"Numeric id of the LKE cluster, as shown by list_clusters.","minimum":1,"title":"Cluster Id","type":"integer"}},"required":["cluster_id"],"title":"get_control_plane_aclArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_kubernetes_versions":{"post":{"operationId":"list_kubernetes_versions","summary":"List the Kubernetes versions available for standard LKE clusters. Use for \"Which Kubernetes versions can I deploy on Lin","description":"List the Kubernetes versions available for standard LKE clusters. Use for \"Which Kubernetes versions can I deploy on Linode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"title":"list_kubernetes_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_tier_versions":{"post":{"operationId":"list_tier_versions","summary":"List the Kubernetes versions available for one LKE tier (standard or enterprise). Use for \"Which Kubernetes versions doe","description":"List the Kubernetes versions available for one LKE tier (standard or enterprise). Use for \"Which Kubernetes versions does the LKE enterprise tier offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"tier":{"description":"LKE tier name.","enum":["standard","enterprise"],"title":"Tier","type":"string"},"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"required":["tier"],"title":"list_tier_versionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_lke_pricing":{"post":{"operationId":"list_lke_pricing","summary":"List LKE add-on prices, such as the high-availability control plane, with hourly and monthly cost and per-region prices.","description":"List LKE add-on prices, such as the high-availability control plane, with hourly and monthly cost and per-region prices. Use for \"How much does the LKE high availability control plane cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page_size":{"anyOf":[{"maximum":500,"minimum":25,"type":"integer"},{"type":"null"}],"default":100,"description":"How many results to return (25 to 500).","title":"Page Size"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; 'pages' in the answer is the total number of pages.","title":"Page"}},"title":"list_lke_pricingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}