Can an AI agent read PagerDuty incidents through Tares and explain them?
Yes, Tares lets an AI agent read PagerDuty incidents and explain them. PagerDuty delivers incidents to a Tares webhook source, and the agent reads them over MCP. Tares has no connector of its own for PagerDuty today, so PagerDuty reaches Tares through the webhook connector and a PagerDuty-side setup. The client only needs the Tares MCP endpoint.
How it works
PagerDuty posts each v3 webhook event to the ingest URL of a Tares webhook source. Tares stores the payload lossless, so the event id, event_type, resource_type, occurred_at and the agent, client and data objects are all kept. The labels you declare map payload fields into the envelope, and those labels are what the agent selects on.
The agent connects to Tares over MCP, from Claude Code, Codex, Cursor or any MCP client (see Connecting agents). Its read tool returns a correlated, time-ordered timeline across all matching sources. You pick a label and a value, and project or sources narrows the read. An incident from PagerDuty appears in that timeline with the labels you declared, its stored payload and its time, next to whatever else Tares ingests for the same entity.
The client needs no PagerDuty connector because the vendor-specific work sits on the Tares side. PagerDuty reaches Tares through the webhook connector, and the client sees only the Tares MCP tools. catalog_list shows the source, and catalog_describe returns its schema, entities, freshness, lineage and sample events.
The explanation is the agent’s own work. It reads the incident events and their surroundings from Tares and writes the account in plain language. For the wider picture, see AI SRE.
Set it up
- Create a webhook source in Tares. Use labels with one-level dotted fields such as
event.event_type, and set a fixedevent_type, becauseevent_type_fieldreads top-level fields only. Copy the ingest endpoint from the source page.
- name: pagerduty-incidents
connector: webhook
config:
event_type: incident
labels:
- { name: event_type, field: event.event_type, primary: true }
- { name: resource_type, field: event.resource_type }- In PagerDuty, create a v3 webhook subscription, in the console or with the Webhook Subscriptions API. Set its delivery URL to the Tares ingest URL.
- Choose the events, such as
incident.triggeredandincident.resolved, and the scope: account, team or service. - When Tares has auth on, add a custom header
Authorization: Bearerfollowed by an ingest-scoped API key to the delivery method. Do not setsignature_schemeon the source. PagerDuty signs with av1=prefixed header thathmac_sha256does not accept, so the Bearer header is the credential. - Start Tares locally if you have not already.
tares up- Connect your agent to the Tares MCP endpoint. Locally, start the MCP server with
tares mcpfirst. Then add the endpoint to Claude Code.
claude mcp add --transport http tares http://localhost:8788/mcpOn a secured instance, the client also sends a read-scoped API key as a Bearer Authorization header. Each client tab on the agents page shows where it goes.
- Ask your agent: “Use tares: what are you ingesting right now?” It calls
catalog_listand lists the PagerDuty source. Then ask it to explain the latest incident.
What you get
- An agent that answers questions about PagerDuty incidents from a time-ordered timeline instead of a pasted alert.
- Incident events with the labels you declared and a lossless payload, so fields such as
data,agentandclientstay available for the agent to read. - Incidents correlated by label with other data in Tares, so the agent can explain an incident in context.
- One client setup, the Tares MCP endpoint, whichever alert vendor feeds Tares.
- A way to confirm what arrives: Recent events and Fields on the source page show the events and which payload fields come in.
When something else fits
- If your alerts come from Alertmanager, the dedicated
alertmanagerconnector turns each alert into its own event. It needs a webhook receiver in Alertmanager pointed at a Tares ingest URL. - If you want an agent that wakes on its own when an incident arrives, build a trigger and a Tares agent instead of asking an external client to read after the fact.