diff --git a/puppy_kit/mcp/server.py b/puppy_kit/mcp/server.py index 9c816e3..e68b6c5 100644 --- a/puppy_kit/mcp/server.py +++ b/puppy_kit/mcp/server.py @@ -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. @@ -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. @@ -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, @@ -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). @@ -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: @@ -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.