Outcome
By the end of this lesson, you will be able to ship a deploy through an assistant, explain what the three write tiers admit, and predict which of your requests will be refused before you make them.
| Tier | Operator |
| JTBD | ”Do what I just did by hand, without opening the console.” |
| Personas | Platform Engineer · Developer |
| Prerequisites | M1.8.L1 |
| Time | 9 minutes |
| Bloom verb | Ship (Apply), Explain (Understand), Predict (Analyze) |
1. Concept
The same four objects, the same order, one sentence instead of four forms.
What makes that safe is not the assistant. It is the server, which checks three things on every write and refuses if any one of them is missing:
1. THE ORG'S WRITE ACCESS SETTING admits this class of change2. YOUR ROLE permits the underlying action3. YOUR TOKEN carries the matching write capabilityAll three, every call. A refusal is permanent rather than a retry: nothing about asking again changes any of the three.
The three write tiers
TIER 1 METADATA ONLY renaming a project or an environment. Changes ZopNight's own records. No cloud state, no cost.
TIER 2 REVERSIBLE CHANGES creating a project, an environment, a service; shipping a deploy; rolling back; setting environment variables. Bounded blast radius, may affect cost.
TIER 3 IRREVERSIBLE registering or removing infrastructure, starting a database migration. No undo, or it costs money the moment it runs.Everything in this module sits in tier 2. That is a deliberate choice about what a capstone should teach you to trust an assistant with.
What you will never get back
One rule worth memorising, because people test it and are surprised:
NO TOOL RETURNS AN ENVIRONMENT VARIABLE'S VALUE.Keys, yes. Values, never, at any tier, for any role.Reading a secret back is a human action in the console, on purpose.
2. Demo
YOU "Create a project called university-capstone with a dev environment, deploy ghcr.io/me/hello-api:v1 on port 8080, expose it, and give me the URL."
ASSISTANT creates the project tier 2 creates the environment tier 2 creates the service and deploys tier 2 waits for the deploy to finish returns https://hello-api-dev-<suffix>.zop.app
YOU "Now roll it back."ASSISTANT rolls back to the previous deploy tier 2
YOU "Remove the cluster from the platform."ASSISTANT refused: tier 3 is not enabled for this organisationThe last exchange is the lesson. The refusal came from the server, not from the assistant’s judgement.
3. Hands-on (6 min)
1. Connect your assistant to ZopCloud if you have not already. Setup for every supported client is covered later in the course.2. Ask it what it is allowed to do in this organisation.3. Ask it to deploy a second service into the same environment, in one sentence, the way you would tell a colleague.4. Ask for the URL and open it.5. Ask it to roll the service back, then to ship it again.6. Ask for something at tier 3 and read the refusal carefully.Do it through MCP. The same task you just did in the console, asked in one sentence.
BEFORE A ZopCloud account, the project and environment from L1, and an image you can pull.ASK "Deploy hello-api-2 from this image into university-capstone dev, expose it, and give me the URL."CHECK the URL answers, and the service shows one deploy in its history.Tools behind it: create_project (write, tier 2, reversible), create_environment (write, tier 2, reversible), deploy_service (write, tier 2, reversible), set_service_expose (write, tier 2, reversible), wait_for_deploy (read, Ship), get_service_url (read, Ship). The full catalogue is at zop.dev/learn/mcp-tools.
4. Knowledge check
Q1
Your assistant refuses to ship a deploy. Your role is Admin and the organisation has write access turned on. The remaining explanation:
A. The image is not pullable
B. The token you connected with does not carry the write capability
C. Deploys are tier 3
D. The environment is in a different project
Show answer
Correct: B. All three conditions have to hold, and two of them are satisfied here. A token can carry less than your identity, which is exactly what a read-only token is for. A pull failure would fail the deploy after it started rather than refuse it, and deploys are tier 2.
Q2
Which of these is tier 3?
A. Creating an environment
B. Setting environment variables on a service
C. Removing a cluster from the platform
D. Rolling a service back
Show answer
Correct: C. Deregistering infrastructure has no undo, which is the definition of the tier. A, B and D all change state you can change back, so they sit at tier 2. The tier is about reversibility and cost, not about how important the action feels.
Q3
You ask your assistant to read back the database password it just set on your service. It declines. Why?
A. The value is encrypted and it lacks the key
B. Reading secrets requires tier 3
C. It needs a fresh token first
D. No tool returns an environment variable’s value, at any tier, for any role
Show answer
Correct: D. Keys are returned, values never are. This is a property of the surface rather than of your permissions, so no amount of extra access changes it. Revealing a secret stays a deliberate human action in the console.
5. Apply
Before you let an assistant near a real environment, ask it what it is allowed to do and read the answer. It costs one question and it tells you which of the three checks is going to stop you.
KEEP the deploy you shipped through the assistant the refusal message from the tier 3 requestThe refusal is worth keeping because it is the clearest description of your organisation’s current write posture that you will find anywhere.
Related lessons
- L1: Deploy a service on ZopCloud
- L3: Point ZopNight at what you built
- T6.M6.5.L2: When you need writes
Glossary terms touched
MCP · PAT · Deployment · MCP configuration