What the ZopNight MCP server's read and write tools cover, how the write tiers gate them, and the required arguments, pagination, and filter values.
The MCP server exposes two classes of tool: reads, available to every connected agent, and writes, which change something and are refused unless your organisation has opted into a write tier. The first tool, list_organisations, requires no arguments. All other tools require an org_id argument — call list_organisations first to get the org IDs.
Authentication
Every request must include a valid PAT in the Authorization header:
text
Authorization: Bearer <your-token>
Key points about authentication:
Tokens are tied to your email, not a specific organisation
Permissions are checked dynamically per request, against your live role
If you are removed from an organisation, access is denied immediately
If MCP is disabled for an organisation, tool calls for that org are blocked
Tokens have configurable expiry — create a new one when it expires
A token can do exactly what you can do — no more, and no less
What the read tools cover
Reads need no write tier. Each one is still checked against your role: you see through MCP exactly what you would see in the UI.
Area
Covers
Explore
Organisations, cloud accounts, resources, teams, and the discovery status behind them
Cost
Cost and savings summaries, per-resource and per-provider breakdowns, trends, history, snapshots, budgets, billing sync
Optimize
Recommendations and their savings, schedules, overrides, resource groups
Operate
Start/stop history, actions, scheduler events, provisioning jobs, Services and their deploys
Metrics, error detail, and the state behind a failed deploy or job
Ship
Projects, Environments, Services, Infrastructure, and deploy status
Introspect
What your own token can do — including get_my_permissions
What the write tools cover
A write tool changes something. Which ones your organisation admits is set by one dial, Settings → Organisation → Write access, default None:
Tier
Admits
Examples of what it turns on
None (default)
Nothing
—
1 — metadata only
Changes to ZopNight's own records. No cloud state, no cost.
Create/update/delete a budget, set a recommendation's status, accept or revoke a smart tag
2 — reversible
Bounded blast radius, may affect cost.
Create/update/delete schedules and overrides, attach and detach resources, tagging policies, deploy / redeploy / roll back a Service, change Service config and env vars, retry a Provisioning job
3 — irreversible and/or cost-incurring
No undo.
Start and stop resources, create a Provisioning job, Kubernetes manifest writes and workload restarts, cancel a workflow, every delete
Tiers are cumulative — tier 2 admits tier-1 and tier-2 tools. The picker in Settings enumerates the exact tools each tier turns on, generated from the same manifest the gateway authorizes against.
Some surfaces are excluded at every tier and no setting adds them: roles and permissions, user management, organisation deletion, cloud-account deletion, credentials, and bulk actions.
Writes are off today
MCP write is disabled across the platform while it rolls out. Every mutating tool call is refused with mcp_write_not_allowed regardless of the tier you have set, and no write tool is advertised to any AI tool. Contact us to be part of the rollout.
Retries are not deduplicated
Every write tool accepts an idempotency_key. Nothing reads it today. There is no dedup anywhere behind these tools, and the argument is inert.
Changes are not visible instantly
A write returns when ZopNight has recorded your intent, which is earlier than the world agreeing:
Schedules and overrides are applied by the scheduler on its next pass — allow about a minute before reading back.
Deploys and Provisioning jobs are asynchronous. They return an id; poll for status. A deploy routinely runs 20 minutes and can take up to about 35. wait_for_deploy returns after at most 60 seconds with call_again: true if the deploy is still going — that is normal, and the agent should keep calling.
Start and stop are confirmed against real cloud state rather than assumed, so a resource can read starting or stopping for a while.
An immediate read-back that shows the old value usually means the change has not landed yet, not that it failed.
Every tool
The complete surface, generated from the gateway's tool manifest. Reads are grouped by area; writes by the tier that admits them (see above). The one-line purpose is each tool's own summary — call tools/list for the full argument schema, and remember your own list is filtered to what your token, role, and tier allow.
Get what else is affected if you act on a resource — the dependency graph around a target
get_cloud_account
Get details of a specific cloud account
get_discovery_status
Get the status of the last resource discovery refresh
get_discovery_summary
Get discovery summary showing resource counts by provider and type
get_resource
Get full details of a single cloud resource by UID
get_resource_count
Get the number of resources in the organisation, counting the SAME listable set list_resources enumerates — networking/dependent infrastructure (subnets, firewalls, peering, snapshots, replicas, pub/sub topics) is excluded, exactly as it is from list_resources
get_resource_filters
Get the VALID filter values for this org's resources — call this before list_resources instead of guessing filter strings
get_resource_overview
START HERE for any question about ONE cloud resource: 'why is this expensive', 'is this idle', 'what should I do about it'
get_resource_summary
Get resource counts grouped by cloud provider and cloud account
list_cloud_accounts
List connected cloud accounts (AWS/GCP/Azure)
list_resources
List cloud resources (VMs, databases, clusters) across AWS/GCP/Azure
Cost · Spend, savings, budgets, billing, trends
Tool
What it's for
get_ai_usage
Get AI Gateway usage and spend — one row per LLM request routed through the gateway
get_anomalies
Get detected cost anomalies — unexpected spend spikes — in a date range
get_billing_sync_status
Get billing data sync health per cloud account
get_budget_summary
Get budget health summary — counts of healthy, warning, and over-budget budgets
get_cost_by_provider
Get cost breakdown grouped by cloud provider
get_cost_by_resources
Get per-resource cost breakdown showing individual resource costs
get_cost_by_tag
Get cost and savings grouped by tag key (showback)
get_cost_by_team
Get cost and savings attributed to each team (showback)
get_cost_overview
START HERE for any cost question: 'where is the money going', 'what is my spend', 'how do I cut cost'
get_cost_trends
Get cost trends over time at daily, weekly, or monthly granularity
get_costs
Get the organisation-level cost and savings summary
get_currency_exchange_rate
Get current currency exchange rates used by the organisation for cost calculations
get_report_snapshots
Get monthly cost and savings snapshots for historical comparison
get_resource_cost_history
Get daily cost history for a specific resource over a date range
list_budgets
List budgets configured for resources or resource groups
Optimize · Recommendations, schedules, overrides, resource groups
Tool
What it's for
get_override_candidates
List what can be overridden — every resource and resource group that has a schedule attached, each annotated with whether an override can be created for it RIGHT NOW and why
get_recommendation
Get full details of a single recommendation including affected resources and remediation steps
get_recommendation_by_provider
Get recommendation counts and savings breakdown by cloud provider
get_recommendation_summary
Get recommendation summary stats — total potential savings and counts by severity
get_recommendations
List optimization recommendations for cost savings and best practices
list_recommendation_resources
List resources that have active recommendations, with their recommendation details
Operate · State history, actions, scheduler events, provisioning, Services
Tool
What it's for
get_action
Get details of a specific start/stop action execution
get_infrastructure
Get one cluster or VM pool by id, as returned by list_infrastructure
get_latest_bulk_action
Get the most recent bulk start/stop action for a resource group
get_override
Get details of a specific schedule override
get_provisioning_job_overview
Get everything about one provisioning job in a single call: its status, every step with that step's own status and timings, the actionable failure detail when a step failed (errorCategory, errorFixHint, errorRetryable, errorConsoleUrl), and the databases the job created
get_resource_group
Get resource group details including member resources
get_schedule
Get full schedule details including weekly time windows and assigned resource groups
get_state_history
List resource start/stop state transitions
list_events
List scheduler execution events showing what the scheduler did and when
list_infrastructure
List all the infrastructure in this organisation as ONE list — the same board the Infrastructure page shows
list_overrides
List schedule overrides — temporary force-on/off rules that take priority over schedules
list_provisioning_jobs
List provisioning jobs — the record of ZopNight building, changing or tearing down infrastructure
list_resource_groups
List resource groups — logical groupings of resources assigned to schedules
list_schedules
List start/stop schedules that control when resources run
list_workflows
List the remediation workflows that are PARKED WAITING FOR YOU to act
Start connecting a GitHub account so ZopDay can deploy from its repositories
get_project_stats
Get rollup counts (services, environments, health) for one or more projects in a single call
get_service_config
Get the runtime configuration of a service: port, replicas, liveness probe path, rootPath, exposed hosts, CPU/memory resources, and the NAMES of its environment variables
get_service_overview
Get everything about one service in a single call: its status and statusBucket, the current revision (number, stage, image, commit, who deployed it), recent deploys, the last deploy events, and its public URL if it has one
get_service_url
Get the public URL a service is reachable at
list_branches
List the branches of one git repository reachable through a connected git integration
list_deploys
List a service's deploy history, newest first
list_environments
List the environments in a project, each resolved to WHERE it actually runs
list_integrations
List the org's connected integrations (git, ITSM)
list_projects
List the ZopDay projects in this organisation
list_repositories
List the git repositories ZopDay can deploy from, through a connected git integration
list_services
List the services deployed in one environment
wait_for_deploy
Wait for a service's in-flight deploy to finish, then report the outcome
Get current-month spend for the entities a budget targets — use this to answer 'how much has account X / this resource / this group spent so far', and to see which targets are tracking over
get_cloud_account_permissions
Get the per-permission IAM probe verdicts for one cloud account — use this to explain WHY discovery or a cost/recommendation feature is missing data, rather than guessing
get_team
Get details of a specific team including member count and resource count
list_audit_logs
List API audit log entries showing who did what and when
list_notification_channels
List notification channels (Slack, Teams, Google Chat, webhooks) configured for the organisation
list_roles
List the roles defined in this organisation and the RBAC policies each one carries
list_smart_tags
List smart tags — the tags ZopNight DERIVES for a resource from this org's tagging policies, to fill gaps in the tags the cloud account actually carries
list_tagging_policies
List the tagging policies that govern which tags this org's resources must carry and how each tag's value is derived
list_team_members
List members of a team
list_team_resources
List resources assigned to a team
list_teams
List teams in the organisation
list_users
List all users in the organisation
Diagnose · Metrics, errors, and the state behind a failed deploy or job
Tool
What it's for
diagnose_service
Diagnose an unhealthy Service in ONE call — start here instead of stitching four tools together
get_k8s_manifest
Get the raw Kubernetes manifest (the full object as JSON) for one object
get_k8s_resource
Get the live detail of one Kubernetes object (the structured view)
get_live_metrics
Get current CPU/memory/network utilization for ONE resource, fetched on demand from the cloud provider right now
get_pod_logs
Get recent stdout/stderr log lines from ONE pod container
get_resource_metrics
Get CPU, memory, disk, and network utilization metrics for resources
get_service_events
Get the deploy event history for one Service — the durable record of what was deployed, when, and why it failed
list_k8s_events
List recent Kubernetes Events for a cluster — the warnings that explain failures
list_k8s_resources
List live Kubernetes objects of one kind in a cluster
Introspect · What your own token can do
Tool
What it's for
check_eligibility
Ask whether a write would be accepted, WITHOUT performing it
get_my_permissions
Get YOUR OWN effective RBAC permissions in this org — call this BEFORE attempting an action, instead of discovering a 403 by trying
get_organisation
Get organisation settings and metadata
list_organisations
List organisations the authenticated user has access to
Writes (34) — gated by write tier, off by default
Tier 1 — metadata only · Changes to ZopNight's own records. No cloud state, no cost.
Tool
What it's for
accept_smart_tag
Accept smart tags on a resource — promote tag keys ZopNight DERIVED from this org's tagging policies into cost attribution
create_budget
Create a monthly spend budget for ONE resource, resource group or cloud account
delete_budget
Delete a budget
revoke_smart_tag
Revoke smart tags on a resource — return accepted tag keys to PENDING, so they stop being used for cost attribution
update_budget
Change an existing budget's monthly amount and alert threshold
update_recommendation_status
Set a recommendation's status — this is BOOKKEEPING ONLY
Change an existing resource TAGGING policy — its label, its rule, or whether it is on
Tier 3 — irreversible and/or cost-incurring · No undo.
Tool
What it's for
cancel_workflow
Cancel a running remediation workflow
create_provisioning_job
Provision NEW cloud infrastructure — a cluster, a VM pool or a managed database
delete_k8s_resource
Delete a live Kubernetes object
delete_project
Delete a Project
delete_provisioning_job
Tear down provisioned cloud infrastructure — the reversal of create_provisioning_job
delete_service
Delete a Service: uninstall it from the cluster and remove it from ZopDay
restart_k8s_workload
Restart a Kubernetes workload's pods — a rolling restart
retry_provisioning_job
Re-attempt a FAILED provisioning job
start_resource
Start ONE stopped cloud resource right now
stop_resource
Stop ONE cloud resource right now
update_k8s_manifest
Replace a live Kubernetes object's spec
Pagination
List tools return results in pages — tools/list says which, in each tool's own
description. Pass a page argument (starting at 1) to navigate through results.
The response includes:
When hasMore is true, increment the page number to fetch the next set.
If you omit the page argument, the server returns page 1 by default.
Filters Reference
Many tools accept optional filter arguments to narrow results. Pass them
in the arguments object alongside org_id. All filters are optional
unless noted otherwise.
list_resources
Filter
Values
Notes
provider
aws, gcp, azure
Cloud provider
resource_type
compute, disk, kms-key, gcp-subnet, ...
Resource type
status
running, stopped, active, available, ...
Resource status (case-insensitive)
region
us-central1, ap-south-1, us-east-1, ...
Cloud region
search
Any string
Substring match on resource name
cloud_account_id
Account ID
Filter by cloud account
schedulable
true, false (also accepts 1, 0, yes, no)
Whether resource can be scheduled
instance_type
e2-micro, STANDARD, ...
Instance/machine type
sort_by
name
Sort field
sort_order
asc, desc
Sort direction
view
all, parents, children
Resource hierarchy view
parent_uid
Resource UID
Parent resource — requires view=children
tag
Tag key name
Filter by tag key presence
limit
Integer
Results per page
get_recommendations
list_recommendation_resources supports the same filters.