# Better Stack MCP connector

Connect Better Stack to Claude, ChatGPT, Cursor, or any MCP client through Elaichi, and check monitor uptime, response times, heartbeats, and on-call schedules in plain language, with every action logged under the person who asked.

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

## Facts

| | |
| --- | --- |
| Application | Better Stack |
| Category | Incident Management |
| AI tools | 96 |
| 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. 96 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Better Stack is connected

- List Better Stack monitors with availability below 99% this week.
- Which heartbeats missed a check in the last day?
- Summarize incidents by monitor group for the on call handover.

## Connect Better Stack in Elaichi

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

1. Open Connections, choose Add connection, and pick Better Stack.
2. Optionally set Share with, then press Connect.
3. Paste a Better Stack API key. One person generates a token in Better Stack 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 Better Stack tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Better Stack 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 Better Stack 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 Better Stack 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 Better Stack 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 Better Stack 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 Better Stack through Elaichi

### Set up a monitor for a new service

Engineering. Ask for a monitor on the new checkout URL, checking every minute, and put it in the right monitor group. It is created in Better Stack with the settings you described instead of clicked together by hand.

### Confirm whether a site is actually down

Support. When a customer reports an outage, ask what the monitor for that page shows right now and how its response times have looked over the past hour, then reply with facts instead of a guess.

### Find out who is on call right now

Operations. Ask which on-call schedule covers this hour and who is holding the pager before escalating a problem, without opening Better Stack to find the rota.

### Catch a nightly job that stopped reporting

Platform. Ask which heartbeats have gone quiet since yesterday, and set up a new heartbeat for the backup job that nobody was watching.

### Tidy monitors and heartbeats into groups

Engineering. Ask for every unassigned monitor to be sorted into groups by product or region, and rename the groups that no longer match how the team is organized.

### Pull last month's uptime numbers

Leadership. Ask for the availability of every customer-facing monitor over the last thirty days, and for the ones whose response times got slower, ready to paste into the monthly review.

## Frequently asked questions

### How do I connect Better Stack to Claude?

In Elaichi, open Connectors, choose Better Stack, and paste in an API key from your Better Stack account when asked. There is no OAuth application to register and no client ID or secret to generate. Then in Claude go to Customize, then Connectors, then Add, and paste the endpoint https://api.elaichi.ai/mcp. Claude will ask you to sign in to Elaichi as yourself, and Better Stack is available from then on.

### Does Better Stack work with ChatGPT and Cursor as well as Claude?

Yes. Once Better Stack 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 Better Stack once and every client you use picks it up.

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

With Better Stack connected, you can ask which monitors are down, how a site's response times have trended, which heartbeats have stopped reporting, and who is on the current on-call schedule. You can also ask it to create, change, or remove monitors, heartbeats, and the groups they sit in. Because Better Stack exposes many actions, short concrete asks like "show availability for the API monitor this week" work better than long paragraphs.

### Does connecting Better Stack give the AI access to everything in my account?

No. The AI works inside the access of the person who connected Better Stack, so it can only see the monitors, heartbeats, and on-call schedules that person's Better Stack API key can already reach. Elaichi can narrow that access further with restrictions, and it can never widen it beyond what Better Stack itself allows.

### Can my team share one Better Stack connection?

Yes. One person connects Better Stack in Elaichi and shares it with a team, and nobody else ever handles the API key. Each teammate still signs in to Elaichi as themselves, so every monitor check or change is recorded in the audit log under their own name rather than under whoever pasted the key.

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

Yes. In Elaichi, restrictions on the Better Stack connector apply per action, so you can allow reading monitor availability and response times while blocking anything that deletes or updates a monitor, heartbeat, or group. A blocked action is never shown to Claude, ChatGPT, Cursor, or any other client at all, so no prompt, accidental or otherwise, can reach it.

### What happens to a Better Stack connection when someone leaves?

When you offboard someone in Elaichi, their access to Better Stack through every AI client ends at once. If they had shared a Better Stack connection with a team, it keeps working for everyone else on that team. If you want to remove Better Stack entirely, disconnecting it once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other connected client.

## All 96 Better Stack tools

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

- **List all Better Stack monitors** (List). List all betterstack monitors. Returns a collection of monitor objects including their ids and configuration details.
- **Get single Better Stack monitor by ID** (Get). Get a single betterstack monitor by id. Returns the full monitor object. Required: id.
- **Create a Better Stack monitor** (Create). Create a new betterstack monitor. Returns the created monitor object including its id.
- **Update a Better Stack monitor by ID** (Update). Update an existing betterstack monitor by id. Returns the updated monitor object. Required: id.
- **Delete a Better Stack monitor by ID** (Delete). Delete a betterstack monitor by id. Returns an empty response on success. Required: id.
- **Better Stack monitors availability** (Action). Get SLA availability data for a betterstack monitor. Returns availability metrics for the specified monitor. Required: monitor_id.
- **Better Stack monitors response times** (Action). Get response time data for a betterstack monitor. Returns response time metrics for the specified monitor. Required: monitor_id.
- **List all Better Stack monitor groups** (List). List all monitor groups in betterstack. Returns a collection of monitor group objects.
- **Get single Better Stack monitor group by ID** (Get). Get a single betterstack monitor group by id. Returns the monitor group object. Required: id.
- **Create a Better Stack monitor group** (Create). Create a new monitor group in betterstack. Returns the created monitor group object.
- **Update a Better Stack monitor group by ID** (Update). Update an existing betterstack monitor group by id. Returns the updated monitor group object. Required: id.
- **Delete a Better Stack monitor group by ID** (Delete). Delete a betterstack monitor group by id. Returns an empty response on success. Required: id.
- **List all Better Stack heartbeats** (List). List all betterstack heartbeats. Returns an array of heartbeat objects including their id, name, and status.
- **Get single Better Stack heartbeat by ID** (Get). Get a single betterstack heartbeat by id. Returns the full heartbeat object including its id, name, and current status. Required: id.
- **Create a Better Stack heartbeat** (Create). Create a new betterstack heartbeat monitor. Returns the created heartbeat object including its id and name.
- **Update a Better Stack heartbeat by ID** (Update). Update an existing betterstack heartbeat by id. Returns the updated heartbeat object. Required: id.
- **Delete a Better Stack heartbeat by ID** (Delete). Delete a betterstack heartbeat by id. Returns an empty response on success. Required: id.
- **Better Stack heartbeats availability** (Action). Get SLA availability data for a betterstack heartbeat. Returns availability metrics for the specified heartbeat. Required: heartbeat_id.
- **List all Better Stack heartbeat groups** (List). List all heartbeat groups in BetterStack. Returns a collection of heartbeat group objects.
- **Get single Better Stack heartbeat group by ID** (Get). Get a single BetterStack heartbeat group by id. Returns the heartbeat group object. Required: id.
- **Create a Better Stack heartbeat group** (Create). Create a new heartbeat group in BetterStack. Returns the created heartbeat group object including its id.
- **Update a Better Stack heartbeat group by ID** (Update). Update an existing BetterStack heartbeat group by id. Returns the updated heartbeat group object. Required: id.
- **Delete a Better Stack heartbeat group by ID** (Delete). Delete a BetterStack heartbeat group by id. Returns an empty response on success. Required: id.
- **List all Better Stack on call schedules** (List). List all on-call schedules in Betterstack. Returns a collection of on-call schedule objects.
- **Get single Better Stack on call schedule by ID** (Get). Get a single Betterstack on-call schedule by id. Returns the full on-call schedule object. Required: id.
- **Create a Better Stack on call schedule** (Create). Create a new on-call schedule in Betterstack. Returns the created on-call schedule object including its id.
- **Update a Better Stack on call schedule by ID** (Update). Update an existing Betterstack on-call schedule by id. Returns the updated on-call schedule object. Required: id.
- **Delete a Better Stack on call schedule by ID** (Delete). Delete a Betterstack on-call schedule by id. Returns an empty response on success. Required: id.
- **List all Better Stack on call schedule events** (List). List all on-call schedule events for a given schedule in Betterstack. Returns an array of events associated with the schedule. Required: schedule_id.
- **Get single Better Stack on call schedule event by ID** (Get). Get a single on-call schedule event by id in Betterstack. Returns the event object for the specified schedule. Required: schedule_id and id.
- **List all Better Stack on call schedule rotations** (List). List all rotations for a BetterStack on-call schedule. Returns an array of rotation objects from the schedule's data. Required: schedule_id.
- **List all Better Stack escalation policies** (List). List all escalation policies in Better Stack. Returns an array of escalation policy objects.
- **Get single Better Stack escalation policy by ID** (Get). Get a single Better Stack escalation policy by id. Returns the full escalation policy object. Required: id.
- **Create a Better Stack escalation policy** (Create). Create a new escalation policy in Better Stack. Returns the created escalation policy object including its id.
- **Update a Better Stack escalation policy by ID** (Update). Update an existing Better Stack escalation policy by id. Returns the updated escalation policy object. Required: id.
- **Delete a Better Stack escalation policy by ID** (Delete). Delete a Better Stack escalation policy by id. Returns an empty response on success. Required: id.
- **List all Better Stack escalation policy groups** (List). List all escalation policy groups in BetterStack. Returns a collection of policy group objects from the /api/v2/policy-groups endpoint.
- **Get single Better Stack escalation policy group by ID** (Get). Get a single BetterStack escalation policy group by id. Returns the policy group object. Required: id.
- **Create a Better Stack escalation policy group** (Create). Create a new escalation policy group in BetterStack. Returns the created policy group object.
- **Update a Better Stack escalation policy group by ID** (Update). Update an existing BetterStack escalation policy group by id. Returns the updated policy group object. Required: id.
- **Delete a Better Stack escalation policy group by ID** (Delete). Delete a BetterStack escalation policy group by id. Returns an empty response on success. Required: id.
- **List all Better Stack severities** (List). List all urgencies (severities) in Betterstack. Returns a collection of urgency objects.
- **Get single Better Stack severity by ID** (Get). Get a single Betterstack urgency (severity) by id. Returns the urgency object. Required: id.
- **Create a Better Stack severity** (Create). Create a new urgency (severity) in Betterstack. Returns the created urgency object including its id.
- **Update a Better Stack severity by ID** (Update). Update an existing Betterstack urgency (severity) by id. Returns the updated urgency object. Required: id.
- **Delete a Better Stack severity by ID** (Delete). Delete a Betterstack urgency (severity) by id. Returns an empty response on success. Required: id.
- **List all Better Stack severity groups** (List). List all severity groups in betterstack. Returns a collection of severity group objects.
- **Get single Better Stack severity group by ID** (Get). Get a single betterstack severity group by id. Returns the severity group object.
- **Create a Better Stack severity group** (Create). Create a new severity group in betterstack. Returns the created severity group object.
- **Update a Better Stack severity group by ID** (Update). Update an existing betterstack severity group by id. Returns the updated severity group object. Required: id.
- **Delete a Better Stack severity group by ID** (Delete). Delete a betterstack severity group by id. Returns an empty response on success. Required: id.
- **List all Better Stack incidents** (List). List all incidents in BetterStack. Returns a collection of incident objects including their id, name, and status.
- **Get single Better Stack incident by ID** (Get). Get a single BetterStack incident by id. Returns the full incident object including its id, name, and status. Required: id.
- **Create a Better Stack incident** (Create). Create a new incident in BetterStack. Returns the created incident object including its id, name, and status.
- **Delete a Better Stack incident by ID** (Delete). Delete a BetterStack incident by id. Returns an empty response on success. Required: id.
- **Better Stack incidents acknowledge** (Action). Acknowledge a BetterStack incident by incident_id, marking it as seen and under review. Returns the updated incident object. Required: incident_id.
- **Better Stack incidents resolve** (Action). Resolve a BetterStack incident by incident_id, marking it as closed. Returns the updated incident object. Required: incident_id.
- **Better Stack incidents escalate** (Action). Escalate a BetterStack incident by incident_id, promoting it to a higher severity or notifying additional responders. Returns the updated incident object. Required: incident_id.
- **List all Better Stack incident timeline** (List). List timeline events for a specific Betterstack incident. Returns a collection of timeline data entries. Required: incident_id.
- **List all Better Stack incident comments** (List). List all comments for a Betterstack incident. Returns a collection of comment objects belonging to the specified incident. Required: incident_id.
- **Get single Better Stack incident comment by ID** (Get). Get a single Betterstack incident comment by id. Returns the comment object for the specified incident. Required: incident_id, id.
- **Create a Better Stack incident comment** (Create). Create a new comment on a Betterstack incident. Returns the created comment object. Required: incident_id.
- **Delete a Better Stack incident comment by ID** (Delete). Delete a Betterstack incident comment by id. Returns an empty response on success. Required: incident_id, id.
- **List all Better Stack status pages** (List). List all betterstack status pages. Returns a collection of status page objects.
- **Get single Better Stack status page by ID** (Get). Get a single betterstack status page by id. Returns the full status page object. Required: id.
- **Create a Better Stack status page** (Create). Create a new betterstack status page. Returns the created status page object including its id.
- **Update a Better Stack status page by ID** (Update). Update an existing betterstack status page by id. Returns the updated status page object. Required: id.
- **Delete a Better Stack status page by ID** (Delete). Delete a betterstack status page by id. Returns an empty response on success. Required: id.
- **List all Better Stack status page groups** (List). List all status page groups in betterstack. Returns an array of status page group objects.
- **Get single Better Stack status page group by ID** (Get). Get a single betterstack status page group by id. Returns the status page group object. Required: id.
- **Create a Better Stack status page group** (Create). Create a new status page group in betterstack. Returns the created status page group object including its id.
- **Update a Better Stack status page group by ID** (Update). Update an existing betterstack status page group by id. Returns the updated status page group object. Required: id.
- **Delete a Better Stack status page group by ID** (Delete). Delete a betterstack status page group by id. Returns an empty 204 response on success. Required: id.
- **List all Better Stack status page sections** (List). List all sections belonging to a betterstack status page. Returns an array of section objects. Required: status_page_id.
- **Get single Better Stack status page section by ID** (Get). Get a single betterstack status page section by id. Returns the section object. Required: status_page_id, id.
- **Create a Better Stack status page section** (Create). Create a new section on a betterstack status page. Returns the created section object. Required: status_page_id.
- **Update a Better Stack status page section by ID** (Update). Update an existing betterstack status page section by id. Returns the updated section object. Required: status_page_id, id.
- **Delete a Better Stack status page section by ID** (Delete). Delete a betterstack status page section by id. Returns an empty response on success. Required: status_page_id, id.
- **List all Better Stack status page resources** (List). List all resources associated with a betterstack status page. Returns an array of resource objects belonging to the specified status page. Required: status_page_id.
- **Get single Better Stack status page resource by ID** (Get). Get a single betterstack status page resource by id. Returns the full resource object for the specified resource. Required: status_page_id, id.
- **Create a Better Stack status page resource** (Create). Create a new resource on a betterstack status page. Returns the created resource object. Required: status_page_id.
- **Update a Better Stack status page resource by ID** (Update). Update an existing betterstack status page resource by id. Returns the updated resource object. Required: status_page_id, id.
- **Delete a Better Stack status page resource by ID** (Delete). Delete a betterstack status page resource by id. Returns an empty response on success. Required: status_page_id, id.
- **List all Better Stack status page reports** (List). List all status reports for a Betterstack status page. Returns a collection of status report objects. Required: status_page_id.
- **Get single Better Stack status page report by ID** (Get). Get a single status report from a Betterstack status page by id. Returns the status report object. Required: status_page_id, id.
- **Create a Better Stack status page report** (Create). Create a new status report on a Betterstack status page. Returns the created status report object. Required: status_page_id.
- **Update a Better Stack status page report by ID** (Update). Update an existing status report on a Betterstack status page by id. Returns the updated status report object. Required: status_page_id, id.
- **Delete a Better Stack status page report by ID** (Delete). Delete a status report from a Betterstack status page by id. Returns an empty response on success. Required: status_page_id, id.
- **List all Better Stack status page report updates** (List). List all status updates belonging to a betterstack status page report. Returns an array of status update objects. Required: status_page_id, status_report_id.
- **Get single Better Stack status page report update by ID** (Get). Get a single status update for a betterstack status page report by id. Returns the status update object. Required: status_page_id, status_report_id, id.
- **Create a Better Stack status page report update** (Create). Create a new status update for a betterstack status page report. Returns the created status update object. Required: status_page_id, status_report_id.
- **Update a Better Stack status page report update by ID** (Update). Update an existing status update for a betterstack status page report by id. Returns the updated status update object. Required: status_page_id, status_report_id, id.
- **Delete a Better Stack status page report update by ID** (Delete). Delete a status update from a betterstack status page report by id. Returns an empty response on success. Required: status_page_id, status_report_id, id.
- **List all Better Stack metadata** (List). List metadata entries in Betterstack. Returns a collection of metadata objects from the Betterstack account.
- **Create a Better Stack metadatum** (Create). Create a new metadata entry in Betterstack. Returns the created metadata object.
- **Delete a Better Stack metadatum by ID** (Delete). Delete metadata entries in Betterstack. Returns an empty response on success.
