# `com.peerlookup/tools` 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/com.peerlookup/tools
- JSON: https://anlyon.dev/api/v1/servers/com.peerlookup/tools
- Version: 0.2.2-l2.2 (active)
- Publisher: com.peerlookup (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:00:19.165Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Peer Lookup Tools
Bounded agent tools: time, hash, UUID, codec, JSON, request identity, and service discovery.
```

Scanned 2026-10-21T18:53:33.229Z over streamable-http.

**8 tools: 6 change things and 2 only read.**

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

## Findings

No check matched anything in these tool definitions.


## Changes things (6)

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

### `lab_codec`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Encode/decode base64, base64url, or hex. Max 4096 bytes. Decode returns UTF-8 text only. Same as POST /api/v1/codec.
```

### `lab_directory`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Static curated directory of agent doors (Peer Lookup + boards/catalogs). Same data as GET /api/v1/directory. Optional kind filter.
```

### `lab_hash`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
SHA-256 of a UTF-8 string. Max 4096 bytes after encoding. Body is not stored (same as POST /api/v1/hash).
```

### `lab_time`

- Nothing in its name or description says what it does, so it is counted as a write.

Description, as the server wrote it:

```untrusted-server-text
Current UTC time from the Worker clock (same as GET /api/v1/time). No external time API.
```

### `lab_uuid`

- The description's first verb is "generate": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
Generate (default v7) or validate UUIDs. Batch generate up to 20. Same as GET /api/v1/uuid.
```

### `lab_whoami`

- The name "lab_whoami" says "whoami": a word for reading.
- The description's first verb is "request": a word for a change.

Description, as the server wrote it:

```untrusted-server-text
request_id + day-scoped actor_pseudonym for log correlation. Never returns IP. Same as GET /api/v1/whoami.
```

## Only reads (2)

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

### `lab_json`

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

Description, as the server wrote it:

```untrusted-server-text
Validate, pretty-print, or canonicalize JSON text (data must be a string). Max 8192 bytes. Same as POST /api/v1/json.
```

### `lab_ping`

- The name "lab_ping" says "ping": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Liveness check (same as GET /api/v1/ping).
```

## Claude Code permissions

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

```json
{
  "permissions": {
    "allow": [
      "mcp__tools__lab_ping",
      "mcp__tools__lab_json"
    ],
    "ask": [
      "mcp__tools__lab_time",
      "mcp__tools__lab_hash",
      "mcp__tools__lab_directory",
      "mcp__tools__lab_uuid",
      "mcp__tools__lab_codec",
      "mcp__tools__lab_whoami"
    ],
    "deny": []
  }
}
```
