# Freshstatus MCP connector

The Freshstatus connector brings your status page services, groups, incidents and incident updates into Claude, ChatGPT and Cursor, so your team can open, update and resolve incidents by asking in plain language.

Source: https://elaichi.ai/connectors/freshstatus/

## Facts

| | |
| --- | --- |
| Application | Freshstatus |
| Category | Incident Management |
| AI tools | 38 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 38 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Freshstatus is connected

- List all services currently showing degraded status.
- Which incidents are still open across all groups?
- Summarize incident status changes from this week.

## Connect Freshstatus in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Freshstatus.
2. Optionally set Share with, then press Connect.
3. Paste a Freshstatus API key. One person generates a token in Freshstatus and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Freshstatus tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Freshstatus to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Freshstatus to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Freshstatus to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Freshstatus to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Freshstatus tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Freshstatus through Elaichi

### Post an incident before the tickets pile up

Support. When the same complaint arrives three times in five minutes, open a Freshstatus incident against the affected service and set its status, so customers checking the status page see it before they write in.

### Keep the status page current mid-incident

Engineering. From the incident channel, add a Freshstatus incident update in a few words and the public timeline reflects what the responders actually know right now.

### Close the loop when the fix lands

Engineering. Resolve the Freshstatus incident and post the final update in one ask, so the page moves back to operational without anyone remembering to do it later.

### Keep the service catalog tidy

IT. Add a new service after a launch, move it into the right group, rename one that changed, or retire one that was decommissioned, all without clicking through the Freshstatus admin screens.

### Brief an account on last month's incidents

Customer Success. Ask for every Freshstatus incident that touched a customer's services in a date range and get a plain summary to paste into the quarterly review.

### Draft updates customers can actually understand

Communications. Give the agent the technical note from the responders and have it write and post a customer-facing Freshstatus incident update in calm, clear language.

## Frequently asked questions

### How do I connect Freshstatus to Claude?

Two steps. In Elaichi, choose Freshstatus and paste in a Freshstatus API key, then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. There is no OAuth application to register and no client ID or secret to generate; the API key is the whole sign-in step for Freshstatus.

### Does Freshstatus work with ChatGPT and Cursor as well as Claude?

Yes. Once Freshstatus is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client and the Elaichi Agent. You connect Freshstatus once and every client you use picks it up.

### What can an AI agent actually do with my Freshstatus data?

It can list your Freshstatus services and groups, look up an incident, open a new incident, change its status, add an incident update, resolve it, and add or tidy up services and groups. In practice that means asking things like "open an incident on the API service, investigating" or "resolve incident 42 and post the all-clear". Short, concrete asks like those work better than long paragraphs, because Freshstatus has a lot of actions and the agent searches for the right one.

### Does connecting Freshstatus give the AI access to everything on my status page?

No. Every call to Freshstatus runs inside the access of the Freshstatus API key the person connected with, so the agent can only reach the services, groups and incidents that key can reach. Elaichi can narrow that further with restrictions, but it can never widen it beyond what Freshstatus itself allows.

### Can my team share one Freshstatus connection?

Yes. One person connects Freshstatus in Elaichi and shares the connection with a team, and nobody else ever sees or handles the Freshstatus API key. Each teammate still signs in to Elaichi as themselves, so the audit log names the actual person who opened or resolved each incident.

### Can I stop an agent from deleting or changing things in Freshstatus?

Yes. Restrictions in Elaichi work per action, so you can allow reading Freshstatus incidents and posting updates while blocking deletion of services, groups or incidents. A blocked action is never advertised to Claude, ChatGPT or Cursor at all, so no prompt, however worded, can reach it.

### What happens to a Freshstatus connection when someone leaves?

Offboarding that person in Elaichi ends their access to Freshstatus at once, across every client they used. If they had shared a Freshstatus connection with a team, it keeps working for everyone else. If you want it gone entirely, disconnecting Freshstatus once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 38 Freshstatus tools

Every tool below is callable through https://api.elaichi.ai/mcp once Freshstatus is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Freshstatus services** (List). List all Freshstatus service components — the building blocks displayed on your status page. Returns: id, name, description, order, status, display_options, group.
- **Get single Freshstatus service by ID** (Get). Get a specific Freshstatus service component by id. Returns: id, name, description, order, status, display_options, group. Required: id.
- **Create a Freshstatus service** (Create). Create a new service component in Freshstatus to display on your status page. Returns the created service including its id, name, description, order, display_options, and group. Required: name.
- **Update a Freshstatus service by ID** (Update). Update a Freshstatus service by id. Returns the updated service object including id, name, description, order, status, display_options, and group. Required: id.
- **Delete a Freshstatus service by ID** (Delete). Delete a Freshstatus service by id. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus groups** (List). List all Service Groups in Freshstatus. Returns: id, name, description, order, parent, display_options.
- **Get single Freshstatus group by ID** (Get). Get a specific Freshstatus Service Group by id. Returns: id, name, description, order, parent, display_options. Required: id.
- **Create a Freshstatus group** (Create). Create a new Service Group in Freshstatus. Returns the created group including id, name, description, order, parent, and display_options. Required: name.
- **Update a Freshstatus group by ID** (Update). Update a Freshstatus service group by id. Returns the updated group object including id, name, description, order, parent, and display_options. Required: id.
- **Delete a Freshstatus group by ID** (Delete). Delete a Freshstatus service group by id. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus incident status** (List). List all incident statuses in Freshstatus. Returns: id, value, order.
- **Get single Freshstatus incident status by ID** (Get). Get a specific incident status by id in Freshstatus. Returns: id, value, order. Required: id.
- **Create a Freshstatus incident status** (Create). Create a new incident status in Freshstatus. Returns the created incident status including id, value, and order. Required: value.
- **Update a Freshstatus incident status by ID** (Update). Update an existing incident status by id in Freshstatus. Returns the updated incident status including id, value, and order. Required: id.
- **Delete a Freshstatus incident status by ID** (Delete). Delete an incident status by id in Freshstatus. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus incidents** (List). List all incidents in Freshstatus. Returns each incident's id, title, description, start_time, end_time, source, is_private, affected_components, notification_options, and incident_updates.
- **Get single Freshstatus incident by ID** (Get). Get a specific Freshstatus incident by id. Returns the full incident object including id, title, description, start_time, end_time, is_private, affected_components, source, notification_options, and incident_updates. Required: id.
- **Create a Freshstatus incident** (Create). Create a new incident in Freshstatus to log a downtime event on your status page. Returns the created incident including id, title, description, start_time, end_time, is_private, affected_components, source, notification_options, and incident_updates. Required: title, start_time, end_time.
- **Update a Freshstatus incident by ID** (Update). Update a Freshstatus incident by id. Returns the updated incident including id, title, description, start_time, end_time, source, is_private, affected_components, notification_options, and incident_updates. Required: id.
- **Freshstatus incidents resolve** (Action). Resolve a Freshstatus incident by incident_id. Returns: message. Required: incident_id.
- **Delete a Freshstatus incident by ID** (Delete). Delete a Freshstatus incident by id. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus incident updates** (List). List incident updates for a specific incident in Freshstatus, filtered by incident id. Returns: id, message, time, is_private, incident, incident_status, notification_options. Required: incident.
- **Get single Freshstatus incident update by ID** (Get). Get a specific incident update by id in Freshstatus. Returns: id, message, time, is_private, incident, incident_status, notification_options. Required: id.
- **Create a Freshstatus incident update** (Create). Create an incident update for a specific incident in Freshstatus. Returns: id, message, time, is_private, incident, incident_status, notification_options. Required: incident_id, time.
- **Update a Freshstatus incident update by ID** (Update). Update a Freshstatus incident update by id. Returns the updated incident update including id, message, time, is_private, incident, incident_status, and notification_options. Required: id, time.
- **Delete a Freshstatus incident update by ID** (Delete). Delete a Freshstatus incident update by id. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus maintenance** (List). List all scheduled maintenances in Freshstatus. Returns each maintenance record with id, title, description, start_time, end_time, is_auto_start, is_auto_end, is_private, affected_components, notification_options, and maintenance_updates.
- **Get single Freshstatus maintenance by ID** (Get). Get a specific scheduled maintenance in Freshstatus by id. Returns the maintenance object including id, title, description, start_time, end_time, is_auto_start, is_auto_end, affected_components, notification_options, and maintenance_updates. Required: id.
- **Create a Freshstatus maintenance** (Create). Create a scheduled maintenance in Freshstatus. Returns the created maintenance object including id, title, description, start_time, end_time, is_auto_start, is_auto_end, source, is_private, affected_components, notification_options, and maintenance_updates. Required: title, start_time, end_time. Datetime fields must be in UTC format YYYY-MM-DDThh:mm:ssZ (e.g. 2021-01-30T05:40:00Z).
- **Update a Freshstatus maintenance by ID** (Update). Update a scheduled maintenance in Freshstatus by id. Returns the updated maintenance object including id, title, start_time, end_time, affected_components, notification_options, and maintenance_updates. Required: id, title, start_time, end_time.
- **Freshstatus maintenance start** (Start). Start a scheduled maintenance in Freshstatus by posting an optional maintenance update message. Returns the maintenance object including id, title, start_time, end_time, is_auto_start, is_auto_end, and affected_components. Required: maintenance_id.
- **Freshstatus maintenance complete** (Complete). Complete a scheduled maintenance in Freshstatus by posting an optional maintenance update message. Returns an empty response on success. Required: maintenance_id.
- **Delete a Freshstatus maintenance by ID** (Delete). Delete a scheduled maintenance in Freshstatus by id. Returns an empty 204 response on success. Required: id.
- **List all Freshstatus maintenance updates** (List). List maintenance updates for a specific scheduled maintenance in Freshstatus, filtered by maintenance id. Returns: id, message, time, is_private, maintenance, maintenance_status, notification_options. Required: maintenance.
- **Get single Freshstatus maintenance update by ID** (Get). Get a specific maintenance update by id in Freshstatus. Returns: id, message, time, is_private, maintenance, maintenance_status, notification_options. Required: id.
- **Create a Freshstatus maintenance update** (Create). Create a maintenance update for a scheduled maintenance in Freshstatus. Returns: id, message, time, is_private, maintenance, maintenance_status, notification_options. Required: time, maintenance.
- **Update a Freshstatus maintenance update by ID** (Update). Update a specific maintenance update in Freshstatus. Returns the updated maintenance update object including id, message, time, is_private, maintenance, maintenance_status, and notification_options. Required: id.
- **Delete a Freshstatus maintenance update by ID** (Delete). Delete a maintenance update in Freshstatus by id. Returns an empty 204 response on success. Required: id.
