Read and verify freeq conversations: channels, history, search, signatures, pins.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
IRC server and client with AT Protocol (Bluesky) identity authentication, end-to-end encrypted channels, iroh QUIC transport, peer-to-peer DMs, and federated server-to-server clustering.
Users authenticate with their Bluesky identity via a custom SASL mechanism
(ATPROTO-CHALLENGE). Standard IRC clients connect as guests. Authenticated
users get their DID bound to their connection β visible via WHOIS, enforced
for nick ownership, and usable for DID-based bans, invites, and persistent ops.
Try it now: irc.freeq.at
freeq is meant to be used by software as well as people, so every surface an agent looks for exists and cross-links the others:
spec/openapi.yaml; a drift test fails the
build if the router and the spec disagree).@freeq/mcp) gives any MCP client tools
to read, search, verify and take part in conversations. Not on npm yet: build
it (cd freeq-mcp && npm install && npm run build) and point your client at
node <repo>/freeq-mcp/dist/index.js.skills/: freeq (talking to
other people's agents), freeq-api (REST),
freeq-bots (building one).Attribution is the point: every message carries a ULID msgid and a signature,
and GET /api/v1/verify/{msgid} distinguishes a message signed by its author's
key from one merely relayed by the server.
The web client at irc.freeq.at provides:
https://irc.freeq.at/join/#channel| Channel | Policy | What it demonstrates |
|---|---|---|
#demo-follow | Must follow @chadfowler.com on Bluesky | Social graph verification (zero OAuth) |
#demo-github | Open join, freeq-irc/freeq collaborators get auto-op | Layered credentials + role escalation |
#demo-moderation | Open join, moderators appointed via credentials | Credential-based moderation pipeline |
The SDK exposes a (ClientHandle, Receiver<Event>) pattern β any UI or bot
can consume events and send commands.
All transports feed into the same handle_generic() handler β the IRC
protocol is transport-agnostic. Each transport is zero-cost when not enabled.
Generate a self-signed cert for local development:
Iroh auto-discovery: When connecting to a server that has --iroh
enabled, the TUI probes CAP LS for the iroh=<endpoint-id> capability
and auto-upgrades to iroh QUIC transport. No manual endpoint ID needed.
OAuth sessions are cached to ~/.config/freeq-tui/<handle>.session.json
so you don't need to re-authenticate on every launch.
Any IRC client works as a guest β irssi, WeeChat, HexChat, LimeChat, etc.
Connect to 127.0.0.1:6667 (plain) or 127.0.0.1:6697 (TLS). No special
configuration needed.
When --web-addr is set, the server accepts WebSocket connections at
ws://<addr>/irc. A test HTML client is included at freeq-server/test-client.html.
The server implements a custom SASL mechanism for AT Protocol identity:
CAP sasl, then AUTHENTICATE ATPROTO-CHALLENGEbase64url(json { session_id, nonce, timestamp })method: "crypto"): Signs challenge bytes with a
private key listed in the DID documentmethod: "pds-session"): Sends an app-password JWT;
server verifies against the PDSmethod: "pds-oauth"): Sends a DPoP-bound access token
with proof; server verifies against the PDS903 (success) or 904 (failure)CAP END, registration completesStandard IRC on port 6667 (plain) and 6697 (TLS). TLS auto-detected by port in the client. Always available.
Enabled with --web-addr. Accepts WebSocket IRC at /irc. Uses the same
IRC wire protocol β WebSocket is a transport, not a new protocol. Includes
a read-only REST API at /api/v1/ (channels, members, topics, messages).
Enabled with --iroh. Provides NAT-traversing encrypted QUIC connections
via iroh. The server generates a persistent secret
key (iroh-key.secret) on first run β endpoint ID is stable across restarts.
The server advertises its iroh endpoint ID in CAP LS:
Clients auto-discover and upgrade to iroh when available.
Client-side channel encryption using AES-256-GCM with HKDF-SHA256 key derivation from a shared passphrase. The server relays ciphertext unchanged.
Wire format: ENC1:<nonce-b64>:<ciphertext-b64> β version-tagged, uses the
message body for robustness. All channel members must use the same passphrase.
Direct encrypted messaging between clients via iroh QUIC, bypassing the server entirely.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/freeq)<a href="https://allmcps.com/mcp/freeq"><img src="https://allmcps.com/api/badge/freeq?style=directory" alt="Freeq on AllMCPs" /></a>