Generate an API key in incident.io under Settings > API Keys with the 'Create incidents' scope enabled; all requests use the Authorization: Bearer YOUR_TOKEN header
Fetch available severity IDs: GET https://api.incident.io/v2/severities to list organization-specific severities and note the ID for the desired level
Create an incident: POST https://api.incident.io/v2/incidents with idempotency_key (unique string per incident), name, severity.id, visibility (public or private), and optionally mode (real or test)
Update incident status or add updates: PATCH https://api.incident.io/v2/incidents/{id} to change status or POST https://api.incident.io/v2/incident_updates to append a timestamped update message
Assign roles: POST https://api.incident.io/v2/incident_role_assignments to assign an incident lead or communications lead using role IDs fetched from GET /v2/incident_roles
Retrieve the incident: GET https://api.incident.io/v2/incidents/{id} to confirm field values and verify the incident appears in the dashboard
Known gotchas
The idempotency_key must be unique per incident; using the same key for a second POST returns the original incident rather than creating a new one — use a UUID or timestamp-based key per call
Severity IDs and custom field IDs are organization-specific and cannot be hardcoded across accounts; always fetch them dynamically before creating incidents
The visibility field is required and must be explicitly set to public or private; omitting it returns a validation error, not a default
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp