Perimeter Watch
by entradox · remote · no sign-in to list tools · v1.0.0 · published by GitHub user entradox
Passive domain-perimeter checks — cert expiry, subdomain takeover, lookalikes — as agent tools
6 tools: 3 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things3Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http perimeter-watch-scanner https://perimeter-watch-api-production.up.railway.app/mcp/Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
6 tools
Changes things 3Claude Code: ask
pw_healthLiveness check for the Perimeter Watch API.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Liveness check for the Perimeter Watch API. Returns ok, service, version. Call first to verify connectivity before pw_snapshot.
Annotations the server declares
- title: Perimeter Watch Health
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
pw_snapshotRun a free one-time external-perimeter scan on a domain you control.No findings
Why it is in this group
- The name "pw_snapshot" says "snapshot": a word for reading.
- The description's first verb is "run": a word for a change.
Description, as the server wrote it Run a free one-time external-perimeter scan on a domain you control. Checks TLS certificate expiry, domain renewal status, dangling CNAME takeover risk, and CT-log lookalike domains. Returns a rating plus per-check detail. NOT idempotent (each call consumes rate limit); takes 20-60s; rate-limited to 3 scans per IP per 24h. Args: domain: the domain to scan (e.g. example.com) authority: MUST be true — attests you or your principal own/manage this domain. Scanning third-party domains without authority is prohibited. Scan takes 20-60s. Rate limit: 3/IP/24h.
Annotations the server declares
- title: Run Perimeter Snapshot
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
pw_statsService funnel counters: page views, snapshots run, paid registrations.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Service funnel counters: page views, snapshots run, paid registrations. Read-only.
Annotations the server declares
- title: Perimeter Watch Stats
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
Only reads 3Claude Code: allow
pw_watch_statusCheck whether a domain is enrolled on a paid weekly monitoring plan.No findings
Why it is in this group
- The name "pw_watch_status" says "status": a word for reading.
Description, as the server wrote it Check whether a domain is enrolled on a paid weekly monitoring plan. Returns enrollment status. Paid plans add weekly re-scans with email briefs. Read-only lookup. Args: domain: the domain to look up (e.g. example.com)
Annotations the server declares
- title: Watch Plan Status
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
read_skillRead a product skill file by its skill:// URI.No findings
Why it is in this group
- The name "read_skill" says "read": a word for reading.
Description, as the server wrote it Read a product skill file by its skill:// URI. Args: uri: e.g. skill://<product>/<skill-name>/SKILL.md Get valid URIs from `skills_list_tool`.
skills_list_toolList this product's skills.No findings
Why it is in this group
- The name "skills_list_tool" says "list": a word for reading.
Description, as the server wrote it List this product's skills. Each entry carries the SKILL.md URI, its name and description, verbatim frontmatter, and a per-file sha256 manifest. Read a body with `read_skill`.
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http perimeter-watch-scanner https://perimeter-watch-api-production.up.railway.app/mcp/Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__perimeter-watch-scanner__pw_watch_status",
"mcp__perimeter-watch-scanner__skills_list_tool",
"mcp__perimeter-watch-scanner__read_skill"
],
"ask": [
"mcp__perimeter-watch-scanner__pw_health",
"mcp__perimeter-watch-scanner__pw_snapshot",
"mcp__perimeter-watch-scanner__pw_stats"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as perimeter-watch-scanner. Review it before you use it.
