What the ZopNight MCP server's read and write tools cover, how the Write access setting gates them, and the required arguments, pagination, and filter values.
12 min readLast updated:
The MCP server exposes two classes of tool: reads, available to every connected agent, and writes, which change something and are governed by your organisation’s Write access setting. 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:
Terminal window
Authorization: Bearer MCP_PAT
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 are available at every level of write access. 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:
Setting
Admits
Examples of what it turns on
Read-only
Nothing
—
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
Reversible changes
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
Irreversible changes
No undo, or incurs cost.
Start and stop resources, create a Provisioning job, Kubernetes manifest writes and workload restarts, cancel a workflow, every delete
The settings are cumulative — Reversible changes admits the metadata-only tools too. The picker in Settings enumerates the exact tools each setting turns on, generated from the same manifest the gateway authorizes against.
Some surfaces are excluded at every setting and nothing adds them: roles and permissions, user management, organisation deletion, cloud-account deletion, credentials, and bulk actions.
Retries are only partly deduplicated
Every write tool accepts an optional idempotency_key, up to 128 printable ASCII characters. It does two real things: a repeat call carrying the same key replays the original response for 24 hours instead of executing the write again, and two concurrent calls sharing a key are collapsed into a single execution. Reusing a key with different arguments is rejected rather than silently replayed, so a genuine retry is safe and a key collision is loud rather than silent.
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 callAgain: 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 level 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 Write access setting 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 the Write access setting
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
Reversible changes · Bounded blast radius, may affect cost.
Tool
What it's for
attach_resource_to_schedule
Put one resource under a schedule
create_environment
Create an environment inside a project
create_override
Suspend a schedule for a window, on one resource or on EVERY MEMBER of a resource group
create_project
Create a project
create_schedule
Create a recurring start/stop schedule
create_tagging_policy
Create a resource TAGGING policy — a rule that derives a tag onto this org's cloud resources so their spend can be attributed
delete_override
Remove ONE override, letting its schedule resume on that target within about a minute
delete_schedule
Delete a schedule
deploy_service
Create a new service in an environment and ship its first deploy
detach_resource_from_schedule
Take ONE resource off a schedule, leaving the schedule and every other attached resource untouched
redeploy_service
Ship an existing service again as a new deploy
rollback_service
Roll a service back to an earlier deploy
set_auto_deploy
Turn auto-deploy on or off for a service
set_service_env_vars
Set or remove a service's environment variables AND roll them out
update_schedule
Change a schedule's name, description, timezone or rules
Change an existing resource TAGGING policy — its label, its rule, or whether it is on
Irreversible changes · No undo, or incurs cost.
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:
Terminal window
{
"items": [...],
"total": 42,
"page": 1,
"limit": 10,
"hasMore": true
}
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.
updated_at, generated_at, savings_usd, severity, title
Sort field
sort_order
asc, desc
Sort direction
list_schedules
Filter
Values
Notes
search
Any string
Matches schedule name
team_id
Team UUID
Returns team-linked + standalone schedules
list_resource_groups
Filter
Values
Notes
search
Any string
Matches group name
team_id
Team UUID
Returns team-matching + unassigned groups
list_overrides
Filter
Values
Notes
group_id
Resource group UUID
Filter by resource group
resource_uid
Resource UID
Filter by resource
status
active, expired
Override status
sort_by
created_at, expires_at
Sort field
sort_order
asc, desc
Sort direction
list_cloud_accounts
Filter
Values
Notes
search
Any string
Matches account name
provider
aws, gcp, azure
Cloud provider
get_cost_trends
Filter
Values
Notes
from
YYYY-MM-DD
Start date (defaults to the backend range)
to
YYYY-MM-DD
End date (defaults to the backend range)
granularity
daily, weekly, monthly
Time granularity (defaults to daily)
get_cost_by_resources
Filter
Values
Notes
resource_uids
Comma-separated UIDs
Filter to specific resources
sort_by
cost
Sort field
sort_order
asc, desc
Sort direction
list_audit_logs
Filter
Values
Notes
method
POST, DELETE, PUT, PATCH
HTTP method
resource
Any string
Path substring match
status
HTTP status code
Filter by response status
user
Email address
Filter by user email
search
Any string
General search
start_date
YYYY-MM-DD
Start date
end_date
YYYY-MM-DD
End date
sort_order
asc, desc
Sort direction
get_state_history
Filter
Values
Notes
state
stopped, started, failed
Action state
resource_uid
Resource UID
Filter by resource
changed_by_type
schedule, manual, override, bulk
How the action was triggered
from
YYYY-MM-DD
Start date
to
YYYY-MM-DD
End date
sort_by
changed_at
Sort field
sort_order
asc, desc
Sort direction
list_events
Filter
Values
Notes
schedule_id
Schedule UUID
Filter by schedule
resource_uid
Resource UID
Filter by resource
sort_order
asc, desc
Sort direction
list_budgets
Filter
Values
Notes
resource_group_id
Resource group UUID
Filter by resource group
resource_uid
Resource UID
Filter by resource
Filter Example
To list only running AWS compute resources sorted by name:
Terminal window
{
"method": "tools/call",
"params": {
"name": "list_resources",
"arguments": {
"org_id": "your-org-id",
"provider": "aws",
"resource_type": "compute",
"status": "running",
"sort_by": "name",
"sort_order": "asc",
"page": 1
}
}
}
Example Prompts
Once connected, try asking your AI assistant:
What to ask
What happens
”List my organisations”
Shows all orgs you have access to
”What are my cloud costs this month?”
Shows cost summary and savings
”Show me optimization recommendations”
Lists recommendations with savings estimates
”How many resources do I have?”
Shows total resource count and summary by provider
”What schedules are active?”
Shows start/stop schedules
”Show my cloud accounts”
Lists connected AWS/GCP/Azure accounts
”Show cost trends over the last month”
Shows daily cost trends
”What is the CPU utilization of my EC2 instances?”
Shows CPU/memory metrics
”Are my budgets on track?”
Shows budget health summary
”Show billing sync status”
Shows if billing data is syncing correctly
”What teams exist in my org?”
Lists all teams and members
”Show audit logs”
Shows recent activity in the organisation
”What actions were executed recently?”
Shows scheduler events and action history
Multi-cloud automation·Production-ready in 30 min·SOC 2 · ISO 27001·20–60% off the bill, first month·4 platforms · 1 console·Multi-cloud automation·Production-ready in 30 min·SOC 2 · ISO 27001·20–60% off the bill, first month·4 platforms · 1 console·