Skip to main content
Glama
oaslananka

health-monitor-mcp

by oaslananka

health-monitor-mcp

MCP server, CI workflow, and generic HTTP endpoint monitoring with health history, TLS expiry, assertions, diagnostics, and operational reports.

CI codecov Release License: MIT OpenSSF Scorecard Node.js

What This Does

health-monitor-mcp keeps local registries of MCP servers, GitHub Actions workflows, GitLab pipelines, and generic HTTP endpoints. It performs live checks, records bounded evidence in SQLite, evaluates MCP alert thresholds, and returns JSON or Markdown diagnostics suitable for agents and operators.

Supported target transports:

  • Streamable HTTP for current remote MCP servers.

  • SSE for legacy MCP servers.

  • stdio for trusted local executables after explicit opt-in.

  • GitHub Actions workflow runs, failed jobs, and failed steps for public or private repositories.

  • GitLab CI/CD pipelines, failed jobs, stages, refs, commits, URLs, and bounded trace excerpts for GitLab.com or allowlisted self-hosted instances.

  • Generic HTTP/HTTPS endpoints with status, header, body-substring, JSON-value, redirect, latency, and TLS-expiry checks.

Azure DevOps monitoring was retired in v1.1.0. GitHub Actions shipped in v1.2.0 and GitLab CI/CD in v1.3.0; generic HTTP/TLS monitoring completes the current multi-provider feature line.

Related MCP server: DevHelm MCP Server

Quick Start

Run the published package noninteractively with Node.js 24:

npx -y health-monitor-mcp --version

Example MCP client configuration:

{
  "mcpServers": {
    "health-monitor": {
      "command": "npx",
      "args": ["-y", "health-monitor-mcp"]
    }
  }
}

Tools

Tool

Purpose

Typical prompt

register_server

Register an MCP target

Register inventory-prod

check_server

Run one MCP health check

Check inventory-prod now

register_github_actions

Register a GitHub workflow

Monitor ci.yml in owner/repo

check_github_actions

Check latest GitHub run and failed job/step diagnostics

Check repo-ci now

register_gitlab_pipeline

Register a GitLab project pipeline

Monitor group/project on GitLab

check_gitlab_pipeline

Check latest pipeline and bounded failed-job traces

Check gitlab-ci now

register_http_target

Register a GET-only HTTP/HTTPS endpoint

Monitor the public health endpoint

check_http_target

Check response assertions and TLS expiry

Check service-health now

check_all

Check all target kinds with bounded concurrency

Check all production targets

get_uptime

Return MCP uptime and latency history

Show 24h uptime for inventory-prod

get_dashboard

Return a cross-provider JSON dashboard

Give me a 24h dashboard

get_report

Return a cross-provider Markdown report

Generate a 24h health report

list_servers

List registered MCP targets

List monitored MCP servers

list_github_actions

List registered GitHub workflow targets

List monitored workflows

list_gitlab_pipelines

List registered GitLab pipeline targets

List monitored GitLab pipelines

list_http_targets

List registered HTTP targets

List monitored HTTP endpoints

unregister_server

Remove an MCP target

Stop monitoring local-debugger

unregister_github_actions

Remove a GitHub target and its history

Stop monitoring repo-ci

unregister_gitlab_pipeline

Remove a GitLab target and its history

Stop monitoring gitlab-ci

unregister_http_target

Remove an HTTP target and its history

Stop monitoring service-health

set_alert

Configure MCP health thresholds

Alert if inventory-prod exceeds 500ms

get_monitor_stats

Inspect cross-provider monitor activity

How many checks are stored?

Expected configuration mistakes return stable error codes and remediation hints, including SERVER_NOT_FOUND, GITHUB_ACTIONS_TARGET_NOT_FOUND, GITLAB_PIPELINE_TARGET_NOT_FOUND, GITLAB_BASE_URL_NOT_ALLOWED, HTTP_TARGET_NOT_FOUND, HTTP_TARGET_URL_NOT_ALLOWED, NO_SERVERS_REGISTERED, STDIO_DISABLED, and STDIO_COMMAND_REJECTED.

Register Targets

Streamable HTTP:

register_server name="inventory-prod" type="http" url="https://inventory.example.com/mcp" tags=["production","inventory"]

Legacy SSE:

register_server name="legacy-search" type="sse" url="https://search.example.com/sse" tags=["legacy"]

Trusted local stdio:

export HEALTH_MONITOR_ALLOW_STDIO=1
export HEALTH_MONITOR_STDIO_ALLOWLIST=npx,node
register_server name="local-debugger" type="stdio" command="npx" args=["-y","mcp-debug-recorder"] tags=["local"]

The command field must contain one executable only. Put package names and flags in args. Remote-safe runtime profiles always disable stdio.

Register GitHub Actions

Public repositories can be checked without authentication. Private repositories and higher API rate limits require a token with Actions read access:

export GITHUB_TOKEN=your-runtime-secret
register_github_actions name="repo-ci" owner="oaslananka" repository="health-monitor-mcp" workflow="ci.yml" branch="main" token_env="GITHUB_TOKEN" tags=["production","ci"]
check_github_actions name="repo-ci" timeout_ms=5000

Only the environment-variable name in token_env is stored. The token value is read at check time and is never written to SQLite, logs, reports, or tool responses.

Register GitLab Pipelines

Public GitLab.com projects can be checked without authentication. Private projects require a token exposed only through the runtime environment:

export GITLAB_TOKEN=your-runtime-secret
register_gitlab_pipeline name="gitlab-ci" project="group/project" ref="main" token_env="GITLAB_TOKEN" tags=["production","ci"]
check_gitlab_pipeline name="gitlab-ci" timeout_ms=5000

GitLab.com is allowed by default. A self-hosted instance must use an HTTPS origin and be explicitly allowed:

export HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST=https://gitlab.internal.example
register_gitlab_pipeline name="private-gitlab" base_url="https://gitlab.internal.example" project="platform/service" token_env="GITLAB_TOKEN"

Only token_env is persisted. Token values, response bodies, and full traces are never stored or returned. Failed-job trace excerpts are range-requested, sanitized, and bounded.

Register HTTP Targets

Public HTTP and HTTPS endpoints are allowed by default. The provider sends GET requests only and supports bounded status, header, body-substring, JSON scalar, and TLS-expiry assertions:

register_http_target name="service-health" url="https://status.example.com/health" expected_statuses=[200] header_assertions=[{"name":"x-ready","equals":"yes"}] body_contains=["ready"] json_assertions=[{"path":"status","equals":"ready"}] tls_expiry_days=30 tags=["production","http"]
check_http_target name="service-health" timeout_ms=5000

Private, loopback, link-local, and other non-public addresses are blocked. A trusted private origin is available only in the full runtime profile and must be explicitly listed:

export HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST=https://status.internal.example:8443

Every DNS answer and every redirect destination is revalidated. Responses are capped at 262144 bytes; full response bodies and certificate chains are never stored or returned.

Health Checks and Reports

check_server name="inventory-prod" timeout_ms=5000
check_all timeout_ms=5000 tags=["production"]
get_uptime name="inventory-prod" hours=24
get_dashboard hours=24 include_tool_stats=true
get_report hours=24

HEALTH_MONITOR_MAX_CONCURRENCY limits MCP, GitHub Actions, GitLab, and HTTP checks through one shared scheduled and interactive queue. Results preserve MCP-then-GitHub-then-GitLab-then-HTTP registration order even when checks complete out of order.

Alerts

set_alert name="inventory-prod" max_response_time_ms=500 min_uptime_percent=99 consecutive_failures_before_alert=2

Alert findings are evaluated by check_server, check_all, and get_dashboard. Outbound webhook delivery is not yet exposed as a public MCP tool.

Configuration

Variable

Default

Purpose

HEALTH_MONITOR_DB

~/.mcp-health-monitor/health.db

SQLite database path

HEALTH_MONITOR_AUTO_CHECK

0

Enable scheduled checks with 1

HEALTH_MONITOR_RETENTION_DAYS

30

Health-history retention

HEALTH_MONITOR_MAX_CONCURRENCY

5

Scheduled and interactive check concurrency

GITHUB_TOKEN

unset

Optional GitHub Actions read token

GITLAB_TOKEN

unset

Optional GitLab project/pipeline/job read token

HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST

unset

Allowed self-hosted GitLab HTTPS origins

HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST

unset

Private HTTP(S) origins allowed in full profile

HEALTH_MONITOR_ALLOW_STDIO

0

Allow trusted local stdio checks

HEALTH_MONITOR_STDIO_ALLOWLIST

unset

Optional comma-separated executable allowlist

HEALTH_MONITOR_HTTP_TOKEN

unset

Bearer token for POST /mcp

HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST

unset

Allowed remote client origins

HEALTH_MONITOR_HTTP_MAX_BODY_BYTES

1048576

Maximum inbound MCP body

HEALTH_MONITOR_HTTP_BODY_TIMEOUT_MS

15000

Inbound body read timeout

HEALTH_MONITOR_HTTP_STATEFUL_SESSIONS

0

Enable stateful Streamable HTTP sessions

HEALTH_MONITOR_HTTP_SESSION_TTL_MS

1800000

Stateful session TTL

HEALTH_MONITOR_HTTP_MAX_SESSIONS

100

Stateful session cap

HTTP Deployment

The server binds to 127.0.0.1 by default. A non-loopback bind requires a remote-safe profile, bearer token, and Origin allowlist.

HOST=0.0.0.0 \
HEALTH_MONITOR_PROFILE=remote-safe \
HEALTH_MONITOR_HTTP_TOKEN=change-me \
HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
npx -y health-monitor-mcp-http

GET /health is unauthenticated and exposes only status and version. POST /mcp requires Authorization: Bearer <token>.

Docker

Persist /data; otherwise the SQLite database disappears with the container.

docker volume create health-monitor-data

docker run --rm \
  -v health-monitor-data:/data \
  -p 127.0.0.1:3000:3000 \
  -e HOST=0.0.0.0 \
  -e HEALTH_MONITOR_PROFILE=remote-safe \
  -e HEALTH_MONITOR_HTTP_TOKEN=change-me \
  -e HEALTH_MONITOR_HTTP_ORIGIN_ALLOWLIST=https://client.example \
  ghcr.io/oaslananka/health-monitor-mcp:latest

Development

The repository pins Node.js 24.18.0 and pnpm 11.14.0 through .mise.toml.

mise trust
mise install
pnpm install --frozen-lockfile
pnpm run ci

Useful gates:

pnpm run build
pnpm run typecheck
pnpm run lint
pnpm run lint:test
pnpm run test:coverage
pnpm run test:integration
pnpm run docs:api:check
pnpm run security:supply-chain
pnpm run check:metadata
pnpm run check:package

Coverage and Test Analytics

Jest remains the blocking coverage gate with repository-local thresholds. The CI validation job runs all unit and integration tests once, writes coverage/lcov.info and reports/junit/junit.xml, and uploads both reports to Codecov. Codecov project and patch statuses start as informational with target: auto and a 1% tolerance, adding pull-request diff coverage, file-level visibility, and failed-test analytics without duplicating the local merge gate.

Codecov Bundle Analysis is intentionally not enabled. This package ships Node.js entrypoints compiled with tsc; it does not currently produce a Rollup, Vite, or Webpack application bundle whose download size is a product metric.

Architecture and Roadmap

Agent Runtime Configuration

This repository owns its product-specific MCP configuration, plugin manifest, and skills:

File

Purpose

.claude-plugin/plugin.json

Claude Code plugin manifest

.mcp.json

Project-local MCP configuration

.codex/config.example.toml

Codex CLI example

.vscode/mcp.example.json

VS Code / Copilot example

opencode.example.jsonc

OpenCode example

skills/

Product-specific monitoring workflows

docs/agent-runtime-config.md

Runtime setup and validation

Security and Contributing

Report vulnerabilities through GitHub Private Vulnerability Reporting. See SECURITY.md and docs/security.md.

Contribution setup and standards are documented in docs/contributing.md. Usage questions belong in GitHub Discussions; actionable work belongs in issues.

License

MIT

Available Tools

22 tools
check_allCheck All TargetsA
Read-only

Check all registered MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets with one bounded concurrency limit. Results preserve MCP-then-GitHub-then-GitLab-then-HTTP registration order; optional tags filter all target kinds.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter targets by registered server tags
timeout_msNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral details: a bounded concurrency limit, result order preservation (MCP→GitHub→GitLab→HTTP), and that tags filter across all target kinds. This goes beyond the safety annotations and enriches the agent's understanding of execution behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, heavily packed with relevant details: scope, concurrency, ordering, and tag filtering. No redundancy or filler—every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main aspects needed to invoke the tool: what it checks, ordering, concurrency, and tag filtering. It lacks an explicit statement about return format, but no output schema is present, and the description's mention of 'Results preserve... order' gives a hint. Given the simple parameter set and rich sibling context, it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50% (only tags has a description). The tool description adds value by clarifying that tags filter all target kinds, going beyond the schema's 'Filter targets by registered server tags'. For timeout_ms, the schema provides default/min/max, so no additional semantics are needed. The description partially compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Check all registered MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets') with a specific verb and resource scope. It distinguishes from sibling tools by covering 'all' target kinds at once, as opposed to individual check tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for bulk checking across all target types and notes a bounded concurrency limit as a key advantage. It does not explicitly name alternatives or state when not to use, but the 'all' scope and context from sibling names provide clear usage context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_github_actionsCheck GitHub Actions WorkflowA
Read-only

Check the latest run for a registered GitHub Actions workflow and return failed job and step diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGitHub Actions target name to check
timeout_msNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already declaring readOnlyHint=true and destructiveHint=false, the description adds useful context by specifying that it returns diagnostics for failed jobs and steps, which helps the agent anticipate the output. It does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action and resource, containing no redundant words. It is concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only check tool with no output schema, the description adequately covers the purpose and return value (failed diagnostics). Combined with the safety annotations and the simple parameter set, this is sufficient context for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a description for 'name' but not for 'timeout_ms' (50% coverage). The tool description does not explain either parameter or add meaning beyond the schema, failing to compensate for the undocumented timeout_ms parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Check the latest run'), a specific resource ('registered GitHub Actions workflow'), and the return value ('failed job and step diagnostics'). This clearly distinguishes it from sibling tools like check_gitlab_pipeline or check_http_target.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for GitHub Actions workflows but does not explicitly state when to use this tool vs alternatives like check_all or check_gitlab_pipeline. No exclusions or alternative tool mentions are provided, so usage context is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_gitlab_pipelineCheck GitLab PipelineA
Read-only

Check the latest registered GitLab pipeline and return failed job, stage, ref, commit, URL, and bounded trace diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesGitLab pipeline target name to check
timeout_msNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, establishing a safe read-only operation. The description adds valuable context by specifying the return payload, including 'bounded trace diagnostics', which hints at a limit on trace length. It does not contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource, then lists the specific output fields. It is concise with no wasted words, conveying all key information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the return fields, which is helpful, but it omits explanation of the timeout_ms parameter and leaves 'bounded' vague. With no output schema and an additional undocumented parameter, the description is adequate but not fully complete for an agent to invoke correctly without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'name' but not 'timeout_ms', leaving 50% of parameter coverage. The tool description does not mention 'timeout_ms' at all, failing to explain its purpose or relationship to the 'bounded' diagnostics. Since schema coverage is only 50%, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Check') on a specific resource ('latest registered GitLab pipeline') and enumerates the specific returned diagnostics (failed job, stage, ref, commit, URL, bounded trace diagnostics). This distinguishes it from sibling tools like list_gitlab_pipelines and unregister_gitlab_pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context for using this tool is clear: to retrieve failure details of the latest registered GitLab pipeline. It does not explicitly name alternatives or exclusions, but the sibling tools' names indicate different purposes (listing, unregistering), so an agent can infer when to use this one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_http_targetCheck HTTP TargetA
Read-only

Check a registered HTTP target with DNS-pinned SSRF protection, bounded redirects/body reads, response assertions, and TLS-expiry diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHTTP target name to check
timeout_msNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavioral context beyond the annotations, such as DNS-pinned SSRF protection, bounded redirects/body reads, response assertions, and TLS-expiry diagnostics. These details inform the agent about safety measures and diagnostic capabilities, which is valuable. The annotations already declare read-only and non-destructive, so the bar is lower, but the description still provides additional useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that conveys the core action and key features. It is front-loaded with the main purpose, though the technical jargon (e.g., 'DNS-pinned SSRF') might be dense. Every phrase adds value, so it earns a high score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description sufficiently explains what the tool does and what behaviors to expect (assertions, TLS diagnostics). It lacks explicit return format details, but for a read-only check tool with strong annotations, this is not a critical gap. The two-parameter schema is simple, and the description covers the core semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only 'name' is described). The description does not mention or explain the 'timeout_ms' parameter, leaving its semantics undocumented in both schema and description. The description's mention of 'bounded redirects/body reads' only indirectly relates to timeout behavior, but it does not clarify how the parameter affects the check.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Check a registered HTTP target' with a specific verb and resource, and enumerates distinct capabilities like SSRF protection and response assertions. This distinguishes it from sibling tools like check_server or check_github_actions, which target different resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for checking registered HTTP targets, but it does not explicitly state when to use it over alternatives or when not to use it. It lacks explicit exclusions or alternative tool references, relying on the name and context to convey usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_serverCheck Server HealthA
Read-only

Check the health of a registered MCP server, list tools, and measure response time.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name to check
timeout_msNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds that it lists tools and measures response time, which are behavioral details beyond annotations. However, it does not disclose error conditions or what 'health' entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct and front-loaded. Every word contributes value: 'Check the health', 'registered MCP server', 'list tools', 'measure response time'. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with good annotations and no output schema, the description covers the main actions. It could include details about return format or behavior when the server is not registered, but these are not critical given the tool's simplicity and safe annotation profile.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes 'name' but not 'timeout_ms'. The description does not explain the timeout parameter or its relation to response time measurement. With schema coverage at 50%, the description should compensate for the missing parameter semantics, but it doesn't.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'check' with resource 'registered MCP server', and explicitly lists what it does: list tools and measure response time. This clearly distinguishes it from sibling check_* tools for HTTP, GitHub Actions, and GitLab Pipelines.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states it checks a 'registered MCP server', giving clear context that this tool is for MCP servers specifically. It implies usage for MCP health checks but does not explicitly exclude alternatives like check_http_target or provide when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dashboardGet Health DashboardA
Read-only

Get a dashboard overview of registered MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets with uptime and performance stats.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
include_tool_statsNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds valuable context about the aggregated scope (servers, workflows, pipelines, HTTP targets) and the performance/uptime stats. It does not describe return format or potential heaviness, but for a read-only dashboard with annotations, the added context is meaningful. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, compact sentence of 19 words that front-loads the verb and key content. Every word adds value, listing the covered resources and the type of statistics, with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two optional parameters and no output schema, the description gives a solid high-level picture of what the dashboard includes. The main gap is the complete absence of parameter semantics (e.g., how to adjust the time window), which prevents full operational understanding, but the core purpose is well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not mention the parameters 'hours' or 'include_tool_stats' at all. The schema only provides types/defaults, leaving their semantics entirely unstated. The agent cannot infer whether 'hours' is a time range or how 'include_tool_stats' alters the output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and clearly states the resource ('dashboard overview') plus the exact coverage ('registered MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets') and the kind of data included ('uptime and performance stats'). This distinguishes it from the sibling tools that target individual resources or actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by positioning this as a broad overview tool, which implicitly contrasts with the more specific sibling tools (e.g., check_server, list_http_targets). However, it does not explicitly state when to use this versus alternatives or mention exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_monitor_statsGet Monitor StatisticsA
Read-only

Get statistics about the health monitor itself, including database activity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and destructiveHint false, so the safety profile is covered. The description adds minor context about the contents (database activity) but does not disclose any additional behaviors such as pagination or return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 12 words, concise and immediately clear. It contains no filler or repeated information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple no-parameter tool with read-only annotations, the description adequately conveys the purpose. It could be more detailed about what statistics are included, but it's sufficient for this simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, which sets a baseline of 4. The schema has no properties and the description doesn't need to explain parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and names the resource ('statistics about the health monitor itself'), clearly distinguishing it from sibling tools that target pipelines, servers, or targets. The addition 'including database activity' gives concrete scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives is provided. It doesn't reference any conditions or exclusions relative to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_reportGet Health Report (Markdown)A
Read-only

Get a human-readable Markdown health report for MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets. Paste directly into chat or docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds context about output format (Markdown) and intended use beyond the readOnly and destructive annotations. However, it does not disclose the effect of the 'hours' parameter on the report's time window, nor any underlying behavior like network calls or caching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the core action, scope, output format, and intended use without any redundant words. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter and no output schema, the description covers the output format and target resources, but omits the time-range parameter completely. This is a notable gap, though the overall tool is fairly simple.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter 'hours' is not mentioned in the description, and schema description coverage is 0%. The description adds no meaning beyond the schema's type/default/min/max, leaving the agent to infer how the parameter affects the report.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a human-readable Markdown health report covering MCP servers, GitHub Actions workflows, GitLab pipelines, and HTTP targets. The verb 'Get' and specific resource scope distinguish it from sibling check/report tools, and 'Markdown' adds further differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining an aggregate, human-readable report across multiple monitored resource types, and notes it can be pasted into chat or docs. It doesn't explicitly name alternatives or exclusions, but the context is clear enough for selection among granular check tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_uptimeGet Uptime StatisticsB
Read-only

Get uptime history and statistics for a registered MCP server.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name
hoursNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds 'history and statistics,' implying a time-range perspective, but does not disclose details like the default hours window, whether results are aggregated, or behavior for unregistered servers. It adds minimal context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, directly worded sentence that front-loads the action and object. It contains no filler or redundant phrasing, making it concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple read-only operation with two parameters and no output schema, but the description is incomplete: it omits the meaning of the 'hours' parameter, does not indicate the default time range, and fails to differentiate from related monitoring tools. Given the availability of get_monitor_stats and check_* siblings, more context is needed for correct selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the 'name' parameter has a minimal description ('Server name'), while 'hours' has none. The description does not explain the role of 'hours' in controlling the uptime window or any parameter-specific behavior. It adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get uptime history and statistics' with a specific verb and resource, and scopes it to 'a registered MCP server'. However, it does not distinguish this from sibling tools like get_monitor_stats or check_server, which may also involve uptime or server health.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It mentions the server must be registered, but does not explain when to prefer this over get_monitor_stats, check_server, or get_dashboard. No exclusions or conditional use cases are described.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_github_actionsList GitHub Actions WorkflowsA
Read-only

List registered GitHub Actions workflow targets and their latest status.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it lists 'registered' targets and includes 'latest status', which provides some scoping context, but does not elaborate on filtering behavior, pagination, or return format beyond status.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that starts with the verb 'List' and immediately conveys the subject. No wasted words or redundant details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The core purpose is clear, and the description mentions the latest status as a return aspect, but it lacks details about what fields are returned (e.g., workflow name, ID) and does not explain how optional parameters affect results. Given the absence of an output schema, more description would be needed for full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, placing the burden on the description to explain parameters. The description does not mention the 'tags' or 'status' parameters at all. While the parameter names are somewhat self-explanatory, the description adds no explicit meaning, such as clarifying that 'tags' filters by tags and 'status' filters by the up/down/unknown state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('List') and the resource ('registered GitHub Actions workflow targets') along with the additional detail of including their latest status. This distinguishes it from sibling list tools like list_gitlab_pipelines and list_http_targets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool: to list registered GitHub Actions workflow targets. It does not explicitly mention alternatives or exclusions, but the context is sufficiently clear given the tool name and the 'registered' qualifier, which differentiates it from other list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_gitlab_pipelinesList GitLab PipelinesB
Read-only

List registered GitLab pipeline targets and their latest status.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is known. The description adds minimal context by specifying 'registered' targets and 'latest status,' but does not disclose behaviors like pagination, rate limits, or authentication requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that gets straight to the point, front-loading the action and resource with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is too sparse for a tool with two optional filters and no output schema. It fails to explain the return format or that the tool supports filtering by tags and status, so the agent cannot fully anticipate the invocation parameters or response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate, but it does not mention the 'tags' or 'status' parameters at all. The schema has no property descriptions, leaving the agent without guidance on how to use filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and clearly identifies the resource as 'registered GitLab pipeline targets' with 'their latest status.' This distinguishes it from sibling tools like register_gitlab_pipeline and check_gitlab_pipeline, which perform different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like check_gitlab_pipeline or list_github_actions. It does not mention filter use cases or exclusions, leaving the agent to infer usage from the name and context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_http_targetsList HTTP TargetsA
Read-only

List registered HTTP targets and their latest status, response, and TLS summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is known. The description adds what data is returned (status, response, TLS summary) but does not disclose additional behaviors like pagination or rate limits, which is acceptable given the low complexity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no unnecessary words or repetition. It efficiently conveys the tool's purpose and output summary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the core function of listing targets and their status, but it omits mention of optional filtering by tags or status and provides no details on return structure. Given the schema captures parameters, the description is slightly incomplete for the tool's full range of capabilities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the optional tags or status filter parameters. The failure to compensate for the lack of parameter information leaves the agent without guidance on how to refine the list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists registered HTTP targets and includes their latest status, response, and TLS summary. The verb 'List' plus the specific resource 'HTTP targets' clearly differentiates it from sibling tools like list_servers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys the use case—obtaining an overview of all HTTP targets and their operational state. However, it does not explicitly mention when to use this tool over alternatives like check_http_target, so it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_serversList Registered ServersB
Read-only

List all registered MCP servers with their current status.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
statusNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the listing includes current status, which is useful, but it does not disclose filtering behavior, pagination, or the meaning of 'all' when filters are applied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the verb 'List' and clearly specifies the resource and return focus. There is no redundant or extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has two optional filter parameters, but the description says 'all registered' servers, which creates ambiguity about whether filters are supported and whether 'all' is literal. With no output schema and minimal return information, the description is adequate for a simple list but misses important filter semantics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description does not explain the 'tags' or 'status' parameters. The mention of 'status' in the description could be misinterpreted as a display field rather than a filter. Without additional context, parameter semantics remain ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool lists all registered MCP servers and includes their current status. This distinguishes it from sibling tools like list_http_targets or list_gitlab_pipelines, which target different resource types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives such as check_all or list_http_targets. There are no prerequisites or exclusions; usage is only implied by the resource name 'servers'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_github_actionsRegister GitHub Actions WorkflowA

Register a GitHub Actions workflow by owner, repository, and workflow file or ID. Only the token environment-variable name is stored; token values remain in the runtime environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUnique local name for this GitHub Actions target
tagsNoTags for grouping
ownerYesGitHub user or organization
branchNoOptional branch filter for workflow runs
workflowYesWorkflow numeric ID or .yml/.yaml filename
token_envNoEnvironment variable containing a GitHub token; the token value is never persistedGITHUB_TOKEN
repositoryYesGitHub repository name
check_interval_minutesNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations state readOnlyHint=false and destructiveHint=false, but the description adds meaningful security-relevant behavior: only the token environment-variable name is stored, while token values remain in the runtime environment. This goes beyond what annotations reveal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the action and resource, and includes a crucial security caveat without unnecessary filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a registration tool with 8 parameters and no output schema. The description covers core inputs and token security but does not explain post-registration behavior, return values, or the role of parameters like check_interval_minutes and branch, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is high (88%), so the baseline is 3. The description adds minor semantic context by noting the workflow can be a file or ID and clarifying token_env behavior, but it largely relies on the schema for parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Register' with the resource 'GitHub Actions workflow' and lists the key identifying parameters (owner, repository, workflow file or ID). This clearly distinguishes it from siblings like register_gitlab_pipeline or check_github_actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear this tool is for registering GitHub Actions workflows, which implies usage context. However, it does not explicitly state when to prefer this over alternatives or provide exclusions, though sibling names fill some of that gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_gitlab_pipelineRegister GitLab PipelineA

Register a GitLab CI/CD project pipeline. GitLab.com is allowed by default; self-hosted HTTPS origins require HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST. Only the token environment-variable name is stored.

ParametersJSON Schema
NameRequiredDescriptionDefault
refNoOptional branch or tag filter
nameYesUnique local name for this GitLab pipeline target
tagsNoTags for grouping
projectYesNumeric project ID or namespace/project path
base_urlNoGitLab HTTPS origin; self-hosted origins require HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLISThttps://gitlab.com
token_envNoEnvironment variable containing a GitLab token; the token value is never persistedGITLAB_TOKEN
check_interval_minutesNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a write (readOnlyHint=false) and non-destructive (destructiveHint=false) operation. The description adds valuable context: token values are not persisted (only the environment-variable name is stored) and self-hosted origins require HEALTH_MONITOR_GITLAB_BASE_URL_ALLOWLIST. This goes beyond the annotations to explain security-relevant behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences: the first states the primary action, the second conveys constraints. It is front-loaded and contains no redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 7 parameters, high schema coverage, and absence of an output schema, the description is sufficiently complete. It covers the core purpose and key constraints, though it could briefly mention what registration implies (e.g., enabling monitoring), but the sibling check_gitlab_pipeline tool provides that context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 86%, so the schema already documents most parameters clearly. The description's mention that 'only the token environment-variable name is stored' reinforces token_env semantics but is also present in the schema. No additional parameter-level meaning is added, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Register') and resource ('GitLab CI/CD project pipeline'), distinguishing it from sibling registration tools (e.g., register_github_actions, register_http_target). It also notes the default GitLab.com behavior, adding scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use this tool: to register a GitLab pipeline for monitoring. It also provides important usage constraints (GitLab.com allowed by default; self-hosted origins require allowlist). It does not explicitly name alternatives, but the specificity makes the intended use obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_http_targetRegister HTTP TargetA

Register a GET-only HTTP or HTTPS endpoint with status, header, body, JSON, and TLS-expiry assertions. Public networks are allowed by default; private origins require full profile and HEALTH_MONITOR_HTTP_TARGET_ALLOWLIST.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a write operation (readOnlyHint=false) and no destructive behavior. The description adds meaningful context beyond annotations: GET-only restriction, supported assertion types, and allowlist requirements for private origins. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the verb and resource type. Every phrase provides useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core behavior, supported assertion types, and network constraints. It lacks explicit return-value or setup details, but no output schema exists and the tool is reasonably scoped. Sufficient for a registration tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so baseline is 4. The description mentions endpoint and assertion types, but there are no parameters to document. This is acceptable given the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Register'), the resource ('GET-only HTTP or HTTPS endpoint'), and the specific features (status, header, body, JSON, TLS-expiry assertions). This distinguishes it from sibling register tools for GitHub Actions, GitLab pipelines, and servers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for HTTP/HTTPS monitoring targets and provides context on network restrictions and prerequisites for private origins. It does not explicitly name alternatives, but sibling tools make the differentiation clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

register_serverRegister MCP ServerA

Register an MCP server. Use http for a Streamable HTTP MCP endpoint, sse only for legacy Server-Sent Events servers, and stdio only for a local executable explicitly allowed by runtime policy.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare non-read and non-destructive mutation. The description adds context about transport constraints and runtime policy restrictions, but it does not disclose side effects (e.g., persistence, overwriting, validation) or return behavior. The policy note provides some value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action ('Register an MCP server'), followed by a compact list of transport rules. No redundant information with schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite annotations, the description lacks critical operational detail: how the server is identified, what input the tool accepts (schema is empty), what happens on success/failure, and whether registration persists. The transport guidance is useful but does not cover the overall registration workflow, leaving the tool ambiguous for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters with 100% schema coverage, so the baseline is 4. The description enriches the empty schema by explaining the three transport modes (http, sse, stdio) and their appropriate use, which is not evident from the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Register' with the resource 'MCP server', clearly distinguishing it from sibling tools like register_http_target, register_github_actions, etc. It also adds protocol specificity (http, sse, stdio), making the scope concrete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs when to use http, sse, or stdio based on server type, including exclusions (sse only for legacy, stdio only if policy-allowed). However, it does not explicitly name alternative tools like register_http_target, so differentiation relies on the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_alertSet Alert ThresholdsA

Configure alert thresholds for response time, uptime, and consecutive failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesServer name
min_uptime_percentNoAlert if uptime drops below this
max_response_time_msNoAlert if response time exceeds this
consecutive_failures_before_alertNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a write operation (readOnlyHint=false), so the description's 'Configure' is consistent. However, it does not disclose behavioral traits like whether setting thresholds overwrites existing ones, applies per-server, or has side effects. Some extra context is added by naming the metrics, but there is room for more.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence that is front-loaded with the verb and object, and it names the key metrics. No filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema and simple annotations, the description covers the core purpose but omits important context about side effects (e.g., existing thresholds being replaced) and the requirement for a valid server name. It is adequate for a basic config tool but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (3 of 4 params have descriptions). The description names the threshold types, which aligns with the schema and helps clarify consecutive_failures_before_alert (which lacks a schema description). It does not add much beyond what the schema already specifies for the other parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Configure') and resource ('alert thresholds') and lists the key metrics involved. It clearly distinguishes this tool from sibling tools like check_server, get_uptime, and register_* which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you need to set alert thresholds) but provides no explicit when-to-use vs alternatives or exclusions. It doesn't mention when not to use this tool, such as when only viewing thresholds is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister_github_actionsUnregister GitHub Actions WorkflowA
Destructive

Remove a GitHub Actions workflow target and its stored check history.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag the tool as destructive, and the description adds that it also removes stored check history, providing useful scope beyond the annotations. It does not mention reversibility or prerequisites, but the destructiveHint annotation covers the primary safety signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the action verb and contains no superfluous words. Every word contributes to understanding the tool's behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter destructive tool, the description covers the core purpose and extra behavior (check history removal), but it omits parameter semantics and any note about expected outcomes or error behavior. With no output schema, some return-value context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one required parameter 'name' with 0% description coverage, and the description does not explain what 'name' refers to or provide any parameter guidance. The agent must infer from context, which is a significant gap for a tool with a single required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Remove') and resource ('GitHub Actions workflow target'), and also notes the removal of stored check history. This distinguishes it from sibling unregister tools like unregister_gitlab_pipeline and unregister_http_target, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (when you want to remove a GitHub Actions workflow) but does not explicitly provide when-to-use vs alternatives or exclusions. The sibling list shows similar tools for other target types, but no alternative is referenced in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister_gitlab_pipelineUnregister GitLab PipelineA
Destructive

Remove a GitLab pipeline target and its stored check history.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, but the description adds a concrete behavioral trait: 'and its stored check history' is removed. This provides useful side-effect context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that directly states the action and its key side effect. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter destructive tool, the description adequately covers the purpose and the important side effect. It does not need to explain return values, but it would benefit from explicitly connecting the 'name' parameter to the target being removed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the only parameter 'name', and the description does not explicitly explain that 'name' refers to the registered GitLab pipeline target name. The meaning is only indirectly inferred from the tool name and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Remove' with a clear resource 'GitLab pipeline target' and additionally states that stored check history is removed. This clearly distinguishes the tool from siblings like unregister_github_actions and unregister_http_target.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose: use when you need to remove a GitLab pipeline target. However, there is no explicit guidance about when not to use this tool or how it compares to alternatives such as unregister_http_target or checking a pipeline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister_http_targetUnregister HTTP TargetA
Destructive

Remove an HTTP target and its stored check history.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnlyHint=false, and the description enhances transparency by disclosing that the operation also removes stored check history, a behavioral detail not present in the annotations. This adds useful context without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence 'Remove an HTTP target and its stored check history.' It is perfectly concise, front-loaded with the action verb, and contains no filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter destructive operation with a clear annotation (destructiveHint=true) and no output schema, the description plus annotation covers the essential context. It could mention error behavior (e.g., if target not found) but this is not critical for a straightforward unregister action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter 'name' with no description (0% schema description coverage). The tool description does not mention the parameter or explain that 'name' identifies the HTTP target to remove, leaving the agent to infer this from context. Given the low coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Remove an HTTP target' with the specific verb 'Remove' and resource 'HTTP target', and adds 'stored check history' to distinguish from other unregister tools. This precisely differentiates it from siblings like unregister_server or unregister_gitlab_pipeline.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: this tool is for unregistering HTTP targets. However, it does not explicitly mention when not to use it or suggest alternatives, relying on the resource name to guide the agent. No exclusions are stated, so this fits a 4.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unregister_serverUnregister ServerB
Destructive

Remove a server from monitoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already flag this as destructive, the description adds no extra behavioral context—it does not mention irreversibility, impact on historical data, or any side effects. It merely echoes the tool's name and purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that communicates the core action without fluff. It is optimally concise for the simple operation, though it sacrifices necessary detail in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive tool with one parameter, the description is underwhelming: it omits parameter semantics, consequences of removal, and any usage context. Even with annotations covering safety, the description fails to provide a complete picture of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required 'name' parameter with zero description coverage, and the tool description does not clarify what 'name' refers to (e.g., hostname, display name, or ID). The description only implies that a server is being removed, leaving the parameter's exact format ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Remove') and the resource ('a server from monitoring'), distinguishing it from sibling unregister tools that target different resource types (e.g., GitLab pipelines, HTTP targets). It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool over alternatives, nor any prerequisite or context such as 'use when you need to stop monitoring a registered server'. The description simply restates the tool's function without offering decision-making support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 22 tool updatesv1.4.0
    • First observedcheck_all
    • First observedcheck_github_actions
    • First observedcheck_gitlab_pipeline
    • First observedcheck_http_target
    • First observedcheck_server
    • First observedget_dashboard
    • First observedget_monitor_stats
    • First observedget_report
    • First observedget_uptime
    • First observedlist_github_actions
    • First observedlist_gitlab_pipelines
    • First observedlist_http_targets
    • First observedlist_servers
    • First observedregister_github_actions
    • First observedregister_gitlab_pipeline
    • First observedregister_http_target
    • First observedregister_server
    • First observedset_alert
    • First observedunregister_github_actions
    • First observedunregister_gitlab_pipeline
    • First observedunregister_http_target
    • First observedunregister_server

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation5/5

Each tool targets a distinct resource type (MCP server, HTTP target, GitHub Actions, GitLab pipeline) and action (register, list, check, unregister). The cross-cutting tools (check_all, get_dashboard, get_report, get_monitor_stats) have clearly separate purposes, so there is no ambiguity.

Naming Consistency5/5

All tool names follow a verb_noun pattern (register, list, check, unregister, get, set) with the resource type clearly stated. Minor singular/plural variations (e.g., list_http_targets vs. register_http_target) are natural and do not break consistency.

Tool Count5/5

With 22 tools covering four distinct target types (MCP servers, HTTP, GitHub Actions, GitLab pipelines) plus cross-cutting monitoring and reporting, the count is well-scoped for the server's broad purpose. Each tool earns its place, and the count is not excessive for the feature set.

Completeness4/5

The lifecycle for each target type is covered: register, list, check, and unregister. There is no explicit update/edit operation for target configurations (e.g., modifying assertions), but agents can work around this by unregistering and re-registering. Overall, the surface is solid with only minor gaps.

Maintenance

ActivitySlowing
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Monitor MCP server health, uptime, response times, and Azure DevOps pipeline status
    14
    12
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for running infrastructure health checks with TIBET provenance. It enables users to define, execute, and audit process health checks with dependency chaining and drift tracking.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP-native health monitoring that probes MCP servers using the list_tools protocol handshake, detects version drift, stores history in SQLite, and generates an HTML dashboard.
    21
    MIT