Post a weekly reliability report with AI
This guide builds a report that writes itself every Monday. The workflow collects the past week’s numbers from your KloudMate workspace, and an AI Prompt step turns them into a short report for the engineering channel: the busiest services and their error rates, the incidents that are still open, and the SLOs that are running out of error budget.
The numbers come from the KloudMate MCP server, the same server that coding tools such as Claude Code use to query KloudMate. A workflow connects to it as a Custom MCP Server, and MCP Tool Call steps call its tools the way an agent would. Each step calls one tool that you pick, with the arguments you set, so the workflow asks the same questions every week.
The finished workflow has these steps:
Before you start
Section titled “Before you start”- You need the Developer role in a KloudMate workspace whose plan includes workflows.
- You need a Slack connection with the Workflows capability, and a channel for the report. Invite the KloudMate bot to that channel.
- Each run uses 1 workflow credit. See Check workflow usage.
Step 1: Connect the KloudMate MCP server
Section titled “Step 1: Connect the KloudMate MCP server”-
Create a personal API key and copy it. The workflow reads whatever the key’s owner can read, so create it from an account that can see every service you want in the report.
-
Copy the ID of this workspace from its URL in the KloudMate app. It starts with
ws_. -
Open Workflows → Connections, click Connect, and pick Custom MCP Server. Set Connection name to
KloudMate MCP, and fill in the form:Field Value Server URL https://api.kloudmate.com/mcpTransport Streamable HTTP Authentication Bearer token, with your personal API key as the token Extra headers {"x-workspace-id": "YOUR_WORKSPACE_ID"} -
Click Connect.
The personal key works for every workspace its owner belongs to, and x-workspace-id picks the one the tools read. KloudMate stores the key encrypted with the connection, so it never appears in the workflow or in run history.
Step 2: Import the workflow
Section titled “Step 2: Import the workflow”- Copy the YAML below.
- Open Workflows, click Import, paste the YAML, and click Import.
- Click Open workflow, and set these before you publish:
- On the three MCP Tool Call steps, pick your
KloudMate MCPconnection. - On Post the report, pick your Slack connection and the channel.
- On the trigger, set Timezone to your team’s timezone, such as
Europe/Berlin.
- On the three MCP Tool Call steps, pick your
How each step works
Section titled “How each step works”Collect the week’s data
Section titled “Collect the week’s data”A Parallel step runs three MCP Tool Call steps at the same time, one in each branch. Each step calls one tool on the KloudMate MCP server:
| Step | Tool | Arguments |
|---|---|---|
| Traffic and errors by service | search_traces | groupBy is serviceName, window is 7d, and view is detail |
| Open incidents | check_incidents | view is detail |
| SLOs | check_slos | view is detail |
Pick the tool from the Tool list, and the step builds the Arguments form from the tool’s own input schema. A window of 7d covers the seven days before the step runs, so the same step reads the past week every Monday.
search_traces grouped by serviceName returns each service’s requests, errors, error rate, and p50, p95, and p99 latency, busiest service first. check_incidents without a target returns the incidents that aren’t resolved yet, with their severity. check_slos returns every SLO, worst first, with its compliance and remaining error budget. It includes disabled SLOs, so the prompt tells the model to skip them. The detail view returns more rows than the default summary view, which lists only the three busiest services.
Every tool on this server only reads data, so the workflow can’t change anything in KloudMate. Each tool answers with a text summary, and the step returns it as result, so the next step reads it as {{ steps.traffic.output.result }}. See MCP Tool Call.
Write the report
Section titled “Write the report”An AI Prompt step writes the report. The Prompt gives the model the structure to follow and the rules for the numbers, and then the data from the three tools:
Each tool has already worked out the numbers, such as each service’s error rate and its latency in milliseconds, so the model only picks and summarizes them.
The prompt asks the model to use only numbers from the data, and to say so when a section has none, which keeps it from filling a gap with a guess. Read the first few reports against the numbers in KloudMate before you rely on them.
AI Prompt fits here because the data comes from your own workspace. Incident titles and service names are written by your team and your systems. When a prompt includes text that someone outside your team can write, such as a support ticket or a Slack message, use AI Extract instead, which can’t return anything outside its output fields. See AI Prompt.
Post the report
Section titled “Post the report”A Slack Post Message step posts steps.write.output.text. The replace filter turns <! into <!, which stops text such as <!channel> from notifying the whole channel if the model ever writes it:
Step 3: Test and publish
Section titled “Step 3: Test and publish”- Test each of the three MCP Tool Call steps from its Test tab. The output shows what the tool returned for your workspace, and a connection problem shows up here first.
- Click Test run. It writes a report from this week’s data and posts it in the channel.
- Compare the report with what KloudMate shows for the same week, and adjust the prompt if you want a different focus.
- Click Publish. The first publish also switches the workflow on.
Adapt the workflow
Section titled “Adapt the workflow”- Report on other data. Add another MCP Tool Call step to Collect the week’s data, such as
check_alertsfor the open alert groups. Then add its result to the prompt, with a line that says what it is. The KloudMate MCP server page lists the tools. - Report every day. Change the trigger to Daily, and change the
windowof Traffic and errors by service to1d. - Email the report instead. Replace Post the report with a Send Email step, and ask for Markdown instead of Slack formatting in the prompt, because Send Email reads Markdown.
- Use another MCP server. An MCP Tool Call step can call any server you connect as a Custom MCP Server, such as an internal service your team built. Use API key under Authentication for a server that reads its key from a custom header.
Related
Section titled “Related”- MCP Tool Call for the step’s fields and output.
- KloudMate MCP Server for the server’s tools and connection details.
- Connections for Custom MCP Server connections.