Koskamo

Merlonix Monitoring MCP

Merlonix provides a Model Context Protocol server for continuous infrastructure and AI-visibility monitoring. It allows AI agents to perform checks on uptime, SSL/TLS certificates, DNS drift, broken links, email authentication, and AI agent readiness. The server includes tools for checking MCP server health and vendor status pages, enabling agencies and MSPs to monitor client domains and upstream providers without manual scraping.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Merlonix Monitoring MCP logo, by MerlonixVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Merlonix
MCP endpoint (Streamable HTTP)
https://api.merlonix.com/mcp
Vendor documentation

What its tools do

16 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

16 of 16 have a description · 16 of 16 declare behavior hints · 12 of 12 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to merlonix.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Check domain health including SSL and DNS
  • Verify AI agent readiness and answer presence
  • Monitor MCP server health and protocol version
  • Check email authentication records (SPF, DMARC)

Source and maintenance

Vendor evidenceRegistry 1.0.2

Protocol and capabilities

Server
merlonix 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
16 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Merlonix monitoring tools. PUBLIC (no auth): query the live SSL/DNS/registration health of any public domain (check_domain_health), score a site for AI-agent readiness (check_agent_readiness), health-check a live MCP server by URL (check_mcp_health), check a domain or IP against the mail DNS blocklists (check_email_blacklist), scan one page for dead links and mixed content (check_broken_links), and read the status of the third-party vendors Merlonix monitors (list_vendor_status / get_vendor_status / list_plans). AUTHED (set "Authorization: Bearer mk_…" with an API key from app.merlonix.com → Settings → API keys): READ your own monitored assets (list_my_assets), the latest check results for one asset (get_asset_checks), and your recent alerts (list_my_alerts); and WRITE (needs a write-scoped API key): start monitoring an asset (create_asset), update or remove one (update_asset / delete_asset), and acknowledge or resolve an alert (acknowledge_alert / resolve_alert). Read tools are read-only; the write tools mutate only YOUR account and are tenant-scoped + write-scope-gated server-side.

Tools

16 advertised

check_domain_health
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check the live SSL/TLS certificate (validity + expiry + issuer), DNS records (A/AAAA/MX/NS resolution), and domain-registration (RDAP) expiry of any public hostname. Each leg fails soft and is reported independently.

check_domain_health input schema
{
  "type": "object",
  "required": [
    "hostname"
  ],
  "properties": {
    "hostname": {
      "type": "string",
      "description": "A public hostname, e.g. example.com"
    }
  },
  "additionalProperties": false
}
check_domain_health annotations
{
  "readOnlyHint": true
}
check_agent_readiness
Advertised by the server during the last successful anonymous check.
Advertised read-only

Score how ready a website is for AI agents and answer engines. Fetches /llms.txt, /robots.txt, and the homepage and returns a letter grade with per-signal findings. No browser rendering or LLM call — deterministic HTTP/parse.

check_agent_readiness input schema
{
  "type": "object",
  "required": [
    "hostname"
  ],
  "properties": {
    "hostname": {
      "type": "string",
      "description": "A public hostname, e.g. example.com"
    }
  },
  "additionalProperties": false
}
check_agent_readiness annotations
{
  "readOnlyHint": true
}
check_mcp_health
Advertised by the server during the last successful anonymous check.
Advertised read-only

Health-check a live MCP (Model Context Protocol) server by URL: performs a real JSON-RPC initialize handshake, then tools/list, and returns whether it is up/degraded/down, its protocol version, server name/version, the callable tool/resource/prompt inventory, transport, and handshake latency. Deterministic — no LLM. Use it to verify your own MCP server is alive and spec-compliant.

check_mcp_health input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The MCP endpoint URL, e.g. https://example.com/mcp"
    }
  },
  "additionalProperties": false
}
check_mcp_health annotations
{
  "readOnlyHint": true
}
check_email_blacklist
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check whether a domain or IP is listed on the major DNS blocklists (DNSBLs) that mail providers consult before accepting mail — the usual reason legitimate mail silently lands in spam. Returns each zone checked, whether it is listed, and the return code. Deterministic DNS lookups, no LLM.

check_email_blacklist input schema
{
  "type": "object",
  "required": [
    "domain"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "A public domain or IP address, e.g. example.com or 203.0.113.10"
    }
  },
  "additionalProperties": false
}
check_email_blacklist annotations
{
  "readOnlyHint": true
}
check_broken_links
Advertised by the server during the last successful anonymous check.
Advertised read-only

Scan one web page for dead links (4xx/5xx/unreachable) and mixed content (http subresources on an https page). Returns each link with its status. Single-page scan, not a crawl — pass the exact page URL. Rate-limited to a few scans per minute, so batch calls will be throttled.

check_broken_links input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "The exact page URL to scan, e.g. https://example.com/pricing"
    }
  },
  "additionalProperties": false
}
check_broken_links annotations
{
  "readOnlyHint": true
}
list_vendor_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the current operational status and recent incidents of every third-party vendor Merlonix monitors (e.g. Cloudflare, GitHub, Stripe). Returns each vendor's slug, current status, and 24h incident count.

list_vendor_status input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_vendor_status annotations
{
  "readOnlyHint": true
}
get_vendor_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the current status plus 30-day status history of one monitored vendor by slug (e.g. "cloudflare"). Use list_vendor_status to discover valid slugs.

get_vendor_status input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Vendor slug, e.g. cloudflare"
    }
  },
  "additionalProperties": false
}
get_vendor_status annotations
{
  "readOnlyHint": true
}
list_plans
Advertised by the server during the last successful anonymous check.
Advertised read-only

List Merlonix subscription plans and pricing (Starter, Team, Agency, Compliance) with their monitoring limits.

list_plans input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_plans annotations
{
  "readOnlyHint": true
}
list_my_assets
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the monitored assets (websites/domains) in YOUR Merlonix account. Returns each asset id, hostname, type, and monitoring status. Requires an API key (Authorization: Bearer mk_… from app.merlonix.com → Settings → API keys).

list_my_assets input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_my_assets annotations
{
  "readOnlyHint": true,
  "requiresAuth": true
}
get_asset_checks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the latest check results (SSL, DNS, uptime, heartbeat, port) for ONE of your monitored assets, by its asset id (from list_my_assets). Requires an API key.

get_asset_checks input schema
{
  "type": "object",
  "required": [
    "asset_id"
  ],
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset id from list_my_assets (a UUID)."
    }
  },
  "additionalProperties": false
}
get_asset_checks annotations
{
  "readOnlyHint": true,
  "requiresAuth": true
}
list_my_alerts
Advertised by the server during the last successful anonymous check.
Advertised read-only

List recent alerts across YOUR monitored assets (SSL changes, downtime, DNS drift, vendor incidents, etc.) with their severity and lifecycle status. Requires an API key.

list_my_alerts input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_my_alerts annotations
{
  "readOnlyHint": true,
  "requiresAuth": true
}
create_asset
Advertised by the server during the last successful anonymous check.

Start monitoring a new asset (website/domain) in YOUR Merlonix account. Provide a hostname and asset_type; optionally a label and which checks to enable. Returns the created asset. Requires an API key with write scope. Subject to your plan asset quota (a full or non-paying plan returns an error).

create_asset input schema
{
  "type": "object",
  "required": [
    "hostname",
    "asset_type"
  ],
  "properties": {
    "label": {
      "type": "string",
      "description": "Optional human label (max 120 chars)."
    },
    "hostname": {
      "type": "string",
      "description": "The hostname to monitor, e.g. example.com"
    },
    "asset_type": {
      "enum": [
        "domain",
        "hostname",
        "certificate",
        "dns_record"
      ],
      "type": "string",
      "description": "Asset kind: \"hostname\" (a website/host), \"domain\", \"certificate\", or \"dns_record\"."
    },
    "dns_enabled": {
      "type": "boolean",
      "description": "Monitor DNS records."
    },
    "ssl_enabled": {
      "type": "boolean",
      "description": "Monitor the TLS certificate (default on for hostnames)."
    },
    "domain_enabled": {
      "type": "boolean",
      "description": "Monitor domain-registration (RDAP) expiry."
    },
    "uptime_check_url": {
      "type": "string",
      "description": "Optional URL to probe for uptime (enables uptime checks)."
    }
  },
  "additionalProperties": false
}
create_asset annotations
{
  "readOnlyHint": false,
  "requiresAuth": true,
  "idempotentHint": false,
  "destructiveHint": false
}
update_asset
Advertised by the server during the last successful anonymous check.

Update one of YOUR monitored assets by its asset id (from list_my_assets): relabel it or toggle which checks run. Returns the updated asset. Requires an API key with write scope.

update_asset input schema
{
  "type": "object",
  "required": [
    "asset_id"
  ],
  "properties": {
    "label": {
      "type": "string",
      "description": "New label (max 120 chars)."
    },
    "asset_id": {
      "type": "string",
      "description": "The asset id from list_my_assets (a UUID)."
    },
    "dns_enabled": {
      "type": "boolean",
      "description": "Enable/disable DNS monitoring."
    },
    "ssl_enabled": {
      "type": "boolean",
      "description": "Enable/disable TLS-certificate monitoring."
    },
    "domain_enabled": {
      "type": "boolean",
      "description": "Enable/disable domain-registration (RDAP) monitoring."
    }
  },
  "additionalProperties": false
}
update_asset annotations
{
  "readOnlyHint": false,
  "requiresAuth": true,
  "idempotentHint": true,
  "destructiveHint": false
}
delete_asset
Advertised by the server during the last successful anonymous check.
Advertised destructive

STOP monitoring one of YOUR assets and remove it, by its asset id (from list_my_assets). This is irreversible — its check history goes too. Requires an API key with write scope.

delete_asset input schema
{
  "type": "object",
  "required": [
    "asset_id"
  ],
  "properties": {
    "asset_id": {
      "type": "string",
      "description": "The asset id from list_my_assets (a UUID)."
    }
  },
  "additionalProperties": false
}
delete_asset annotations
{
  "readOnlyHint": false,
  "requiresAuth": true,
  "idempotentHint": true,
  "destructiveHint": true
}
acknowledge_alert
Advertised by the server during the last successful anonymous check.

Acknowledge one of YOUR alerts by its alert id (from list_my_alerts) — marks it as seen/being-handled without resolving it. Optionally attach a note. Requires an API key with write scope.

acknowledge_alert input schema
{
  "type": "object",
  "required": [
    "alert_id"
  ],
  "properties": {
    "note": {
      "type": "string",
      "description": "Optional note (max 500 chars)."
    },
    "alert_id": {
      "type": "string",
      "description": "The alert id from list_my_alerts (a UUID)."
    }
  },
  "additionalProperties": false
}
acknowledge_alert annotations
{
  "readOnlyHint": false,
  "requiresAuth": true,
  "idempotentHint": true,
  "destructiveHint": false
}
resolve_alert
Advertised by the server during the last successful anonymous check.

Resolve one of YOUR alerts by its alert id (from list_my_alerts) — closes it. Optionally set resolution ("fixed" | "false_positive" | "wontfix") and a note. Requires an API key with write scope.

resolve_alert input schema
{
  "type": "object",
  "required": [
    "alert_id"
  ],
  "properties": {
    "note": {
      "type": "string",
      "description": "Optional note (max 500 chars)."
    },
    "alert_id": {
      "type": "string",
      "description": "The alert id from list_my_alerts (a UUID)."
    },
    "resolution": {
      "enum": [
        "fixed",
        "false_positive",
        "wontfix"
      ],
      "type": "string",
      "description": "Why the alert is being closed."
    }
  },
  "additionalProperties": false
}
resolve_alert annotations
{
  "readOnlyHint": false,
  "requiresAuth": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
290 ms
95th percentile latency
290 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 290 ms · metadata changed · 16 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http merlonix-monitoring-mcp https://api.merlonix.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add merlonix-monitoring-mcp --url https://api.merlonix.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable merlonix-monitoring-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "merlonix-monitoring-mcp": {
      "url": "https://api.merlonix.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "merlonix-monitoring-mcp": {
      "type": "streamableHttp",
      "url": "https://api.merlonix.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start merlonix-monitoring-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "merlonix-monitoring-mcp": {
      "type": "http",
      "url": "https://api.merlonix.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http merlonix-monitoring-mcp https://api.merlonix.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://api.merlonix.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "merlonix-monitoring-mcp": {
      "serverUrl": "https://api.merlonix.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Merlonix Monitoring MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Merlonix Monitoring MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing