healthchecks-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ELICITATION | No | Set to 'false' to replace the approval dialog with the two-call token. Not prefixed. | |
| HEALTHCHECKS_URL | No | Site root of a self-hosted instance, e.g. https://hc.example.net. Default https://healthchecks.io | https://healthchecks.io |
| HEALTHCHECKS_API_KEY | Yes | Project API key. A read-only key works for part of the tool surface. | |
| HEALTHCHECKS_READ_ONLY | No | Set to 'true' to register only the read tools. | |
| HEALTHCHECKS_DENY_TOOLS | No | Comma-separated tool names, list_* prefixes, or 'essential'; removed from whatever HEALTHCHECKS_ALLOW_TOOLS left. | |
| HEALTHCHECKS_ALLOW_TOOLS | No | Comma-separated tool names, list_* prefixes, or 'essential' for a curated preset. | |
| HEALTHCHECKS_INSECURE_TLS | No | Set to 'true' to accept self-signed certificates (scoped to this connection). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_checksA | Lists the checks in the project the API key belongs to, newest state first. API keys are per project, so this never spans projects. Descriptions are omitted here — call get_check for one. |
| get_checkA | Fetches one check with all its fields, including the description and the keyword filters. Accepts a UUID, or the unique_key that a read-only API key returns in place of one. |
| list_pingsA | Lists recent pings of a check, newest first. The instance caps this at 100 pings on a free plan and 1000 on a paid one, and there is no pagination, so older pings cannot be reached at all. Note: Healthchecks requires a read-write API key for this endpoint even though it only reads. A read-only key is refused with HTTP 401 "wrong api key", which is not what it sounds like. Call get_api_key_info to check which kind is configured. With a read-only key this tool cannot even be called correctly: it addresses a check by uuid, and a read-only key never sees one — list_checks answers with a 40-character unique_key instead. So the refusal you get first is about the argument, not the key. Neither is a mistake to fix: with a read-only key this endpoint is out of reach, and there is nothing to pass that would change it. |
| get_ping_bodyA | Returns the body that was POSTed with one ping — usually the output of the job that reported in, which is the fastest way to see why a check failed. Truncated at 64 KB. Note: Healthchecks requires a read-write API key for this endpoint even though it only reads. A read-only key is refused with HTTP 401 "wrong api key", which is not what it sounds like. Call get_api_key_info to check which kind is configured. With a read-only key this tool cannot even be called correctly: it addresses a check by uuid, and a read-only key never sees one — list_checks answers with a 40-character unique_key instead. So the refusal you get first is about the argument, not the key. Neither is a mistake to fix: with a read-only key this endpoint is out of reach, and there is nothing to pass that would change it. |
| list_flipsA | Lists the up/down transitions of a check — the history behind its current status. The instance keeps the current month and the two before it. Accepts a UUID or a unique_key. |
| list_integrationsA | Lists the notification integrations of the project, with the UUIDs that create_check and update_check accept in their channels argument. Integrations themselves can only be created in the web UI. Note: Healthchecks requires a read-write API key for this endpoint even though it only reads. A read-only key is refused with HTTP 401 "wrong api key", which is not what it sounds like. Call get_api_key_info to check which kind is configured. With a read-only key this tool cannot even be called correctly: it addresses a check by uuid, and a read-only key never sees one — list_checks answers with a 40-character unique_key instead. So the refusal you get first is about the argument, not the key. Neither is a mistake to fix: with a read-only key this endpoint is out of reach, and there is nothing to pass that would change it. |
| list_badgesA | Lists the status badge URLs of the project, one entry per tag plus "*" for the project as a whole. The plain variants treat a check in its grace period as up; the ones suffixed 3 report up, late and down separately. |
| get_statusA | Checks that the configured Healthchecks instance is reachable and its database is answering. Needs no API key, so it is the tool to try first when something is not working. |
| get_api_key_infoA | Reports which instance is configured, whether the API key works, and whether it is a read-only or a read-write key — which decides whether list_pings, get_ping_body and list_integrations can be used at all, and whether checks are identified by uuid or by unique_key. |
| create_checkA | Creates a check. Pass either timeout (a simple period) or schedule (a cron or systemd OnCalendar expression), never both. Unless channels says otherwise, the new check notifies every integration in the project ("*"), because a check with no integrations never alerts anyone. Setting unique turns this into an upsert that may UPDATE an existing check. |
| update_checkA | Updates a check. Fields that are not given stay unchanged. Two exceptions: channels REPLACES the integration list rather than adding to it, and setting schedule on a check that used timeout switches it over. Needs a UUID, which read-only API keys never see. |
| pause_checkA | Pauses a check: it stops expecting pings and stops alerting. resume_check puts it back, and nothing is lost in between — so this is not asked about. It does mean a job that stops running goes unnoticed while the check is paused. |
| resume_checkA | Resumes a paused check and puts it back into the "new" state, waiting for its next ping. Fails with HTTP 409 if the check is not paused. |
| delete_checkA | Deletes a check permanently. Its UUID is not recoverable, so every deployed script pinging that URL breaks. Two-step: the first call returns a confirmation token, the second call with that token deletes. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ni-c/healthchecks-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server