Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.cyanheads/devops-status-mcp-server

REMOTE · DEVOPS-STATUS.CASEYJHAND.COM · 2 COMPONENTS · SCANNED AUG 3

Vendor status pages, TLS cert inspection, DNS propagation checks, and incident-response playbooks.

+4 this week 68 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 6 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2324 tokens (~332/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · devops-status.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-devops-status-mcp-server https://devops-status.caseyjhand.com/mcp
# ~/.codex/config.toml
[mcp_servers.cyanheads-devops-status-mcp-server]
url = "https://devops-status.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-devops-status-mcp-server": {
      "type": "remote",
      "url": "https://devops-status.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-devops-status-mcp-server --url https://devops-status.caseyjhand.com/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-devops-status-mcp-server:
    url: "https://devops-status.caseyjhand.com/mcp"
// mcp.json
{
  "mcpServers": {
    "cyanheads-devops-status-mcp-server": {
      "type": "http",
      "url": "https://devops-status.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Aug 26 +11
    • Schema quality: unverified → excellent functional
  • 31 Jul 26 −9
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “devops_check_dns” rewrote its description, which is the text the model reads security
    • Tool “devops_check_certs” rewrote its description, which is the text the model reads security
    • Tool “devops_get_incidents” rewrote its description, which is the text the model reads security
    • Tool “devops_status_check” rewrote its description, which is the text the model reads security
    • Tool “devops_watch_stack” rewrote its description, which is the text the model reads security
    • Schema quality: 237 → 331 functional
    • Schema quality: 237 → 328 functional
    • Schema quality: 237 → 283 functional
    • MCP protocol: Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28. functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
    • Server version: 0.6.0 → 0.7.0 functional
    • Server version: 0.5.6 → 0.6.0 functional
    • Server version: 0.5.5 → 0.5.6 functional
    • “devops_status_check” added an optional parameter “component_limit” cosmetic
    • “devops_status_check” added an optional parameter “component_filter” cosmetic
    • “devops_watch_stack” added an optional parameter “component_limit” cosmetic
    • “devops_watch_stack” added an optional parameter “component_filter” cosmetic
    • “devops_get_incidents” reworded the description of “filter” cosmetic
    • “devops_get_incidents” reworded the description of “offset” cosmetic
    • “devops_watch_stack” reworded the description of “mode” cosmetic
    • “devops_status_check” reworded the description of “mode” cosmetic
  • 29 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 63

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://devops-status.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 7 Jul 2026 5 Oct 2026 ECDSA 256 ECDSA-SHA256 5aad900eb2055a0b0ea55912ec19680c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of devops-status.caseyjhand.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
devops-status.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://devops-status.caseyjhand.com/mcp Verified 200
http (plaintext) http://devops-status.caseyjhand.com/mcp HTTPS enforced 301 https://devops-status.caseyjhand.com/mcp
MCP tools — 7 exposed · ~2,152 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
devops_check_certs ~281

Inspect SSL/TLS certificate health for one or more domains by performing a real TLS handshake. Works for any internet-accessible domain — no vendor registry required. Reports days to expiry (flagged at < 30 days warning and < 7 days critical), certificate subject and SANs, issuer, hostname coverage, chain-trust verification, TLS protocol version negotiated (flags TLS 1.0/1.1 as insecure), cipher suite, and HSTS presence. The handshake completes even for a certificate clients would reject, so a broken certificate is reported rather than hidden behind a connection error: a hostname mismatch surfaces in cert.hostname_verification_error and a chain-trust failure (self-signed, untrusted root) in cert.authorization_error, both status "critical". If a domain fails to connect at all, check devops_check_dns first — the name may not resolve.

NameTypeReqDescription
domainsarrayyesDomains to inspect. Do not include "https://" — pass the bare hostname. Up to 10 per call.
portintegerTLS port. Defaults to 443. Use 8443 or custom ports for non-standard HTTPS endpoints.
timeout_msintegerConnection timeout per domain in milliseconds. Defaults to the DEVOPS_STATUS_CERT_TIMEOUT_MS env var (5000 when unset). Increase for slow or geographically distant endpoints.
NameTypeReqDescription
resultsarrayyesPer-domain certificate inspection results.

No examples provided.

devops_check_dns ~372

Resolve DNS records for one or more domains across multiple public resolvers and compare what each resolver returned. Works for any domain — no vendor registry required. Reports records found (A/AAAA/CNAME/MX/TXT/NS), resolution latency per resolver, and a typed outcome per resolver and record type so "the domain does not exist" (nxdomain), "the resolver could not answer" (servfail), and "no record of this type" (nodata) stay distinguishable. Resolver disagreements are reported without asserting a cause: partial_resolution (some resolvers answered, others returned nothing) points at a real propagation or resolver problem, while value_variation (every resolver answered with different values) is the normal steady state for anycast and geo-steered domains. Pair with devops_check_certs when a domain resolves but TLS to it is failing.

NameTypeReqDescription
domainsarrayyesDomain names to query. Up to 10 per call.
record_typesarrayDNS record types to resolve. Defaults to A, AAAA, MX, and TXT. Add NS to check nameserver delegation. Add CNAME when investigating redirect chains.
resolversarrayResolver IP addresses to query. Defaults to Google (8.8.8.8), Cloudflare (1.1.1.1), and Quad9 (9.9.9.9). Add custom resolvers to test resolver-specific behavior. Each must be an IP literal, not a hos…
timeout_msintegerQuery timeout per domain+resolver combination in milliseconds. Defaults to the DEVOPS_STATUS_DNS_TIMEOUT_MS env var (3000 when unset).
NameTypeReqDescription
resultsarrayyesPer-domain DNS resolution results.

No examples provided.

devops_get_incidents ~358

Fetch incident history and scheduled maintenance windows for a vendor. Returns full incident timeline — each investigator update, affected components, and resolution. Filter by status to focus on active incidents (use before deploy), resolved history (for postmortem), or upcoming maintenance windows. Page through long histories with limit + offset — a truncated result discloses the total and returns the value to page with in nextOffset. Some vendor feeds cap their own history: when upstreamCeiling is present the vendor API returned everything it will serve, and older incidents are reachable only on the vendor status page, not at a higher offset. An empty result explains itself in notice.

NameTypeReqDescription
filterstringall: incidents plus scheduled maintenances. active: only incidents with status investigating/identified/monitoring. resolved: only fully resolved incidents. scheduled: only scheduled maintenance wind…
limitintegerMaximum incidents to return per call (1–50). Page through longer history with offset rather than raising this.
offsetintegerNumber of matching incidents to skip before applying limit, for paging through history. 0 (default) returns the most recent page; a truncated result returns the value to use next in the nextOffset fi…
vendorstringyesVendor slug (e.g., "github", "aws") or raw Atlassian Statuspage base URL. Use devops_list_vendors to find slugs.
NameTypeReqDescription
capnumberThe limit that was applied. Present only when truncated.
incidentsarrayyesMatching incidents.
namestringyesDisplay name of the vendor.
nextOffsetnumberThe offset to pass on the next call to continue from where this page stopped, already computed as offset + the number returned. Present only when truncated — its absence means this page reached the e…
noticestringPlain-language explanation of this result — how to page onward, why it came back empty (the vendor currently publishes nothing at all, a filter the backend cannot satisfy, or an offset past the end),…
shownnumberNumber of incidents returned after applying the limit. Present only when truncated.
statuspage_urlstringyesStatus page base URL used.
totalCountnumberTotal incidents matching the filter, across all pages, before offset/limit windowing. Present only when the result was truncated.
total_returnednumberyesNumber of incidents in the response.
truncatedbooleanTrue when more incidents matched than the limit returned. Absent when the result was not capped.
upstreamCeilingnumberMaximum incidents the vendor's own status API serves in one fetch, present only when that ceiling was reached on this call. It bounds the history independently of limit and offset: incidents older th…
vendorstringyesVendor slug or URL as provided.

No examples provided.

devops_list_vendors ~131

List vendors in the built-in registry, optionally filtered by category or name search. Returns slug, display name, category, and status page URL for each entry. Use to discover the correct slug to pass to other tools, or to see which vendors are available before configuring a stack.

NameTypeReqDescription
categorystringFilter to one category: cloud, cdn-edge, dev-platform, data, comms, auth, monitoring, or ai.
querystringFree-text search against vendor name and slug. Case-insensitive. E.g., "cloud", "auth", "slack".
NameTypeReqDescription
categoriesarrayyesAll available category values for use in the category filter.
totalnumberyesTotal number of vendors returned.
vendorsarrayyesMatching vendors from the built-in registry.

No examples provided.

devops_status_check ~390

Check the current health status for one or more vendors. Accepts registered vendor slugs (e.g., "github", "aws", "gcp", "gitlab") or raw Atlassian Statuspage base URLs. Registry entries are served by each vendor's native status API (Statuspage, Status.io, Slack, AWS Health, Google Cloud Service Health, Firehydrant) and normalized to one shape. Returns per-vendor operational indicator (none = all clear, minor, major, critical, maintenance = scheduled window), degraded components, and active incidents. Use mode: "detailed" for component lists and maintenance windows, narrowed with component_filter and bounded by component_limit. Batch-friendly — pass a list to check your full stack in one call; a vendor that cannot be resolved or reached is reported in its own result row, so one bad entry never discards the rest.

NameTypeReqDescription
component_filterstringCase-insensitive substring matched against component names in detailed mode (e.g., "api" to check just the API components). Applied before component_limit, so it is the way to reach a component that…
component_limitintegerMaximum components returned per vendor in detailed mode (1-500). Large status pages publish hundreds of components, so a multi-vendor batch at a high limit returns a very large response; narrow with…
modestringsummary: indicator + degraded components + active incidents only. detailed: adds the component list and scheduled maintenance windows.
vendorsarrayyesVendor slugs from the built-in registry (e.g., "github", "aws") or raw Atlassian Statuspage base URLs (non-Statuspage backends are supported via registry slugs only). Mix freely. Use devops_list_vend…
NameTypeReqDescription
capnumberThe per-vendor component_limit that was applied. Present only when truncated.
noticestringPlain-language explanation of the capped component lists — how many components were omitted and how to reach them (component_filter to target one, component_limit to raise the cap). Present only when…
resultsarrayyesPer-vendor status results in the same order as the input vendors list.
shownnumberComponents returned across all vendors. Present only when truncated.
summaryobjectyesAggregate health counts across all checked vendors. Buckets partition the batch: operational + degraded + down + maintenance + unavailable = total.
totalCountnumberComponents matching component_filter across all vendors before the cap. Present only when truncated.
truncatedbooleanTrue when at least one vendor's component list was capped at component_limit. Absent when nothing was capped.

No examples provided.

devops_suggest_action ~272

Return an incident-response playbook tailored to a vendor degradation, with pre-filled follow-up tool calls. Synthesizes category-specific guidance (cloud, CDN, dev-platform, auth, etc.) from built-in incident knowledge and the provided context. Use after devops_status_check or devops_get_incidents surfaces a problem to determine what to investigate next.

NameTypeReqDescription
affected_componentsarrayComponent names affected (from devops_status_check degraded_components or devops_get_incidents affected_components). Used to tailor suggestions to the impacted subsystem.
incident_summarystringLatest incident description or update body from devops_get_incidents. Paste the most recent update to get more targeted advice.
vendorstringyesVendor slug or display name (e.g., "cloudflare", "github"). Used to tailor category-specific guidance (CDN outage vs. CI/CD outage vs. auth provider outage).
vendor_indicatorstringOverall vendor status indicator from a prior devops_status_check call (its indicator field). When provided, the playbook leads with severity-tailored urgency guidance. Omit if status has not been che…
your_domainstringYour own domain or service URL. When provided, nextToolSuggestions will be pre-filled with your domain for cert and DNS checks.
NameTypeReqDescription
diagnostics_summaryobjectyesSummary of input context used to generate the playbook.
guidancestringyesMarkdown playbook — immediate steps, diagnostic checks, mitigation options, and what to monitor for resolution. Tailored to the vendor category, reported severity, and affected components.
nextToolSuggestionsarrayyesRecommended follow-up calls with arguments already populated. Execute these in sequence to gather diagnostic data.
vendorstringyesVendor as provided.
vendor_categoryyesDetected category from registry (e.g., "cdn-edge", "auth"). Null for unrecognized vendors.

No examples provided.

devops_watch_stack ~348

Check the health of a named vendor stack — a saved list of vendors representing your infrastructure dependencies. On the first call, provide vendors to define the stack; subsequent calls can omit vendors to reuse the persisted list. Returns a unified health snapshot with an aggregate rollup plus per-vendor detail. A vendor that cannot be resolved or reached is reported in its own row and left out of the saved stack, so one bad entry never discards the sweep. Ideal for morning status checks or pre-deploy sweeps. Multiple stacks can coexist (e.g., "production", "staging").

NameTypeReqDescription
component_filterstringCase-insensitive substring matched against component names in detailed mode (e.g., "api" to check just the API components). Applied before component_limit, so it is the way to reach a component that…
component_limitintegerMaximum components returned per vendor in detailed mode (1-500). Large status pages publish hundreds of components, so a full stack at a high limit returns a very large response; narrow with componen…
modestringsummary: indicator + degraded components + active incidents. detailed: adds component lists and maintenance windows.
stack_namestringName for this vendor stack. Defaults to "default". Use distinct names to manage multiple stacks (e.g., "production", "data-layer").
vendorsarrayVendor slugs (e.g., "github", "aws") or raw Atlassian Statuspage base URLs. When provided, saves this list as the stack. When omitted, uses the previously saved list for stack_name.
NameTypeReqDescription
capnumberThe per-vendor component_limit that was applied. Present only when truncated.
checked_atstringyesISO 8601 UTC timestamp of this check.
healthstringyesAggregate health rollup: all_operational = everything clear, maintenance = at least one vendor in a scheduled window and nothing worse open, degraded = at least one minor issue, partial_outage = at l…
noticestringPlain-language explanation of the capped component lists — how many components were omitted and how to reach them (component_filter to target one, component_limit to raise the cap). Present only when…
omitted_vendorsarrayyesEntries that could not be resolved or whose URL was blocked; they still appear in vendors[] with an error. A call that saved the stack left them out of the write; a call that reused a saved stack lea…
shownnumberComponents returned across the stack. Present only when truncated.
stack_namestringyesName of the stack checked.
stack_persistedbooleanyesTrue when the vendor list was saved to state on this call. Only the vendors that resolved are saved — see omitted_vendors.
summaryobjectyesAggregate health counts across all checked vendors. Buckets partition the stack: operational + degraded + down + maintenance + unavailable = total.
totalCountnumberComponents matching component_filter across the stack before the cap. Present only when truncated.
truncatedbooleanTrue when at least one vendor's component list was capped at component_limit. Absent when nothing was capped.
vendorsarrayyesPer-vendor status results.

No examples provided.