Coolify¶
Inventory, status and logs from a Coolify instance. Coolify's own token abilities do the enforcing, which is what makes this the cleanest Tier 1.
| Policy | coolify/read-only |
| Connection kind | http |
| Upstream looks like | https://app.coolify.io/mcp |
| Credential | Coolify API token |
| Tier | 1 — the credential refuses writes on its own, and Prodpeek refuses them again |
| Time to set up | about 2 minutes |
Grant exactly these¶
- Ability: read
-
Everything this profile allows. Nothing else is needed.
Do not grant these¶
Each of these would undo the point of the rest
Ability: write
The profile denies every write tool; the token should not be able to either.
Ability: deploy
Triggers deployments. Denied in the profile for the same reason.
Ability: root
Full control of the instance.
read-sensitive
The one that is easy to tick by accident and quietly demotes the whole profile. With it OFF, Coolify's own api.sensitive filter strips environment values and secrets from every response — so the tools that would leak them cannot, regardless of what Prodpeek allows.
Why this one is the clean example¶
Coolify tokens carry granular abilities — read, write, deploy, root — plus a
separate read-sensitive flag. A token created with read only, and read-sensitive
off, physically cannot write and cannot return environment values. Prodpeek's
allowlist and the credential refuse the same things independently, without either
knowing about the other. That is what Tier 1 means here.
Steps¶
- In Coolify: Keys & Tokens → API tokens → Create new token.
- Name it
prodpeek. - Tick read. Leave write, deploy and root unticked.
- Leave read-sensitive off. This is the field that matters most.
- Copy the token — Coolify shows it once.
- Enable the MCP endpoint if you have not: Settings → Advanced → MCP. The URL
is your instance plus
/mcp. - In Prodpeek: Services → Add a service → Coolify, paste the token, then Test connection.
What Test connection should show¶
Your Coolify version decides the tool names, and they have moved between releases. Anything advertised that the profile does not name lands in not in the policy and is denied by default. That is safe, but it also means a read you wanted might be missing — send the list along and the profile can be corrected.
Check you got it right¶
- [ ] The token row lists 'read' only, and read-sensitive is off.
- [ ] In Prodpeek, Test connection shows the write tools under 'denied by policy'.
If an agent is reading this
Requires the user's Coolify login. Ask them to confirm read-sensitive is OFF — it is the single field that decides whether this is Tier 1.
Then add it to Prodpeek¶
Console: Services → Add a service, pick coolify/read-only, paste the credential. Or from an agent, add_service with no credential and hand over the drop link.
Then press Test connection and read all three lists.