mcp:readreaches every read-only tool and nothing else, so a read token changes nothing.mcp:writeadds the mutating tools - everything markedmcp:writebelow, including the ephemeral workspace operations and throwaway pull request demos. The in-product Ask mode allows those as safe creations, but over MCP they needmcp:write. Write access implies the read surface.
cluster_id argument (a UUID); call list_clusters first to discover IDs. Ankra verifies the cluster belongs to the token’s organisation before dispatch. Tools marked No do not require cluster_id. Many of them still act on one cluster, and take an optional cluster_id or cluster_name selector that falls back to the cluster selected for the session (for example get_node_usage and roll_cluster_to_version). The rest operate at the organisation level.
Portal links: list_clusters and get_cluster_details return each cluster’s portal_url, and get_portal_url builds the portal link for any other page, so a client can hand you a clickable link to what it is describing. See Portal URLs.
Creating a credential is deliberately not available over MCP or chat. Creating one would mean passing the secret itself as a tool argument, and Ankra refuses mutating tool calls whose parameters contain literal secrets. Create credentials in the portal or CLI; over MCP you can list and inspect credentials (secret fields are always redacted), validate names, delete unused credentials, and plan or apply a GitHub credential rotation.
Clusters & Kubernetes
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_clusters | mcp:read | No | List every cluster in the organisation with state, environment, Kubernetes version, and its portal_url |
get_cluster_details | mcp:read | No | Detailed information about one cluster by name or ID, with its portal_url |
get_cluster_attention_summary | mcp:read | No | The exact signals behind a cluster’s Needs Attention badge |
get_cluster_status | mcp:read | Yes | Cluster health overview |
get_cluster_snapshot | mcp:read | Yes | Full cluster overview in a single call |
get_cluster_cost | mcp:read | Yes | Estimated cloud infrastructure cost for the cluster |
get_stack_cost | mcp:read | Yes | Estimated cost attributed to one Stack, derived from its namespaces |
get_security_reports | mcp:read | Yes | Trivy Operator image-vulnerability summary |
get_compliance_reports | mcp:read | Yes | Trivy benchmark checks, remediation, passed controls, and configuration-audit summary |
get_cluster_bastion | mcp:read | Yes | Public IP of the Ankra-managed bastion/gateway host |
list_namespaces | mcp:read | Yes | List namespaces with their status |
get_resource_quotas | mcp:read | Yes | Resource quotas and current usage per namespace |
list_recent_executions | mcp:read | Yes | Recent platform executions (deployments, write operations) |
get_execution_details | mcp:read | Yes | Full details for one execution, including steps and error excerpts |
wait_for_execution | mcp:read | Yes | Block up to 50 seconds for an execution to settle, then return its details, or timed_out: true with the last observed state |
cluster_query | mcp:read | Yes | Structured lookup against the live cluster resource index |
cluster_search | mcp:read | Yes | Full-text search over the live cluster resource index |
cluster_describe | mcp:read | Yes | Full body of one named resource from the live cluster index |
get_pods | mcp:read | Yes | Pod status, restarts, and placement, with namespace/name/label filters |
get_pod_logs | mcp:read | Yes | Logs from a specific pod |
get_deployments | mcp:read | Yes | Deployment information |
get_statefulsets | mcp:read | Yes | StatefulSet information |
get_daemonsets | mcp:read | Yes | DaemonSet information |
get_services | mcp:read | Yes | Service information |
get_ingresses | mcp:read | Yes | Ingress information |
get_events | mcp:read | Yes | Kubernetes events (Normal/Warning) |
get_nodes | mcp:read | Yes | Node information |
get_configmaps | mcp:read | Yes | ConfigMap information |
get_secrets | mcp:read | Yes | Secret metadata (never secret values) |
get_jobs | mcp:read | Yes | Job information |
get_cronjobs | mcp:read | Yes | CronJob information |
get_pvcs | mcp:read | Yes | PersistentVolumeClaim information |
get_cluster_role_bindings | mcp:read | Yes | ClusterRoleBindings and RoleBindings for RBAC analysis |
describe_resource | mcp:read | Yes | Detailed YAML/JSON for one Kubernetes resource |
describe_resources | mcp:read | Yes | Batch-fetch multiple Kubernetes resources in one call |
restart_deployment | mcp:write | Yes | Rolling restart of a deployment |
scale_deployment | mcp:write | Yes | Scale a deployment to a replica count |
scale_statefulset | mcp:write | Yes | Scale a StatefulSet to a replica count |
delete_pod | mcp:write | Yes | Delete a specific pod |
delete_resource | mcp:write | Yes | Delete any Kubernetes resource, including custom resources |
apply_manifest | mcp:write | Yes | Apply a Kubernetes manifest to create or update resources |
patch_resource | mcp:write | Yes | Patch a Kubernetes resource (strategic merge or JSON patch) |
add_helm_registry | mcp:write | No | Add a Helm chart registry to the organisation’s catalog |
cancel_execution_step | mcp:write | No | Cancel one step of a running execution while the rest continues |
cancel_execution | mcp:write | No | Cancel a running platform execution; a mid-flight cancellation can leave the resource between versions until the next reconcile |
retry_execution | mcp:write | No | Retry a terminal (failed, cancelled, timeout) execution from the start with its original payload |
reconcile_cluster | mcp:write | No | Re-render every stack member against the committed definitions and variables and re-apply drift (takes a cluster_id argument) |
get_node_usage | mcp:read | No | Live CPU and memory per node from metrics-server, with allocatable capacity and percentages (never a cached answer) |
get_pod_usage | mcp:read | No | Live CPU and memory per pod from metrics-server, optionally per container, filtered by namespace |
get_cluster_agent_status | mcp:read | No | The Ankra agent’s online state, version against the latest release, upgrade posture and last check-in |
upgrade_cluster_agent | mcp:write | No | Upgrade the agent to the latest release now instead of waiting for the fleet rollout (agents.manage) |
list_helm_releases | mcp:read | No | Every Helm release installed on the cluster, Ankra-managed or not, for drift detection |
get_cluster_dns_zone | mcp:read | No | The cluster’s generated DNS zone and the public domain hostnames publish under |
get_sops_config | mcp:read | No | Whether SOPS is enabled and the AGE public key secrets are encrypted with |
resize_bastion | mcp:write | No | Resize the bastion of an Ankra-provisioned cluster (clusters.write) |
resync_cluster_ssh_keys | mcp:write | No | Re-register the cluster’s SSH key with its provider (clusters.write) |
cordon_node | mcp:write | Yes | Mark one node unschedulable so no new pods land on it, while running pods keep running |
uncordon_node | mcp:write | Yes | Make a cordoned node schedulable again, the reversal of cordon_node |
Stacks
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_stacks | mcp:read | Yes | List the cluster’s Stacks with their add-ons, manifests, and state |
get_stack_details | mcp:read | Yes | One Stack in full, including add-on and manifest configuration |
get_stack_history | mcp:read | Yes | Version history: who changed what and when, per resource |
get_stack_deployments | mcp:read | Yes | Deployment status grouped per resource, with failure detail |
export_cluster_iac | mcp:read | Yes | Export the cluster’s Stacks as an Infrastructure-as-Code YAML document |
validate_stack | mcp:read | Yes | Validate a Stack specification without applying it |
list_available_charts | mcp:read | No | Browse the Helm chart catalog with search and category filters |
create_stack | mcp:write | Yes | Create a new Stack on the cluster |
update_stack | mcp:write | Yes | Update a Stack’s add-ons, manifests, or configuration |
rename_stack | mcp:write | Yes | Rename a Stack |
redeploy_stack | mcp:write | Yes | Re-deploy a Stack to reconcile it onto the cluster |
clone_stack | mcp:write | Yes | Clone a Stack within or across clusters |
addon_install | mcp:write | Yes | Install a chart from the catalog into a Stack |
delete_stack | mcp:write | Yes | Delete an entire Stack and everything it deployed |
uninstall_addon_from_stack | mcp:write | Yes | Uninstall one add-on from a deployed Stack |
disconnect_manifest_from_stack | mcp:write | Yes | Remove a manifest from a deployed Stack |
list_stack_profiles | mcp:read | No | List reusable stack profiles, including public ones |
get_stack_profile | mcp:read | No | A stack profile’s metadata, version history, and contents |
create_stack_profile | mcp:write | Yes | Save a deployed Stack as a new reusable stack profile |
save_stack_profile_version | mcp:write | Yes | Snapshot a deployed Stack as a new version of an existing profile |
update_stack_profile | mcp:write | Yes | Update a stack profile’s metadata |
delete_stack_profile | mcp:write | Yes | Delete a stack profile and all its versions |
instantiate_stack_profile | mcp:write | Yes | Instantiate a stack profile onto the cluster |
validate_cluster_manifest | mcp:read | No | Validate an ImportCluster YAML the way ankra cluster validate and the API do, without changing anything |
apply_cluster_manifest | mcp:write | Yes | Apply an ImportCluster YAML declaratively: the cluster’s definition is replaced by the manifest (stacks.write) |
stage_cluster_manifest_drafts | mcp:write | Yes | Stage every stack in an ImportCluster YAML as a draft for a person to promote |
roll_cluster_to_version | mcp:write | No | Roll the whole cluster definition back to an earlier resource version (clusters.operate) |
export_stack_profile_iac | mcp:read | No | Export a published profile version as ClusterInfrastructureAsCode YAML |
import_stack_profile | mcp:write | No | Create a stack profile from a ClusterInfrastructureAsCode YAML document, publishing its first version, or open it as a builder draft for human review with as_draft |
apply_stack_changes | mcp:write | Yes | Apply the current stack draft to the cluster, preserving items absent from the draft unless replace_missing is set |
get_stack_profile_draft | mcp:read | No | Read a stack profile builder draft with its contents, parameters and publish validation verdict |
create_stack_profile_draft | mcp:write | No | Start a stack profile builder draft for a new profile, or for a new version of an existing one, without a cluster |
add_addon_to_stack_profile_draft | mcp:write | No | Add a Helm chart add-on to a stack profile builder draft, with ANKRA_SECRET_PARAMETER standing in for any secret value |
update_addon_in_stack_profile_draft | mcp:write | No | Change an add-on’s Helm values, chart version, namespace or parents inside a stack profile builder draft |
remove_addon_from_stack_profile_draft | mcp:write | No | Remove an add-on from a stack profile builder draft and clean up references to it |
add_manifest_to_stack_profile_draft | mcp:write | No | Add a raw Kubernetes manifest to a stack profile builder draft, with real secret values rejected |
remove_manifest_from_stack_profile_draft | mcp:write | No | Remove a manifest from a stack profile builder draft and clean up references to it |
publish_stack_profile_draft | mcp:write | No | Validate a stack profile builder draft and publish it as a new profile or the next version of an existing one |
Add-ons
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_addons | mcp:read | Yes | List installed add-ons with sync status, health, and version |
get_addon_details | mcp:read | Yes | One add-on in detail, including its resource tree |
get_addon_status | mcp:read | Yes | Status of the add-ons Ankra manages on the cluster |
get_addon_history | mcp:read | Yes | Deployment history: previous versions and sync operations |
get_addon_settings | mcp:read | Yes | An add-on’s settings (chart version, namespace, sync options) |
get_addon_configuration | mcp:read | Yes | An add-on’s Helm values, with secret values redacted |
sync_addon | mcp:write | Yes | Trigger a sync to apply pending changes from the source repository |
rollback_addon | mcp:write | Yes | Roll an add-on back to a previous deployment version |
update_addon_settings | mcp:write | Yes | Update an add-on’s settings |
update_addon_configuration | mcp:write | Yes | Update an add-on’s Helm values |
list_helm_registries | mcp:read | No | The organisation’s connected Helm registries with sync state (credentials never returned) |
get_helm_registry | mcp:read | No | One registry with a page of the charts it holds |
list_helm_registry_sync_jobs | mcp:read | No | A registry’s sync jobs, to see whether a missing chart simply has not synced |
list_helm_registry_credentials | mcp:read | No | Stored registry credentials by name and id only |
sync_helm_registry | mcp:write | No | Re-read a registry’s index now (helm.manage) |
get_chart_default_values | mcp:read | No | A chart version’s default values.yaml |
render_chart_template | mcp:read | No | Render a chart version’s manifests server-side like helm template, with optional values |
get_chart_details | mcp:read | No | Detailed chart information at a repository URL: maintainers, versions, app versions |
get_addon_security_updates | mcp:read | Yes | Installed add-ons whose running version is covered by an upstream security advisory with a fix, and the chart version to upgrade to |
list_chart_versions | mcp:read | Yes | Every catalog version of one Helm chart, newest first, with the registries that carry it |
Applications
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_applications | mcp:read | No | List the organisation’s applications with state and analysis status |
get_application | mcp:read | No | One application’s repository, artifacts, pull request, and lifecycle state |
get_application_jobs | mcp:read | No | The platform jobs behind an application’s analysis and generation |
get_application_deployments | mcp:read | No | Where an application is deployed and its readiness |
list_application_installations | mcp:read | No | List the installations of an application across clusters |
list_application_workflow_runs | mcp:read | No | CI workflow runs for an application’s repository |
get_application_workflow_run_jobs | mcp:read | No | Jobs and step detail for one application workflow run |
create_application | mcp:write | No | Connect a repository as a new application and start analysis |
deploy_application | mcp:write | No | Deploy an application onto a cluster as part of a Stack |
retry_application | mcp:write | No | Re-run analysis and generation after a failure |
reconcile_application | mcp:write | No | Re-evaluate an application against its repository and refresh its state |
rerun_application_workflow | mcp:write | No | Re-run a CI workflow run for an application |
delete_application | mcp:write | No | Disconnect an application from Ankra |
get_application_setup_proposal | mcp:read | No | The generated setup: detected stack, setup PR, database, and the deploy contract with its negotiable options |
revise_application_setup | mcp:write | No | Change a recorded deploy-contract default; commits the revised contract to the setup branch |
get_application_publish_readiness | mcp:read | No | Whether the repository can publish images - registry, Actions secrets, publish step, and an actually-pushed image |
list_application_env_secrets | mcp:read | No | Stored environment-secret keys (values are never returned) |
set_application_env_secret | mcp:write | No | Store one environment-secret value (API-token only - chat surfaces never carry secret values) |
delete_application_env_secret | mcp:write | No | Remove one stored environment-secret key |
apply_application_env_secrets | mcp:write | No | Seal the stored secrets into every deployment and roll the workloads |
get_application_auto_deploy | mcp:read | No | Whether push-to-deploy is enabled and the build watermark it converges from |
set_application_auto_deploy | mcp:write | No | Turn push-to-deploy on or off (enabling stamps the current build; a manual rollback is never fought) |
get_application_container_security | mcp:read | No | Image CVEs from the pipeline’s scans plus Dependabot and OSV |
get_application_code_security | mcp:read | No | SAST and IaC findings from the pipeline’s scan artifacts |
get_preview_domain | mcp:read | No | The DNS zones and hostname suffix a cluster may publish on - always consult before proposing a public hostname |
get_application_timeline | mcp:read | No | An application’s recorded history newest first, from creation through builds, deploys, demos and AI reviews |
promote_application | mcp:write | No | Move exactly the image tag one environment runs onto the next environment through the ordinary deploy, never a rebuild |
park_application_deployment | mcp:write | No | Scale one deployment of an application to zero on purpose, remembering its replica count so it can be woken |
wake_application_deployment | mcp:write | No | Restore a parked deployment to its remembered replica count |
get_application_ai_config | mcp:read | No | How Ankra AI is configured for an application’s repository per lane, including the pull request review budget |
update_application_ai_config | mcp:write | No | Change how Ankra AI runs on an application’s repository, such as enabling a lane, its model, scope or review budget |
list_application_pull_request_reviews | mcp:read | No | The AI reviews Ankra has posted on an application’s pull requests, newest first, with their findings |
Credentials
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_credentials | mcp:read | No | List every credential across all providers, with availability and sync state; a GitHub App credential also reports its installation_id |
get_credential | mcp:read | No | One credential’s identity, availability, and dependents - secret fields are always redacted |
validate_credential_name | mcp:read | No | Check whether a credential name is valid and free to use |
get_github_credential_usages | mcp:read | No | Everything that depends on a GitHub credential |
verify_github_credential | mcp:read | No | Probe a GitHub App credential’s installation and report each check |
get_github_credential_activity | mcp:read | No | Recent GitHub App installation activity events for a credential |
plan_github_credential_replacement | mcp:read | No | Build the plan for rotating a deprecated GitHub OAuth credential to a GitHub App credential |
list_provider_credentials | mcp:read | No | List cloud provider and SSH key credentials |
list_gitops_credentials | mcp:read | No | List GitHub credentials available for GitOps |
list_gitops_repositories | mcp:read | No | List repositories reachable under a GitHub credential |
delete_credential | mcp:write | No | Delete a credential that is not in use |
replace_github_credential | mcp:write | No | Apply a planned GitHub credential rotation (organisation admins only) |
Variables
Variables are the plain-text configuration values stack definitions interpolate with${{ ankra.variables.* }} - never secrets (the platform refuses secret-looking values; secrets travel SOPS-encrypted).
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_organisation_variables | mcp:read | No | The organisation-wide variables every cluster inherits |
list_cluster_variables | mcp:read | Yes | One cluster’s variables, overriding same-named organisation variables |
set_organisation_variable | mcp:write | No | Create or update (upsert) an organisation variable |
delete_organisation_variable | mcp:write | No | Delete an organisation variable |
set_cluster_variable | mcp:write | Yes | Create or update (upsert) a variable on one cluster |
delete_cluster_variable | mcp:write | Yes | Delete a variable from one cluster |
GitOps
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_gitops_conflicts | mcp:read | No | Open GitOps merge conflicts: resources changed in both Git and the cluster |
get_gitops_conflict_diff | mcp:read | No | The Git, cluster, and base sides of one conflict, with secrets redacted |
resolve_gitops_conflict | mcp:write | No | Resolve one GitOps merge conflict by picking the winning side |
get_gitops_status | mcp:read | No | The cluster’s sync state: repository, branch, credential, last and pending commits, plus credential_missing and source_mismatch |
connect_gitops_repository | mcp:write | No | Connect a GitOps repository and branch to a cluster that has none, using an existing GitHub credential |
Source Control & Workspaces
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
github_list_repositories | mcp:read | No | List GitHub repositories the connected account can reach |
github_list_repository_files | mcp:read | No | List files and directories in a repository |
github_read_file | mcp:read | No | Read one file from a repository |
github_list_workflow_runs | mcp:read | No | Recent GitHub Actions workflow runs for a repository |
github_get_workflow_run_jobs | mcp:read | No | Jobs and step-level detail for one workflow run |
github_get_job_logs | mcp:read | No | Log output for one GitHub Actions job |
github_list_artifacts | mcp:read | No | GitHub Actions artifacts for a repository |
github_download_artifact | mcp:read | No | Download and read the contents of an artifact |
github_commit_files | mcp:write | No | Commit one or more files to a repository |
github_create_pull_request | mcp:write | No | Create a pull request with file changes |
scm_create_pull_request | mcp:write | No | Open a pull request on a GitHub repository - the pull request itself is the review gate |
list_related_repositories | mcp:read | No | The repositories stated as related for AI code review under one GitHub App installation |
relate_repositories | mcp:write | No | State that two repositories are related, so a code review of either may read the other (organisation admin) |
unrelate_repositories | mcp:write | No | Remove a stated relationship, in whichever order it was stated (organisation admin) |
workspace_search_code | mcp:write | No | Search an application’s source repository from an ephemeral, locked-down workspace |
workspace_read_file | mcp:write | No | Read one file from an application’s source repository via an ephemeral workspace |
workspace_list_files | mcp:write | No | List an application repository’s files via an ephemeral workspace |
deploy_pr_demo | mcp:write | No | Deploy a throwaway, time-limited demo of a pull-request build into an isolated namespace; returns a public preview_url when a demo domain or active cluster DNS zone is configured |
demo_stop | mcp:write | No | Tear down a pull-request demo |
get_demo_diagnostics | mcp:read | No | Read a demo’s tracked record plus a log tail of its container’s most recent start attempt - the crash evidence behind a failed demo |
redeploy_demo | mcp:write | No | Redeploy an existing PR or branch demo with its recorded identity so the application’s saved demo configuration applies |
get_application_demo_config | mcp:read | No | Read an application’s saved demo environment defaults and throwaway-database flag |
update_application_demo_config | mcp:write | No | Replace an application’s saved demo configuration (the pre-setup every future demo inherits); affects only TTL-reaped demo namespaces |
github_search_code | mcp:read | No | Search file contents on a repository’s default branch with GitHub code search |
watch_workflow_run | mcp:read | No | Register a watch on the CI run a commit triggered, so the conversation is woken with its conclusion |
scm_merge_pull_request | mcp:write | No | Ask Ankra to merge a pull request automatically once its pipeline, gates and reviews are green |
list_application_demos | mcp:read | No | An application’s active PR and branch demos with status, preview URL and expiry |
inspect_demo | mcp:read | No | Diagnose a demo or preview that does not load, reading its record and the live state that decides whether it is reachable |
Observability & Alerts
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_alerts | mcp:read | No | The organisation’s alert definitions, firing state, and alert metrics |
create_alert | mcp:write | No | Create an alert definition with rules in the evaluator’s vocabulary (cluster state, GitOps sync, metric thresholds, metrics stopped flowing, security findings, resource state, job status); a rule naming no clusters targets the bound cluster |
set_alert_enabled | mcp:write | No | Enable or mute one alert; muting keeps the firing history and settles its open incidents |
delete_alert | mcp:write | No | Permanently delete an alert definition, its rules and its firing history |
query_prometheus | mcp:read | Yes | PromQL instant query against the cluster’s Prometheus |
query_prometheus_range | mcp:read | Yes | PromQL range query over a time window |
list_alert_destinations | mcp:read | No | The Slack / Teams / Discord / PagerDuty / webhook endpoints notifications deliver to (webhook URLs redacted to their host) |
list_notification_routes | mcp:read | No | The rules that filter notifications by kind, severity, cluster and source onto destinations |
preview_notification_routing | mcp:read | No | Dry-run a hypothetical notification through the organisation’s routing and report every delivery, suppression and reason |
create_notification_route | mcp:write | No | Route matching notifications to an existing destination |
update_notification_route | mcp:write | No | Change one route’s filters, destination, priority, mode or enabled state |
delete_notification_route | mcp:write | No | Delete a route; what gets delivered or suppressed changes immediately |
test_notification_route | mcp:write | No | Queue a sample notification through a route’s destination (alerts.write) |
query_logs | mcp:read | Yes | Search the cluster’s registered log store (Loki, Elasticsearch, OpenSearch or VictoriaLogs) over a time window |
get_log_labels | mcp:read | Yes | The labels or fields the cluster’s log store can be filtered on, to use before or after a query_logs that returns nothing |
connect_log_source | mcp:write | Yes | Connect the log source Ankra derived from the cluster’s installed add-ons, exactly as a query_logs refusal named it |
connect_metrics_source | mcp:write | Yes | Connect the Prometheus-compatible metrics source Ankra derived from the cluster’s installed add-ons, exactly as a query_prometheus refusal named it |
get_cluster_hosted_log_shipping | mcp:read | No | Whether a cluster ships its container logs to Ankra’s hosted log store, and whether its agent supports the switch |
set_cluster_hosted_log_shipping | mcp:write | No | Turn shipping of a cluster’s container logs to Ankra’s hosted log store on or off |
list_alertmanager_silences | mcp:read | Yes | The silences configured in the cluster’s Prometheus Alertmanager, with matchers, time window and state |
create_alertmanager_silence | mcp:write | Yes | Create a silence in the cluster’s Prometheus Alertmanager so matching alerts stop notifying until it ends |
expire_alertmanager_silence | mcp:write | Yes | End an Alertmanager silence by id so matching alerts notify again |
get_cluster_insights | mcp:read | Yes | The platform’s own AI health diagnoses for the cluster, with root cause, recommended actions and what was tried before |
get_execution_trends | mcp:read | Yes | Platform execution history for the cluster over a time window, with failure rate and the most-failing executions |
list_systemic_patterns | mcp:read | Yes | Issues that have recurred and been remediated repeatedly, grouped by who can fix them at the source |
resource_timeline | mcp:read | Yes | The state-transition history of one Kubernetes resource over a time window, such as restarts, scaling and spec changes |
probe_endpoint | mcp:read | No | Probe a public HTTP or HTTPS endpoint and report its status, latency, headers, a body snippet and TLS certificate |
trace_request_path | mcp:read | No | Trace a URL end to end through DNS, ingress and backends and name the first broken hop with evidence |
Security Center
The organisation-wide CVE surface with CISA KEV and EPSS exploitation intelligence, the bill of materials behind it, the disposition and compliance decisions on top of it, and the cluster, stack, pod and add-on drill-downs;get_security_reports / get_compliance_reports above stay the per-cluster Trivy summaries. Every read needs security.read; the writes re-check security.triage or security.manage the way the portal does, and each is confirmed before it runs. Tools that name a cluster_id take it as an argument, so an MCP client can read any cluster of the organisation without binding one.
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
get_security_overview | mcp:read | No | Fleet security summary: totals by severity, fixable counts, CISA KEV exposure, scanner coverage and top remediation candidates |
list_security_findings | mcp:read | No | Findings across every scanned cluster, exploited-in-the-wild first, with rich filters |
get_security_finding | mcp:read | No | One finding with its exploitation intelligence and every current occurrence |
list_security_finding_occurrences | mcp:read | No | Where one finding occurs: every cluster, workload, container and image, one row per occurrence, filtered by scan state (active or resolved) and cluster |
get_security_advisory | mcp:read | No | The platform’s advisory for any CVE id: parsed NVD/OSV record, CISA guidance and your fleet exposure |
list_security_cluster_posture | mcp:read | No | Per-cluster finding counts, known-exploited exposure and scanner freshness |
list_security_workloads | mcp:read | No | Workloads carrying findings, one row per container image with cluster, namespace, add-on attribution and actionable counts, with the findings filters |
list_security_namespaces | mcp:read | No | Namespaces of the fleet or of one cluster with scanned workloads, images, running pods, SBOM coverage and actionable findings |
list_security_pods | mcp:read | No | The running pods of one namespace on one cluster, each container joined to the findings of its scanned workload (an unscanned container is not a clean one) |
list_cluster_security_stacks | mcp:read | No | Every stack of one cluster with its attribution status, scope, actionable and known-exploited findings and SBOM coverage, plus the outside-any-stack row |
get_cluster_stack_security | mcp:read | No | One stack’s posture on a cluster: status, scope, CVE posture across its workloads, exploited findings, top actionable findings and bill-of-materials picture |
get_cluster_pod_security | mcp:read | No | One pod container by container: image, scanner coverage, actionable CVEs by severity, known-exploited and fixable-severe counts, bill of materials |
get_cluster_addon_security | mcp:read | No | One add-on’s posture on one cluster: attributed workloads and images, observed and actionable findings, dispositions in force, scanner state |
list_security_sbom_components | mcp:read | No | The fleet’s packages grouped by name, version and ecosystem with licences, licence risk tier, where each runs and the findings that name it |
list_security_sbom_images | mcp:read | No | Images that publish a bill of materials, with base OS, component count, where they run and their attributed findings |
get_security_sbom_image | mcp:read | No | One image’s full bill of materials: identity, base OS, the containers running it and every component with licences |
list_security_sbom_containers | mcp:read | No | Every running container, init containers included, joined to its image’s bill of materials or marked absent |
list_security_sbom_image_findings | mcp:read | No | The CVEs named on one image: package and fixed version, KEV listing, EPSS, disposition and spread |
get_application_security_versions | mcp:read | No | Every pushed image version of an application with its bill of materials, findings, licence exposure and where it runs |
list_security_dispositions | mcp:read | No | The organisation’s disposition policies: selector, disposition, reason, expiry, expire-when-fixed and lifecycle status |
preview_security_disposition | mcp:read | No | What a disposition would cover before it is written: the selector, the occurrences it matches across clusters and workloads, and the observations it excludes |
create_security_disposition | mcp:write | No | Acknowledge a finding (security.triage) or accept its risk (security.manage), scoped to the add-on the occurrence is attributed to, with reason and review deadline |
update_security_disposition | mcp:write | No | Change a policy’s reason, review deadline or expire-when-fixed flag (security.manage) |
revoke_security_disposition | mcp:write | No | Withdraw a policy with a reason so every finding it covered returns to open (security.manage) |
get_security_compliance_overview | mcp:read | No | The compliance rollup across every scanned cluster: benchmark pass/fail counts, config-audit totals, scanner freshness and the clusters with no data |
list_security_compliance_frameworks | mcp:read | No | The curated frameworks (GDPR, ISO 27001, SOC 2, NIST CSF), whether each is enabled and its live score |
get_security_compliance_framework_report | mcp:read | No | One framework control by control, live or for a recorded month |
set_security_compliance_framework | mcp:write | No | Enable or disable a framework for the organisation (security.manage); enabling starts scoring and monthly recording |
get_cluster_policy_violations | mcp:read | No | One cluster’s pod-security policy violations read live: failing resources per policy, totals by severity, and whether the baseline is in audit or enforce |
set_cluster_security_policy_mode | mcp:write | No | Switch a cluster’s pod-security policies between audit and enforce; enforce can reject pods at admission |
get_cluster_network_policy_overprivilege | mcp:read | No | One cluster’s NetworkPolicy over-privilege score on ingress and egress, computed live from its policies and workloads |
enable_security_baseline | mcp:write | No | Publish the curated security baseline stack on a cluster: trivy-operator plus the pod-security policies in audit mode, committed to its GitOps repository |
get_cluster_security_history | mcp:read | No | One cluster’s daily security posture trend from its stored snapshots, oldest first: findings by severity, fixable critical/high, workloads and namespaces scanned, risk score and the actionable / acknowledged / accepted-risk split per day (days, 1 to 365, default 90) |
get_cluster_security_report_schedule | mcp:read | No | The cluster’s scheduled security report: whether one is configured, weekly or monthly, the email recipients, enabled or paused, when it last went out and when it is next due |
set_cluster_security_report_schedule | mcp:write | No | Store the cluster’s scheduled security report: frequency, up to 20 recipients and whether sending is enabled; replaces the whole schedule (clusters.write) |
send_cluster_security_report_now | mcp:write | No | Email the cluster’s security report to its scheduled recipients within the next minute; refuses when no schedule is configured (clusters.write) |
get_security_sbom_component | mcp:read | No | Follow one exact package (name, version and ecosystem) to the images, workloads and clusters that run it |
Backup Vaults
Available while the organisation’s backups feature is enabled; vault creation with your own bucket keys stays in the portal and CLI. Stack protection, restore points and restores are in the Backups & Restore Points section below.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_backup_vaults | mcp:read | No | The S3-compatible vaults backups and migration data move through, with verification status |
get_backup_vault | mcp:read | No | One vault’s provider, bucket, verification status and error excerpt (credentials never returned) |
list_backup_vault_imports | mcp:read | No | The data imports a vault holds, with upload status, databases and restore progress |
provision_backup_vault | mcp:write | No | Create a vault and let Ankra create its bucket from a stored credential (backups.manage) |
verify_backup_vault | mcp:write | No | Re-run the credential check against a vault’s bucket (backups.operate) |
Provisioning & Nodes
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_instance_types | mcp:read | No | Instance types and pricing per cloud provider |
list_proxmox_options | mcp:read | No | Provisioning options a Proxmox VE credential can reach |
list_morpheus_options | mcp:read | No | Provisioning options an HPE Morpheus credential can reach |
create_hetzner_cluster | mcp:write | No | Create and provision a Kubernetes cluster on Hetzner Cloud |
create_ovh_cluster | mcp:write | No | Create and provision a Kubernetes cluster on OVHcloud |
create_upcloud_cluster | mcp:write | No | Create and provision a Kubernetes cluster on UpCloud |
create_digitalocean_cluster | mcp:write | No | Create and provision a Kubernetes cluster on DigitalOcean |
create_aws_cluster | mcp:write | No | Create and provision a self-managed Kubernetes cluster on AWS EC2, in a VPC Ankra creates or one you adopt - runs the create preflight first |
create_proxmox_cluster | mcp:write | No | Create and provision a Kubernetes cluster on Proxmox VE |
create_morpheus_cluster | mcp:write | No | Create and provision a Kubernetes cluster on HPE Morpheus |
list_cluster_nodes | mcp:read | No | The provisioned VM nodes of a cluster, with live provider status |
restart_node | mcp:write | No | Restart one provisioned node - control plane, worker, or bastion |
ssh_diagnose_node | mcp:read | No | Diagnose a node at the OS level over SSH via the bastion |
ssh_repair_node | mcp:write | No | Repair a node’s Kubernetes service unit through the node-recovery engine |
list_kubernetes_versions | mcp:read | No | The Kubernetes versions the platform knows per engine (kubeadm and k3s), with the default install version and supported channels |
list_upcloud_options | mcp:read | No | The live UpCloud zones and server plans a credential can reach, with prices and GPU details |
create_scaleway_cluster | mcp:write | No | Create and provision a self-hosted Kubernetes cluster on Scaleway Instances |
import_cluster | mcp:write | No | Import an existing Kubernetes cluster from any distribution or provider into Ankra, without provisioning new infrastructure |
get_provider_quotas | mcp:read | No | What a cloud-provider credential may still create, with per-dimension limits and usage |
request_provider_quota_increase | mcp:write | No | Raise a cloud-provider limit for a credential (Azure), or produce the exact request to submit by hand for other providers |
get_bastion_health | mcp:read | Yes | The bastion health verdict the platform last recorded for an Ankra-provisioned cluster |
diagnose_bastion | mcp:read | Yes | Inspect an Ankra-provisioned cluster’s SSH bastion host, including sshd configuration, failed logins, disk and pending security updates |
harden_bastion | mcp:write | No | Apply a curated, revertable sshd hardening action set to an Ankra-provisioned cluster’s SSH bastion |
get_node_cloud_init_log | mcp:read | No | The cloud-init status and output log tail of one node of an Ankra-provisioned cluster, read over SSH |
get_etcd_members | mcp:read | No | The etcd membership, member health, alarms and quorum of an Ankra-provisioned cluster, read over SSH |
remove_etcd_member | mcp:write | No | Remove a dead control-plane node’s stale member from an Ankra-provisioned cluster’s etcd, run on a healthy peer over SSH |
ssh_kubectl_read | mcp:read | No | Run one allowlisted read-only kubectl command on a control-plane node over SSH, only when the cluster’s agent is not answering |
ssh_kubectl_recover | mcp:write | No | Run one allowlisted state-changing kubectl command on a control-plane node over SSH to recover a cluster whose agent is offline |
Cluster Lifecycle & Node Groups
Day-2 operations for Ankra-provisioned clusters on every self-managed provider (Hetzner, OVHcloud, UpCloud, DigitalOcean, Scaleway, AWS EC2, Proxmox VE, HPE Morpheus). These tools acceptcluster_name or cluster_id directly, so they work from any conversation.
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_node_groups | mcp:read | No | Node groups, control plane topology, and worker counts for one cluster |
scale_workers | mcp:write | No | Scale the default worker pool, or one named node group |
add_node_group | mcp:write | No | Add a node group with instance type, count, and optional labels, taints, and autoscaling |
update_node_group | mcp:write | No | Change a node group’s autoscaling bounds, labels and taints in one call, or its instance type on its own (that replaces every node). Scales nodes, not pods |
delete_node_group | mcp:write | No | Delete a node group and its nodes |
change_control_plane | mcp:write | No | Change the control plane’s node count or instance type (cluster must be stopped) |
stop_cluster | mcp:write | No | Stop a cluster: its virtual machines are terminated while configuration is preserved |
start_cluster | mcp:write | No | Start (re-provision) a stopped cluster, optionally control plane only |
upgrade_cluster | mcp:write | No | Upgrade the cluster’s Kubernetes version |
delete_cluster | mcp:write | No | Deprovision a cluster entirely; requires re-typing the cluster name to confirm |
update_cluster | mcp:write | No | Change a cluster’s settings, today only its environment label |
set_cluster_agent_auto_upgrade | mcp:write | No | Turn automatic upgrades of the Ankra agent on a cluster on or off |
move_cluster_to_organisation | mcp:write | No | Move a cluster into another existing organisation (administrator of both organisations only) |
list_power_schedules | mcp:read | No | A cluster’s scheduled one-off or repeating stop and start actions, with their next run and last outcome |
create_power_schedule | mcp:write | No | Schedule a stop or start of an Ankra-provisioned cluster once or on a cron expression in a time zone |
update_power_schedule | mcp:write | No | Replace a power schedule’s action, timing and enabled flag, restating every field |
delete_power_schedule | mcp:write | No | Delete a power schedule without touching the cluster itself |
Managed Kubernetes
Create and operate provider-managed control planes - EKS (AWS), AKS (Azure), GKE (Google Cloud), DOKS (DigitalOcean), UKS (UpCloud), OVHcloud MKS, and Kapsule (Scaleway).| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_managed_k8s_options | mcp:read | No | Regions, versions, and machine sizes a credential can deploy; per-cluster options and available upgrades |
create_managed_cluster | mcp:write | No | Create a managed Kubernetes cluster with one or more node pools |
list_managed_node_pools | mcp:read | No | Node pools of a managed cluster with counts and autoscaling state |
add_managed_node_pool | mcp:write | No | Add a node pool with size, count, and optional autoscaling |
update_managed_node_pool | mcp:write | No | Update a node pool’s count or autoscaling configuration |
delete_managed_node_pool | mcp:write | No | Delete a node pool |
discover_managed_clusters | mcp:read | No | The managed clusters already running behind a provider credential, marking the ones Ankra has imported |
import_managed_cluster | mcp:write | No | Adopt a managed cluster that already runs at the provider; Ankra fetches the kubeconfig and installs the agent itself |
upgrade_managed_cluster | mcp:write | No | Upgrade a managed cluster’s Kubernetes version |
stop_managed_cluster | mcp:write | No | Stop a managed cluster through provider-native power control when supported (AKS today) |
start_managed_cluster | mcp:write | No | Start a stopped managed cluster through provider-native power control when supported |
CI/CD & Deploy Analysis
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
cicd_propose_application_pipeline | mcp:read | No | Render the canonical Ankra CI/CD pipeline for a target repository |
cicd_validate_workflow_yaml | mcp:read | No | Validate a GitHub Actions workflow against Ankra’s platform invariants |
cicd_validate_chart_values | mcp:read | No | Validate Helm chart values against Ankra’s Kubernetes security defaults |
deploy_inspect_chart_values | mcp:read | Yes | Probe a chart’s values for the paths the deploy wizard cares about |
deploy_inspect_repo | mcp:read | Yes | Inspect key repository files for the application’s runtime needs |
deploy_finalize_analysis | mcp:read | Yes | Finalise a deploy analysis with the full analysis payload |
cicd_convert_workflow_to_pipeline | mcp:read | No | Convert an existing GitHub Actions, GitLab CI, Bitbucket Pipelines or CircleCI definition into an Ankra pipeline |
cicd_validate_pipeline_yaml | mcp:read | No | Validate an Ankra pipeline definition (.ankra/pipeline.yaml) before proposing or committing it |
get_pipeline_step_logs | mcp:read | No | Read an Ankra Pipelines run and one step’s archived log tail, to explain why a step failed |
watch_pipeline_run | mcp:read | No | Register a watch on an Ankra Pipelines run, so the conversation is woken with its outcome |
Tickets & Collaboration
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
ticket_list | mcp:read | No | List the organisation’s AI work board tickets |
ticket_get | mcp:read | No | One ticket in full: plan, review state, timeline, and links |
file_ticket | mcp:write | No | File a new ticket on the AI work board |
ticket_comment | mcp:write | No | Post a comment on a ticket |
ticket_update_status | mcp:write | No | Move a ticket through its lifecycle |
ticket_draft_plan | mcp:write | No | Write or revise a ticket’s plan document |
ticket_request_review | mcp:write | No | Ask for a review of the ticket’s drafted plan |
ticket_submit_review | mcp:write | No | Deliver a peer-review verdict on a ticket’s plan |
ticket_attach_demo | mcp:write | No | Attach a demo environment to a ticket |
ticket_assign | mcp:write | No | Assign a ticket to an agent, or clear its assignee so the board can staff it again |
list_agent_tasks | mcp:read | No | List the organisation’s AI agents with a can_work_board verdict and, when they cannot, the reason |
designate_board_worker | mcp:write | No | Designate an agent as a board worker, or remove that designation |
list_agent_runs | mcp:read | No | List the organisation’s dispatched AI agent runs, newest first |
get_agent_run | mcp:read | No | One agent run in full, optionally with its session transcript tail |
cancel_agent_run | mcp:write | No | Cancel a live agent run and its session (organisation admins only) |
ticket_decide | mcp:write | No | Answer the choice a blocked ticket is waiting on and resume its agent with that answer |
ticket_set_cluster | mcp:write | No | Set or clear the cluster an existing board ticket targets |
list_ticket_sync_connections | mcp:read | No | The configured Jira, Linear or webhook destinations that AI work board tickets mirror to |
provision_board_identity | mcp:write | No | Provision the organisation’s board service principal that platform-created agents act as on board tickets (organisation admins only) |
Support Tickets
The support desk - the same ticketsankra support and the portal’s Support page show. These are requests to Ankra’s support team, distinct from the AI work board’s tickets above. Attachments stay in the portal and CLI because they carry file bytes.
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_support_tickets | mcp:read | No | The organisation’s support tickets with status, category, severity and cluster; filter by status, cluster or search text |
get_support_ticket | mcp:read | No | One ticket in full by number or id: description, the conversation with support, and attachment names |
create_support_ticket | mcp:write | No | Raise a support ticket with Ankra’s team on the user’s behalf (source agent); defaults to the session’s cluster in chat |
comment_support_ticket | mcp:write | No | Reply on a ticket as the customer; a ticket waiting on you moves back to in progress |
close_support_ticket | mcp:write | No | Close a ticket from the customer’s side, the same action as ankra support close |
Organisation & AI Posture
The organisation a token is bound to, who has access, what is parked awaiting a human decision, and how the organisation’s AI is configured. Membership, role, provider-key and endpoint writes stay in the portal and CLI.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
get_organisation | mcp:read | No | The bound organisation: id, name, slug, member counts and organisation-wide settings |
list_organisation_members | mcp:read | No | Who has access: members, pending invites and Ankra’s service principals, with roles |
list_organisation_roles | mcp:read | No | Built-in and custom roles with the permissions each grants |
list_organisation_custom_dns_zones | mcp:read | No | The DNS zones the organisation’s clusters serve with their own credentials |
list_limit_requests | mcp:read | No | The latest limit-increase request per kind (billing.read) |
list_pending_actions | mcp:read | No | AI actions parked for a human decision, with risk, cluster, expiry and the bill of materials |
decide_pending_action | mcp:write | No | Approve or reject a parked action on behalf of an organisation admin; approving resumes the session that proposed it. MCP-only: in chat the action’s own card is the decision |
get_ai_settings | mcp:read | No | The active provider, which providers are configured (never the keys or endpoint addresses), and the autonomy pause state |
list_ai_models | mcp:read | No | The model catalog the chat picker offers, with tool, thinking and image support |
pause_ai_autonomy | mcp:write | No | Pause autonomous AI actions organisation-wide (ai.manage); chat and diagnosis keep working |
resume_ai_autonomy | mcp:write | No | Restore exactly what the pause turned off (ai.manage) |
get_remediation_policy | mcp:read | No | The organisation’s AI auto-remediation policy, including autonomy level, tier overrides and the cluster allow list |
get_ai_environment | mcp:read | No | The organisation’s AI environment settings, such as the staging cluster for AI workspaces and PR demos and their TTLs |
update_ai_environment | mcp:write | No | Change the organisation’s AI environment settings, such as the staging cluster that turns on PR previews (organisation admins only) |
request_limit_increase | mcp:write | No | Ask the Ankra team to raise an organisation limit, such as playground memory, the free AI allowance or registry storage |
get_registry_storage | mcp:read | No | The organisation’s image registry storage limit and usage per project, and the retention policy that decides what is kept |
set_registry_retention | mcp:write | No | Change which images the organisation’s registry keeps, organisation-wide or per repository |
run_registry_retention | mcp:write | No | Run the organisation’s registry retention now instead of at its daily time |
set_registry_storage_addon | mcp:write | No | Buy or return paid registry storage blocks, billed monthly |
Memory & Miscellaneous
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
search_memories | mcp:read | No | Search past conversation memories for relevant context |
save_memory | mcp:write | No | Save a fact, decision, or preference to long-term memory |
web_fetch | mcp:read | No | Fetch content from a public HTTPS URL as readable text |
get_portal_url | mcp:read | No | The Ankra portal URL for a page (a cluster, stack, add-on, pod, application, pipeline run, ticket, alert, CVE, settings and more); reads and changes nothing. See Portal URLs |
ask_question | mcp:read | No | Ask the user a structured multiple-choice question to resolve a genuine ambiguity |
todo_write | mcp:read | No | Keep a structured todo list for a multi-step task |
propose_plan | mcp:read | No | Produce a structured plan of write operations for the user to review and approve |
dispatch_subworker | mcp:read | No | Spawn a focused child agent for a narrowly scoped task |
canvas_present | mcp:read | No | Create or update a self-contained HTML, SVG, JavaScript or Markdown artifact on the chat canvas |
Backups & Restore Points
Scheduled stack protection, restore points and the runs behind them. Available while the organisation’s backups feature is enabled.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
get_backup_posture | mcp:read | No | Whether data is protected and if not why, for the organisation, one cluster or one stack |
list_stack_data_assets | mcp:read | No | The persistent volume claims and databases a stack actually holds |
list_restore_points | mcp:read | No | Restore points newest first, for one stack or the whole organisation, each with what it does not carry |
get_restore_point | mcp:read | No | One restore point in full, including its assets, verification and what it does not carry |
list_data_runs | mcp:read | No | Backup, restore and clone runs newest first |
get_data_run | mcp:read | No | One backup, restore or clone run with every attempt of every step, to explain a failure |
protect_stack | mcp:write | No | Turn on scheduled backup protection for a stack, written through GitOps |
unprotect_stack | mcp:write | No | Turn off scheduled backup protection for a stack while keeping existing restore points |
create_stack_restore_point | mcp:write | No | Take a restore point of a stack now |
restore_restore_point_in_place | mcp:write | No | Replace a stack’s current data with a restore point’s data, confirmed by typing the stack’s name |
delete_restore_point | mcp:write | No | Delete a restore point and remove its objects from the backup vault |
cancel_data_run | mcp:write | No | Cancel a running backup, restore or clone |
retry_data_run | mcp:write | No | Retry a failed backup, restore or clone from the step that failed |
Cost & Usage
Cloud cost estimates, budgets and the cost autopilot, plus the organisation’s usage of Ankra.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
get_fleet_cloud_cost | mcp:read | No | The organisation-wide cloud cost rollup, split by provider, with the costliest clusters |
get_object_cost | mcp:read | No | What one cluster, namespace, stack, application or cloud credential costs |
get_namespace_cost_history | mcp:read | Yes | How the cluster’s cost was allocated to each namespace over time |
get_cloud_savings | mcp:read | No | The organisation’s cloud savings recommendations, the same model the portal’s Cost page shows |
get_cost_reconciliation | mcp:read | No | What each cloud credential’s provider billed for a month against Ankra’s estimate |
get_cost_settings | mcp:read | No | The organisation’s cost display currency, discount, egress estimate and analysed cluster limit |
update_cost_settings | mcp:write | No | Replace the organisation’s cost pricing settings, restating every value |
get_cost_budgets | mcp:read | No | The organisation’s monthly cost budgets with spend so far and the projected month end |
set_cost_budget | mcp:write | No | Create a monthly cost budget for the organisation, a cluster, an environment or an application, or change one |
delete_cost_budget | mcp:write | No | Delete one of the organisation’s cost budgets (organisation admins only) |
get_cost_autopilot | mcp:read | No | The organisation’s cost autopilot policy, which decides how much Ankra may do about cost unasked |
update_cost_autopilot | mcp:write | No | Change the cost autopilot policy, or one cluster’s tier |
get_usage | mcp:read | No | The organisation’s usage of Ankra per meter and period, such as worker vCPU-hours, hosted logs and AI tokens |
Managed Services
Managed services such as PostgreSQL, Valkey and OpenSearch set up for an application, the same surface asankra services. Setup and retirement are two steps, a prepared review and a confirmation.
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_service_packages | mcp:read | No | The managed-service packages the organisation may set up, with their package version ids |
get_service_package | mcp:read | No | One managed-service package version’s contract, with its modes, parameters and secret inputs |
get_service_setup_eligibility | mcp:read | No | Which managed services one application environment can set up right now, with the reason and fix when blocked |
get_service_cluster_policy | mcp:read | No | A cluster’s managed-service placement policy, with its region and data boundary |
set_service_cluster_policy | mcp:write | No | Declare a cluster’s managed-service placement policy, which every setup needs |
list_service_consumers | mcp:read | No | One application’s consumer bindings for managed services |
bind_service_consumer | mcp:write | No | Bind an application namespace on a cluster as a consumer of managed services |
unbind_service_consumer | mcp:write | No | Remove a consumer binding that no unretired service still uses |
prepare_service_setup | mcp:write | No | Prepare the review of a new managed service, returning its plan without deploying anything |
confirm_service_setup | mcp:write | No | Confirm a prepared managed-service review and start its deployment |
list_service_instances | mcp:read | No | The organisation’s managed services with state, readiness, health and consumers |
get_service_instance | mcp:read | No | One managed service with its deployment state, health, readiness evidence, consumers and connection details (never credential values) |
prepare_service_retirement | mcp:write | No | Prepare the retirement of a managed service, listing everything it would remove and keep without removing anything |
confirm_service_retirement | mcp:write | No | Confirm a prepared retirement and delete the managed service and its data, which cannot be undone |
get_service_retirement | mcp:read | No | One retirement of a managed service with its plan, state and outcome |
Cluster Mesh
Cilium cluster meshes that join two or more Ankra clusters into one flat pod network. Available while the organisation’s cluster mesh feature is enabled.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_cluster_meshes | mcp:read | No | The organisation’s cluster meshes with status and every member cluster |
get_cluster_mesh | mcp:read | No | One cluster mesh with its status and each member’s Cilium identity and status |
check_cluster_mesh_readiness | mcp:read | No | Whether the given clusters could form one mesh, with the failing checks per cluster |
create_cluster_mesh | mcp:write | No | Create a new, empty cluster mesh with a name |
join_cluster_to_mesh | mcp:write | No | Add one cluster to a mesh, which reconfigures its Cilium networking |
make_cluster_mesh_ready | mcp:write | No | Make an existing cluster mesh-capable in place, without rebuilding it |
remove_cluster_from_mesh | mcp:write | No | Remove one cluster from a mesh |
delete_cluster_mesh | mcp:write | No | Delete a cluster mesh that has no members left |
DNS
Cloudflare DNS records in the organisation’s own Cloudflare account, and the extra DNS zones a cluster serves with the organisation’s DNS credentials.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_cloudflare_domains | mcp:read | No | The Cloudflare domains the organisation’s Cloudflare credential can reach, with their ids and status |
list_cloudflare_dns_records | mcp:read | No | The DNS records in one Cloudflare domain, each marked as created by Ankra or elsewhere |
create_cloudflare_dns_record | mcp:write | No | Create a DNS record in one of the organisation’s Cloudflare domains |
update_cloudflare_dns_record | mcp:write | No | Change what an existing Cloudflare DNS record points at |
delete_cloudflare_dns_record | mcp:write | No | Delete a DNS record from one of the organisation’s Cloudflare domains, which Ankra cannot restore |
list_cluster_custom_dns_zones | mcp:read | No | The DNS zones one cluster serves with the organisation’s own DNS credentials, including inherited ones |
add_cluster_custom_dns_zone | mcp:write | No | Declare that a cluster also serves a DNS zone with one of the organisation’s DNS credentials |
remove_cluster_custom_dns_zone | mcp:write | No | Withdraw a DNS zone a cluster declared, leaving its existing records in place |
Object Storage
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_object_storage_buckets | mcp:read | No | The object storage buckets Ankra created on the organisation’s provider credentials (key material never returned) |
get_object_storage_bucket | mcp:read | No | One object storage bucket’s provider, region, endpoint and status (key material never returned) |
create_object_storage_bucket | mcp:write | No | Create an object storage bucket on a Hetzner, Scaleway, DigitalOcean or UpCloud credential |
delete_object_storage_bucket | mcp:write | No | Stop managing an object storage bucket, and optionally empty and delete it at the provider |
Playgrounds
| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
list_playground_plans | mcp:read | No | The orderable playground sizes with prices, availability and the organisation’s memory budget |
get_playground_status | mcp:read | No | A playground’s provisioning phase, expiry, starter app URL, size and price |
create_playground | mcp:write | No | Order a hosted playground Kubernetes namespace at a named size, or the free trial |
resize_playground | mcp:write | No | Resize a paid playground in place to another size |
destroy_playground | mcp:write | No | Permanently destroy a playground and everything deployed in it |
Agent MCP Tool Servers
External MCP tool servers an organisation registers to give its agent runs extra tools.| Tool | Scope | Cluster-scoped | Description |
|---|---|---|---|
get_mcp_catalog | mcp:read | No | The curated catalog of external MCP integrations an organisation admin can connect |
list_mcp_servers | mcp:read | No | The organisation’s registered MCP tool servers with state, permission tier and grant counts |
register_mcp_server | mcp:write | No | Register an external MCP tool server for the organisation (organisation admins only) |
set_mcp_server_enabled | mcp:write | No | Enable or disable a registered MCP tool server (organisation admins only) |
grant_mcp_tool | mcp:write | No | Grant one of a registered server’s tools to an organisation role so agent runs can call it (organisation admins only) |
Related
- MCP Server - endpoint, tokens, and client setup
- Portal URLs - the portal page behind each resource
- AI Assistant - the same tools in the product chat
- API Tokens
- Portal Links - build a portal link from the IDs and names these tools return