Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 22 additions & 15 deletions puppy_kit/mcp/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,8 @@ def dd_incidents_get(incident_id: str) -> str:
(bug report content, user scope, what actually triggered the incident).

The fields block contains triage data: root_cause, summary, triage_findings,
services, teams, needshumanattention, triagecompleted, githubreferences, etc.
services, teams, needshumanattention, triagecompleted, NeedsWrenchBotCheck,
githubreferences, etc.

If timeline_truncated is true, the incident has more than 10 cells —
call dd_incidents_get_timeline to read the full timeline.
Expand Down Expand Up @@ -150,7 +151,7 @@ def dd_incidents_create(
Use this when a new problem is detected and requires an incident record. Requires
a descriptive title. Severity and team are optional and can be set via dd_incidents_update
after creation. Returns the created incident ID which can then be passed to
dd_incidents_update to set status and add detail.
dd_incidents_update to add detail. To set status use dd_incidents_set_status.

Args:
title: Short descriptive title of the issue.
Expand Down Expand Up @@ -193,6 +194,7 @@ def dd_incidents_update(
needs_human_attention: str | None = None,
triage_completed: str | None = None,
is_duplicate: str | None = None,
needs_wrench_bot_check: str | None = None,
github_refs: str | None = None,
datadog_refs: str | None = None,
teams: list[str] | None = None,
Expand All @@ -201,26 +203,29 @@ def dd_incidents_update(
) -> str:
"""Update an existing Datadog incident with title, severity, commander, and custom fields.

Use to progress an incident and populate custom workflow fields. At least one field
must be provided. Use custom fields to document triage results, root cause, detection
method, and related resources. To change incident status use dd_incidents_set_status.
Use to populate triage results, root cause, detection method, and related resources.
At least one field must be provided.

To change incident status (active/stable/resolved) use dd_incidents_set_status — not
this tool. Passing status here will have no effect.

Args:
incident_id: The incident UUID to update.
title: New incident title (optional).
severity: New severity — SEV-1 through SEV-5 (optional).
assignee: Assignee name (e.g., 'muhammad', 'willem', 'jeong') to set as incident commander (optional).
summary: Brief summary of the incident (optional).
root_cause: Root cause description (optional).
triage_findings: Triage findings (optional).
summary: Brief one-line summary of who is affected and what they cannot do (optional).
root_cause: Root cause description — specific component, error class, and code path (optional).
triage_findings: Evidence log — counts, rates, blast radius, GitHub findings (optional).
detection_method: How the incident was detected: 'monitor', 'employee', 'customer',
'alert', or 'unknown' (optional).
needs_monitoring: 'yes' or 'no' (optional).
needs_human_attention: 'yes' or 'no' (optional).
triage_completed: 'yes' or 'no' (optional).
is_duplicate: 'yes' or 'no' (optional).
github_refs: GitHub references (optional).
datadog_refs: Datadog references (optional).
needs_monitoring: 'yes' or 'no' — whether the incident needs ongoing monitoring (optional).
needs_human_attention: 'yes' or 'no' — whether a human must take action (optional).
triage_completed: 'yes' or 'no' — set to 'yes' when triage is done (optional).
is_duplicate: 'yes' or 'no' — set to 'yes' if this duplicates another incident (optional).
needs_wrench_bot_check: 'yes' or 'no' — setting to 'yes' triggers the triage webhook (optional).
github_refs: GitHub PR or issue URLs (optional).
datadog_refs: Related Datadog URLs (optional).
teams: List of team names (optional).
services: List of service names (optional).
related_incidents: List of related incident IDs (optional).
Expand Down Expand Up @@ -252,6 +257,8 @@ def dd_incidents_update(
args += ["--triage-completed", triage_completed]
if is_duplicate is not None:
args += ["--is-duplicate", is_duplicate]
if needs_wrench_bot_check is not None:
args += ["--needs-wrench-bot-check", needs_wrench_bot_check]
if github_refs is not None:
args += ["--github-refs", github_refs]
if datadog_refs is not None:
Expand Down Expand Up @@ -350,7 +357,7 @@ def dd_incidents_get_timeline(incident_id: str) -> str:
def dd_incidents_delete(incident_id: str) -> str:
"""Permanently delete a Datadog incident. Use only to remove erroneous or duplicate records.

This is irreversible. For closing a real incident, use dd_incidents_update with
This is irreversible. For closing a real incident, use dd_incidents_set_status with
status='resolved' instead — that preserves the incident history. Only call this
when an incident was created by mistake and should not exist at all.

Expand Down
Loading