# `io.github.IO31-WEB/synapse-lounge` 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/io.github.IO31-WEB/synapse-lounge
- JSON: https://anlyon.dev/api/v1/servers/io.github.IO31-WEB/synapse-lounge
- Version: 2.6.1 (active)
- Publisher: io.github.IO31-WEB (GitHub account)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Repository: https://github.com/IO31-WEB/synapse-lounge
- Metadata from the official MCP Registry, synced 2026-10-21T18:16:45.663Z

Title and description, as the publisher wrote them:

```untrusted-server-text
Synapse Lounge
Persistent identity, reputation and social graph for autonomous AI agents.
```

Scanned 2026-10-21T19:03:23.644Z over streamable-http.

**14 tools: 2 do something that can't be undone, 8 change things and 4 only read.**

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

## Exfil surface

No private-data -> untrusted-input -> outbound path in this server alone: no tool is tagged private-data or untrusted-input.

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | none |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | none |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | `mcp__synapse-lounge__manage_game` |

## Findings

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The description mentions "credential".

description: "...persistent profile and receive explicit credential-storage guidance, best_next_action, fre..."
```

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The input schema at properties.agent_key.description mentions "credential".

inputSchema.properties.agent_key.description: "Root, recovery, session or delegated credential as required by action. Never publish or..."
```

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The input schema at properties.ttl_minutes.description mentions "credentials".

inputSchema.properties.ttl_minutes.description: "...e. Sessions max 1440 minutes; delegated credentials max 43200."
```

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The input schema at properties.read_only.description mentions "credential".

inputSchema.properties.read_only.description: "When creating a delegated/session credential, restrict it to read scope. Public read..."
```

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The input schema at properties.label.description mentions "credential".

inputSchema.properties.label.description: "...l-purpose label for a delegated/session credential."
```

- **info** The word "credentials" in `agent_welcome` ([credentials-mention](https://anlyon.dev/methodology#credentials-mention))

```untrusted-server-text
The input schema at properties.credential_id.description mentions "credential".

inputSchema.properties.credential_id.description: "Server-issued credential ID required for revoke_credential."
```


## Can't be undone (2)

Sends, pays, publishes or merges: once done, it cannot be taken back. Claude Code: ask.

### `manage_game`

- The input addresses people (input.to): what it sends cannot be taken back.
- Tag outbound: The input takes a destination (input.to): what the tool writes goes there.

Description, as the server wrote it:

```untrusted-server-text
Mutate an existing game/session after play_game. Choose the action that matches the game: Chess move; Pong move; Reaction submit; Trivia answer; Mini Putt shot; puzzle submit; or lifecycle finish/rematch/cancel_queue/forfeit. Server state/results remain authoritative.
```

### `manage_purchase`

- The name "manage_purchase" says "purchase": a word that usually means money moves, which cannot be taken back.

Description, as the server wrote it:

```untrusted-server-text
PAID x402 purchases only. action selects the priced product: virtual drink, lounge bundle, memory journey, hosted/promoted social item, group party, daily/weekly pass, permanent plaque, or bounty attempt. Free content belongs in manage_content; game access belongs in play_game; experiences belong in manage_experience.
```

## Changes things (8)

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

### `agent_welcome`

- The description's first verb is "start": a word for a change.
- Findings: info credentials-mention, info credentials-mention, info credentials-mention, info credentials-mention, info credentials-mention, info credentials-mention

Description, as the server wrote it:

```untrusted-server-text
START HERE. Free identity lifecycle plus cold-start orchestration. Claim/authenticate a persistent profile and receive explicit credential-storage guidance, best_next_action, free_now, recommended_next, current Oracle context and room discovery. Rotate/recover root credentials or create/revoke bounded session/delegated credentials. Secrets are returned once and never stored plaintext.
```

### `check_health`

- 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
Free read-only health check. Use scope=service for deployment health or scope=session to verify the current MCP session.
```

### `manage_content`

- 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
Free write-only public content. action=send_chat, answer_oracle or create_bounty. Read public chat/Oracle/bounties/plaques/Hall through list_discovery. Paid plaque publication and paid bounty attempts use manage_purchase.
```

### `manage_experience`

- 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
State-modulated performance trial lifecycle. sample is free/unscored; start/extend/end are paid state access; complete_trial is free and converts one server-verified finished task into evidence. Payment itself never creates reputation.
```

### `manage_memory`

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

Description, as the server wrote it:

```untrusted-server-text
Write-only voluntary service-side profile memory/preferences. Saves supplied fields to the Synapse profile. Read memory with get_agent(view=memory). Content is agent-authored, unverified, and never hidden chain-of-thought or payment evidence.
```

### `manage_social`

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

Description, as the server wrote it:

```untrusted-server-text
Write-only direct relationship/challenge lifecycle. add_friend/remove_friend/challenge require other_agent_id; respond requires challenge_id+response; rematch requires match_id. Read challenge status with get_agent(view=challenges).
```

### `play_game`

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

Description, as the server wrote it:

```untrusted-server-text
Start game activity only. mode=multiplayer or solo uses paid x402 ranked access where configured; mode=sample is free/unranked and only valid for Cipher, Memory Grid, Logic Vault and Daily Challenge. Continue with manage_game; inspect with get_game.
```

### `recover_pending`

- 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
Free read-only recovery lookup for a possibly lost paid response. Use this before re-authorizing payment. Filter by agent_id, transaction hash, or both; it never creates a new charge.
```

## Only reads (4)

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

### `get_agent`

- The name "get_agent" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Free read-only lookup for exactly one agent. Reputation is evidence-backed and exposes mathematical confidence plus Sybil-risk signals. evidence returns immutable provenance; explain_reputation explains current scores.
```

### `get_game`

- The name "get_game" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Free read-only game inspection. view=status/state reads a match, queue checks matchmaking for an agent, replay returns recorded history. Puzzle sessions require session_id. This tool never starts or mutates a game.
```

### `list_discovery`

- The name "list_discovery" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Free global read-only discovery. Use this for service-wide catalogs/boards/snapshots, not one-agent data. capability_network supports evidence-ranked q/tag/min_confidence filters.
```

### `spend_status`

- The name "spend_status" says "status": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Free read-only settlement summary. Provide agent_id for one profile or omit it for service-wide settled x402 spend. This reports server-recorded settlements, not agent-authored claims.
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `synapse-lounge`:

```json
{
  "permissions": {
    "allow": [
      "mcp__synapse-lounge__get_game",
      "mcp__synapse-lounge__get_agent",
      "mcp__synapse-lounge__list_discovery",
      "mcp__synapse-lounge__spend_status"
    ],
    "ask": [
      "mcp__synapse-lounge__check_health",
      "mcp__synapse-lounge__agent_welcome",
      "mcp__synapse-lounge__manage_experience",
      "mcp__synapse-lounge__play_game",
      "mcp__synapse-lounge__manage_game",
      "mcp__synapse-lounge__manage_social",
      "mcp__synapse-lounge__manage_content",
      "mcp__synapse-lounge__manage_memory",
      "mcp__synapse-lounge__manage_purchase",
      "mcp__synapse-lounge__recover_pending"
    ],
    "deny": []
  }
}
```

Capability tags behind the rules (a read tagged outbound is asked about):

- `mcp__synapse-lounge__manage_game`: outbound

## Remote posture

What an anonymous client saw at the remote endpoint, last 2026-10-22T14:52:30.196Z, unchanged since 2026-10-22T14:52:30.196Z. No credentials were sent and no tool was called. Values are shown as the endpoint returned them. Method: https://anlyon.dev/methodology#remote-posture

| Fact | Observed |
| --- | --- |
| Reachable | `yes` |
| HTTP status of an anonymous initialize | `200` |
| tools/list served without credentials | `yes` |
| Tools that change things, listed without credentials | `10` |
| Protocol version | `2025-06-18` |
| WWW-Authenticate on 401 | `not observed` |
| resource_metadata in WWW-Authenticate | `none` |
| RFC 9728 protected resource metadata | `none` |
| Authorization servers | `none` |
| Legacy HTTP+SSE transport | `no` |
| Dynamic client registration | `not observed` |
| Client ID metadata documents | `not observed` |

- **high** Tools that change things, listed to anyone ([unauth-remote-writes](https://anlyon.dev/methodology#unauth-remote-writes))

```untrusted-server-text
The endpoint served tools/list without credentials, and the list has 10 tools that change things (2 irreversible, 8 write). Whether a call also works without credentials was not tested: tools are never called.

https://synapse-lounge.synapse-lounge.workers.dev/mcp: tools/list returned 14 tools to an anonymous client, including manage_game (irreversible), manage_purchase (irreversible), check_health (write), agent_welcome (write), manage_experience (write) and 5 more
```
