# `si.fourzerotwo/web` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/si.fourzerotwo/web
- JSON: https://anlyon.dev/api/v1/servers/si.fourzerotwo/web
- Version: 1.0.1 (active)
- Publisher: si.fourzerotwo (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Metadata from the official MCP Registry, synced 2026-10-21T18:54:53.226Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Web & domain tools
Read any public page as markdown, link previews, URL safety, page audits, domain availability and…
```

Scanned 2026-10-21T19:34:21.820Z over streamable-http.

**25 tools: 21 change things and 4 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 0 | ask |
| Changes things | write | 21 | ask |
| Only reads | read | 4 | allow |

## Findings

- **warn** Annotations that disagree with the tool in `seo__links` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "seo__links" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The name "seo__links" says "link": a word for a change.
```

- **warn** Annotations that disagree with the tool in `web__unfurl` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "web__unfurl" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}; The description's first verb is "open": a word for a change.
```


## Changes things (21)

Creates or changes something that can be changed back. Claude Code: ask.

### `domains__abuse-contacts`

- 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:

```untrusted-server-text
Everyone to send an abuse or takedown report to for a site: platform agent, hosting network (+ abuse email, CDN flag) and registrar. A few free samples a day, then $0.005 USDC per call via x402.
```

### `domains__availability`

- 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:

```untrusted-server-text
Registered or available, straight from the TLD registry. A few free samples a day, then $0.002 USDC per call via x402.
```

### `domains__dmca-agent`

- 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:

```untrusted-server-text
Published DMCA / abuse contact (email or form) for a major platform, host, CDN or registrar. A few free samples a day, then $0.002 USDC per call via x402.
```

### `domains__dns`

- 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:

```untrusted-server-text
A, AAAA, MX, NS, TXT, CNAME and CAA records (or one type). A few free samples a day, then $0.001 USDC per call via x402.
```

### `domains__email-auth`

- 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:

```untrusted-server-text
MX, SPF and DMARC for a domain, the mail provider, issues found and a grade. A few free samples a day, then $0.003 USDC per call via x402.
```

### `domains__facts`

- 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:

```untrusted-server-text
Registrar, created, expiry, age, status codes, nameservers and DNSSEC. A few free samples a day, then $0.002 USDC per call via x402.
```

### `domains__ideas`

- 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:

```untrusted-server-text
Rule-based domain candidates for a keyword: exact, stopword-free, hyphenated, prefixed and suffixed, across chosen TLDs, with a trademark flag. Free within the daily allowance, then $0.002 USDC per call via x402.
```

### `domains__ip-owner`

- 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:

```untrusted-server-text
Network, organisation, range, country and abuse email for an IP, from the regional internet registry. A few free samples a day, then $0.002 USDC per call via x402.
```

### `ip-geolocation__asn`

- 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:

```untrusted-server-text
ASN, organisation and hosting flag for one IP. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `ip-geolocation__batch`

- 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:

```untrusted-server-text
Full lookup for up to 100 IPs in one call. A few free samples a day, then $0.02 USDC per call via x402.
```

### `ip-geolocation__country`

- 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:

```untrusted-server-text
Country and continent for one IP. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `seo__keyword-intent`

- 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:

```untrusted-server-text
Classify a search keyword as transactional, commercial, navigational or informational. A few free samples a day, then $0.0005 USDC per call via x402.
```

### `seo__links`

- The name "seo__links" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Internal and external links on a page with anchor text and nofollow flags. A few free samples a day, then $0.003 USDC per call via x402.
```

### `seo__page-audit`

- 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:

```untrusted-server-text
Title, meta, H1, canonical, noindex, hreflang, structured data, OG tags, word count, links, alt text, issues and a score. A few free samples a day, then $0.005 USDC per call via x402.
```

### `seo__robots-check`

- 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:

```untrusted-server-text
Whether a crawler (Googlebot, GPTBot, ClaudeBot…) may fetch a URL, the rule that decided it, and declared sitemaps. A few free samples a day, then $0.002 USDC per call via x402.
```

### `validators__email`

- 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:

```untrusted-server-text
Email syntax, whether the domain accepts mail, disposable and role-account flags. Free within the daily allowance, then $0.001 USDC per call via x402.
```

### `validators__iban`

- 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:

```untrusted-server-text
IBAN mod-97 checksum and country length; UK sort code extracted. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `validators__uk-phone`

- 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:

```untrusted-server-text
Classify a UK number (mobile, landline, freephone, premium…) and format as E.164. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `validators__vin`

- 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:

```untrusted-server-text
VIN format, check digit, WMI and model-year candidates. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `web__unfurl`

- The description's first verb is "open": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
Open Graph and Twitter card data, favicon, theme colour, JSON-LD types, RSS/Atom feeds and sitemaps for a URL. Free within the daily allowance, then $0.002 USDC per call via x402.
```

### `web__url-safety`

- 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:

```untrusted-server-text
Warning signs for a URL: redirect chain and final destination, TLS certificate, domain age, punycode and brand-lookalike tricks, bare IPs, and security-header grade. Free within the daily allowance, then $0.003 USDC per call via x402.
```

## Only reads (4)

Looks things up and changes nothing. Claude Code: allow.

### `ip-geolocation__lookup`

- The name "ip-geolocation__lookup" says "lookup": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Country, continent, EU membership, network block, ASN, organisation and hosting flag for one IP. Free within the daily allowance, then $0.001 USDC per call via x402.
```

### `validators__imei`

- The description's first verb is "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate an IMEI (length + Luhn) and split TAC, serial and check digit. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `validators__uk-postcode`

- The description's first verb is "validate": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Validate and normalise UK postcode format; split outward/inward codes. Free within the daily allowance, then $0.0005 USDC per call via x402.
```

### `web__read`

- The name "web__read" says "read": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Main content of a public web page as clean markdown, with title, byline, published date, canonical URL, language, word count and links. A few free samples a day, then $0.003 USDC per call via x402.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `web`:

```json
{
  "permissions": {
    "allow": [
      "mcp__web__ip-geolocation__lookup",
      "mcp__web__validators__imei",
      "mcp__web__validators__uk-postcode",
      "mcp__web__web__read"
    ],
    "ask": [
      "mcp__web__domains__availability",
      "mcp__web__domains__facts",
      "mcp__web__domains__dns",
      "mcp__web__domains__ip-owner",
      "mcp__web__domains__dmca-agent",
      "mcp__web__domains__abuse-contacts",
      "mcp__web__domains__email-auth",
      "mcp__web__domains__ideas",
      "mcp__web__ip-geolocation__country",
      "mcp__web__ip-geolocation__asn",
      "mcp__web__ip-geolocation__batch",
      "mcp__web__seo__robots-check",
      "mcp__web__seo__page-audit",
      "mcp__web__seo__links",
      "mcp__web__seo__keyword-intent",
      "mcp__web__validators__vin",
      "mcp__web__validators__iban",
      "mcp__web__validators__uk-phone",
      "mcp__web__validators__email",
      "mcp__web__web__unfurl",
      "mcp__web__web__url-safety"
    ],
    "deny": []
  }
}
```
