# MCP server

Spectate has a hosted [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server. Connect an AI assistant to it. The assistant can then answer questions about your incidents, alerts, monitors and status pages, and work in Spectate for you. The assistant always has the same access as you: your role in each team, nothing more.

```text
https://api.spectate.net/mcp
```

There is nothing to install and no API key to copy. The assistant registers itself, and you sign in to Spectate in your browser.

## Before you connect

- You need a Spectate account with a verified email address.
- At least one of your teams must allow AI assistants. This is on by default. See [Team setting](#team-setting).
- Your AI client must support remote MCP servers over Streamable HTTP with OAuth.

Team API tokens (`spct_...`) do not work with the MCP server. The MCP connection does not work with the public API.

## Connect your client

| Client | How to connect |
|---|---|
| Claude (web and desktop) | Open **Settings → Connectors → Add custom connector**. Type the name `Spectate` and the URL `https://api.spectate.net/mcp`. Select **Connect** and sign in. |
| Claude Code | Run `claude mcp add --scope user --transport http spectate https://api.spectate.net/mcp`. Then run `/mcp`, select Spectate and sign in. |
| Cursor | Add `{"mcpServers": {"spectate": {"url": "https://api.spectate.net/mcp"}}}` to `~/.cursor/mcp.json`. Restart Cursor and sign in when Cursor asks. |
| VS Code | Run `code --add-mcp '{"name":"spectate","type":"http","url":"https://api.spectate.net/mcp"}'`. Start the server from the MCP list and sign in. |
| Codex | Run `codex mcp add spectate --url https://api.spectate.net/mcp`. Then run `codex mcp login spectate`. |
| Other clients | Use the transport Streamable HTTP, the URL `https://api.spectate.net/mcp` and OAuth with automatic client registration. |

Your client opens Spectate in your browser:

1. Sign in, if you are not signed in.
2. Read the consent screen.
3. Select **Allow access**.

The consent screen shows two things:

- **The application.** Claude, ChatGPT, Cursor and VS Code have a **Verified** mark. Other clients show the name that they registered, a warning, and the address that receives the authorization. Allow access only for an assistant that you connected yourself.
- **The teams.** The teams that the assistant can use, with your role in each team. Teams that do not allow AI assistants are not on the list.

## Check the connection

Start with a request that changes nothing:

> Use Spectate to list my teams and tell me what is going on in each team. Do not change anything.

The assistant first calls `list_teams`. This tool returns your teams and your role in each team. It also returns the AI assistant access of each team (`full` or `read_only`) and the tools that you can use there.

## What the assistant can do

| Area | Tools |
|---|---|
| Overview | `get_overview`: open incidents, firing alerts, monitors that are down, certificates, hosts that need attention, domains that expire soon, and who is on call. It leaves out sections that your role cannot read. |
| Incidents | `list_incidents`, `get_incident`, `get_incident_timeline`, `declare_incident`, `update_incident`, `post_incident_update`, `acknowledge_incident`, `resolve_incident`, `assign_incident_role`, `get_incident_postmortem`, `save_incident_postmortem`, `publish_incident_to_status_page`, `delete_incident` |
| Alerts | `list_alerts`, `get_alert`, `acknowledge_alert`, `resolve_alert`. Read only: `list_escalation_paths`, `get_escalation_path`, `list_channels`, `list_alert_sources` |
| On-call | `list_on_call_schedules`, `get_on_call_now`, `get_on_call_timeline`, `create_on_call_override`, `delete_on_call_override` |
| Monitors | `list_monitors`, `get_monitor` (with recent failed checks and the checks of the last 24 hours), `create_monitor`, `update_monitor`, `pause_monitor`, `resume_monitor`, `delete_monitor` |
| Hosts, domains and projects | `list_hosts`, `get_host`, `list_domains`, `get_domain`, `create_domain`, `delete_domain`, `list_projects` |
| Status pages | `list_status_pages`, `get_status_page`, `list_status_page_incidents`, `get_status_page_incident`, `create_status_page_incident`, `post_status_page_incident_update`, `update_status_page_incident`, `delete_status_page_incident`, `list_scheduled_maintenances`, `schedule_maintenance`, `update_scheduled_maintenance`, `delete_scheduled_maintenance`, `list_status_page_issue_reports` |
| Team | `list_teams`, `list_team_members` (names and roles, no email addresses) |

Example requests:

- "What is going on in production now?"
- "Summarize INC-42 for the weekly report: what happened, when, and who did what."
- "The checkout monitor is down. Look at its recent checks and tell me why."
- "Declare a high-severity incident for slow API responses and make me the commander."
- "Write a postmortem for yesterday's incident from its timeline and save it."
- "Post on our status page that we are investigating slow API responses. Show me the text first."
- "Who is on call this weekend? Put Sam on call for me on Saturday from 09:00 to 17:00."

## How access works

- The connection belongs to you, not to a team. Each tool call names one team.
- On every call, Spectate checks that you are still a member of the team, the permissions of your current role, that the team is not being deleted or suspended, and the team's AI assistant setting. A change to any of these applies to the next call.
- The assistant acts as you. Changes show under your name in timelines, Slack and notifications. The activity log marks them as made through an AI assistant, with the assistant's name.
- The roles work as in the dashboard. Owners, managers and admins can use all tools. Members can read everything, work on incidents, change monitors, and acknowledge and resolve alerts. Members cannot delete things, add domains, or change on-call schedules or status pages. The billing role cannot read monitoring data, so it has no tools.

Some things are never available through the MCP server:

- API tokens, secrets of alert sources and channels, and status page access keys.
- Billing, members and invites, and team settings.
- Team deletion and status page subscribers.

## Confirmations

Some actions run only after you approve them in the chat:

- Deleting: an incident, a monitor, a domain, an on-call override, a public incident or a maintenance window.
- Public actions and emails to people outside your team: all changes to a status page and to its incidents and maintenance, and emails to subscribers.

The assistant first shows you what it will do. For a status page, it shows the exact public text and if subscribers get an email. Spectate refuses the action if the assistant does not send your approval with it. Your client can also ask you before each change. That is a setting of the client.

## Team setting

Owners and managers set the AI assistant access of each team in **Team → Settings → AI assistants**:

| Setting | Effect |
|---|---|
| Full (default) | Assistants can read and change what each member's role allows. |
| Read only | Assistants can read. Spectate refuses all tools that change something. |
| Off | Assistants cannot use the team. The team is not on the consent screen and not in `list_teams`. |

A change applies to existing connections immediately. You can change this setting only in the dashboard, not through MCP or the API.

## Manage your connections

**Account → AI assistants** shows the assistants that you connected. For each assistant, it shows when you connected it and when it was last used. **Disconnect** removes the access of an assistant immediately. To use it again, connect it again. A password reset disconnects all your assistants.

## Limits

- 120 requests a minute for each connection. Of these, 30 can change something.
- A connection stays signed in while you use it. After 30 days without use, you must approve it again. Access tokens are valid for one hour, and the client renews them.

## Safety

- Incident titles, alert data from other tools, monitor responses and status page issue reports can contain text from other people. Issue reports can come from anyone on the internet. Spectate tells assistants never to follow instructions in this text. Read what an assistant proposes before you approve it.
- For teams where assistants only answer questions, use **Read only**.

## Troubleshooting

| Problem | What to do |
|---|---|
| The consent screen says that no team allows AI assistants | An owner or manager turns them on in **Team → Settings → AI assistants**. |
| A team is not in the list | Check that you are a member and that the team allows AI assistants. |
| "Your role in this team does not allow this" | Your role does not have the permission that the message names. |
| "This team allows AI assistants to read only" | The team setting is **Read only**. |
| "Not done yet. Show the member exactly what this will do..." | The action needs your approval in the chat. Approve it, and the assistant tries again. |
| The client asks you to sign in again and again | Remove the Spectate server from the client. Then add it again with the URL above. |
