MCP / AI IntegrationModel Context Protocol server for AI assistants and agents
Overview
WebSignal exposes an MCP (Model Context Protocol) server, allowing AI assistants, copilots, and autonomous agents to interact with your monitoring data programmatically. MCP provides a structured, tool-based interface specifically designed for LLM consumption.
With MCP, your AI assistant can list monitors, query incidents, acknowledge alerts, add notes, and even run ad-hoc availability checks — all through a standard JSON-RPC protocol over HTTP.
Connection
| Property | Value |
|---|---|
| MCP endpoint | https://api.websignal.io/mcp |
| Transport | Streamable HTTP |
| Protocol version | 2024-11-05 |
| Discovery | https://api.websignal.io/.well-known/mcp.json |
| OAuth discovery | https://api.websignal.io/.well-known/oauth-authorization-server |
Authentication
Most MCP tools require OAuth 2.0 Bearer tokens, identical to the REST API. The server supports:
- Authorization Code + PKCE — for interactive AI clients
- Device Code — for CLI-based agents and headless environments
check_http_availability_latency tool is publicly accessible without authentication (rate-limited to 1 request per minute per IP).
Quick Start
1. Initialize MCP Session
POST https://api.websignal.io/mcp
Content-Type: application/json
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "my-client",
"version": "1.0.0"
}
}
}
2. List Available Tools
POST https://api.websignal.io/mcp
Content-Type: application/json
Mcp-Session-Id: <from initialize response>
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list"
}
3. Call a Tool
POST https://api.websignal.io/mcp
Content-Type: application/json
Authorization: Bearer <token>
Mcp-Session-Id: <from initialize response>
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "list_monitors",
"arguments": {}
}
}
Tools
incidents
Incident management and querying via MCP protocol
| Tool | Description |
|---|---|
list_all_incidents | List all incidents for the authenticated user's monitors. Returns an array of incident objects with fields: id, monitorId, monitorName, incidentType (Availability|SslExpiry|Latency|Dns), status (Ongoing|Investigating|Resolved), isClosed, acknowledged, started (ISO 8601), ended (ISO 8601 or null if ongoing), durationFormatted (human-readable), failureReason. Supports pagination via page/pageSize, or date range filtering via startDate/endDate/maxResults. Use list_open_incidents for only active incidents, or get_incident for full details including notes. |
list_open_incidents | List only open/unresolved incidents for the authenticated user's monitors. Excludes resolved and closed incidents. Returns the same fields as list_all_incidents: id, monitorId, monitorName, incidentType, status, isClosed, acknowledged, started, ended, durationFormatted, failureReason. Supports pagination via page/pageSize parameters. |
get_incident | Get full details for a single incident including notes, acknowledgement info, and type-specific context. Returns: id, monitorId, monitorName, incidentType, status, isClosed, acknowledged, acknowledgedAt, acknowledgedBy, closedBy, started, ended, durationFormatted, failureReason, context (type-specific JSON), and notes array (each with id, note, createdAt, createdBy). Use list_all_incidents or list_open_incidents first to find the incident ID. |
get_incident_notes | Get all notes for a specific incident, ordered by most recent first. Returns an array of note objects with fields: id, note (text content), createdAt (ISO 8601), createdBy (user identifier), lastModified, modifiedBy. Use get_incident to see notes alongside full incident details. |
acknowledge_incident | Acknowledge or unacknowledge an incident. Acknowledging records who acknowledged it and when. Returns the full updated incident object (same fields as get_incident). Cannot modify closed incidents. Set acknowledged=false to unacknowledge. |
close_incident | Close an incident, marking it as resolved. Sets status to Resolved, records who closed it, and sets the ended timestamp if not already set. Closed incidents cannot be modified further. Returns the full updated incident object (same fields as get_incident). |
add_incident_note | Add a note to an incident for tracking investigation progress, root cause analysis, or resolution steps. Returns the created note object with fields: id, incidentId, note, createdAt, createdBy. Cannot add notes to closed incidents. Use get_incident_notes to view existing notes. |
Auth: Required (Bearer)
monitors
Monitor management and status querying via MCP protocol
| Tool | Description |
|---|---|
list_monitors | List all monitors for the authenticated user with current status. Returns an array of monitor objects with fields: id, name, url, healthStatus (available|unavailable|degraded), monitoringStatus (enabled|disabled|paused), monitorTypes (array of enabled types: HttpAvailability, SslCertificate, Latency, Dns, TcpUdp), checkInterval (ISO 8601 duration), lastChecked (ISO 8601 or null), created (ISO 8601), lastModified (ISO 8601). Supports optional filtering by status and monitoringStatus parameters. Use get_monitor for full details including latest test result and incident. |
get_monitor | Get full details for a single monitor including configuration, latest test result, and latest incident. Returns: id, name, url, healthStatus, monitoringStatus, monitorTypes, checkInterval, lastChecked, created, lastModified, numberOfChecksBeforeAlert, reporting (dailyReport, weeklyReport, monthlyReport), latestTestResult (responseTime, statusCode, wasAvailable, started, ended, failureReason or null), latestIncident (id, status, started, ended, failureReason or null if no incidents). Use list_monitors first to find the monitor ID. |
get_monitor_uptime | Get uptime percentage for a monitor over a specified time window. Returns: monitorId, monitorName, url, daysBack, periodStart (ISO 8601), periodEnd (ISO 8601), totalChecks, healthyChecks, unhealthyChecks, uptimePercentage (0-100 with 4 decimal places), uptimeFormatted (e.g. '99.95%'). Calculated from actual health check results stored in the database. Use list_monitors first to find the monitor ID. |
Auth: Required (Bearer)
monitor-check
Run ad-hoc HTTP availability and latency checks via MCP protocol
| Tool | Description |
|---|---|
check_http_availability_latency | Run a single HTTP request against any URL and return availability and latency metrics. Returns: url, method, statusCode (HTTP status), isAvailable (true if 2xx/3xx), latencyMs (response time in milliseconds), checkedAtUtc (ISO 8601 timestamp), error (empty if successful). Useful for quick health checks, debugging connectivity, or validating a website is reachable. |
Auth: Public
Capabilities
| Capability | Supported |
|---|---|
| Tools | Yes |
| Resources | No |
| Prompts | No |