Connections and privacy
Blue Text Relay is an MCP server, with a REST mirror, running on your Mac. How your agent reaches it is up to you. Each option below is one click in the app or one imx command, and each has a different privacy trade-off. Your access keys, thread scopes, history floors and caps apply the same way on all of them.
How agents talk to it
Endpoint: <base URL from the table below>/mcp
Transport: MCP Streamable HTTP, JSON responses
Header: Authorization: Bearer <access key>
Tools: list_threads · get_messages · get_transcript · search_messages · get_new_messages
get_attachment (only for keys with attachment files on)
REST: /api/threads · /api/messages · /api/search · /api/new · /api/attachments/<id>
(/health needs no key)
Claude Code: claude mcp add --transport http imessage <URL>/mcp --header "Authorization: Bearer <key>". Claude Desktop, Cursor and other clients take the same URL and header. Settings → Access → a key shows ready-to-paste snippets for each.
Pick a connection
| Connection | Who can reach it | Who can read traffic in transit | URL | Needs |
|---|---|---|---|---|
| This Mac only | Apps on this Mac | Nobody; it never leaves the Mac | http://localhost:8766 | Nothing |
| Tailscale (recommended) | Your own devices | Only you: end-to-end encrypted | Stable, on your tailnet | Tailscale on both machines |
| Tailscale Funnel | Anyone with the URL and a key | Only you: TLS ends on your Mac | Stable, public | A Tailscale account |
| Cloudflare Quick Tunnel | Anyone with the URL and a key | Cloudflare could | Changes every start | Nothing |
| Cloudflare Tunnel | Anyone with the URL and a key | Cloudflare could | Stable, your domain | A domain on Cloudflare |
| ngrok | Anyone with the URL and a key | ngrok could | Stable (free dev domain) | A free ngrok account |
Rule of thumb: if the agent runs on a machine you control, use Tailscale. If it runs in someone's cloud and needs a public URL, Tailscale Funnel is the most private public option; Cloudflare and ngrok are there if you already use them.
What protects you on every connection
- Access keys: one per agent, stored hashed, shown once. No key, no data.
- Scope and limits per key: threads, history floor, daily request cap, per-call message cap, expiry, instant revoke.
- Lockouts and rate limits: 10 failed attempts lock a source out for 15 minutes; 20 requests per second overall.
- Credential redaction: API keys, tokens and passwords in messages become
[redacted: …]before they leave the Mac. On by default. - Read-only: no send tool; the database is opened read-only.
- Audit log: who asked for what and when, never message text.
On a public connection, the URL is reachable by anyone on the internet; these protections are what stand between it and your messages. Keep keys secret, give each agent its own, and revoke ones you stop using.
This Mac only
Setup: Settings → Remote → This Mac only, or imx remote localOnly. URL: http://localhost:8766/mcp.
Privacy: traffic never leaves the Mac. The server listens only on the loopback address (and your Tailscale address, if you use Tailscale).
Best for: Claude Code, Claude Desktop or Cursor on the same Mac.
Tailscale
A private network between your own devices, built on WireGuard.
Setup: Settings → Remote → Tailscale, or imx remote tailscale. The app installs Tailscale if it's missing and walks you through signing in. Install Tailscale on the agent's machine too, signed in to the same tailnet. URL: http://<mac-name>.<tailnet>.ts.net:8766/mcp.
Privacy: traffic is end-to-end encrypted between your devices. Tailscale says it "does not (and cannot) inspect your traffic"; its coordination servers only exchange public keys, and relays only ever see encrypted data. Tailscale does see metadata: which of your devices connect to which, their public IP addresses, device details and the email you sign in with.
Limits: both ends need Tailscale, so cloud-hosted agents can't use it. Use Funnel for those.
Best for: agents on your other computers or servers. Recommended.
Official docs: What is Tailscale · Tailscale security
Tailscale Funnel
A public HTTPS address on your Tailscale name, for agents that can't join your tailnet.
Setup: Settings → Remote → Tailscale Funnel, or imx remote funnel. Needs Tailscale 1.38.3 or later with MagicDNS and HTTPS certificates on your tailnet, and permission to use Funnel in your tailnet policy; Tailscale's CLI sets these up when you first turn Funnel on. Port sharing like this works with the Tailscale Mac app. URL: https://<mac-name>.<tailnet>.ts.net/mcp.
Privacy: TLS ends on your Mac. Tailscale's Funnel relays pass the encrypted connection through and, in Tailscale's words, "do not decrypt the traffic", so Tailscale can't read it. But the address is public: anyone on the internet can reach it, and only your keys and limits protect it. Tailscale still sees connection metadata.
Limits: Funnel is in beta, has bandwidth limits you can't configure, and only uses ports 443, 8443 and 10000.
Best for: cloud-hosted agents that need a public URL. The most private public option.
Official docs: Tailscale Funnel
Cloudflare Quick Tunnel
An instant public URL with no account, for trying things out.
Setup: Settings → Remote → Cloudflare Quick Tunnel, or imx remote cloudflareQuick. The app installs cloudflared if needed and shows the URL: https://<random>.trycloudflare.com/mcp.
Privacy: TLS ends at Cloudflare's edge, so Cloudflare could technically see traffic in transit. The address is public; only your keys and limits protect it.
Limits: the URL changes every time the tunnel starts and stops working when it stops, so you re-enter it in your agent after each restart. Cloudflare gives no uptime guarantee, allows up to 200 requests in flight, and doesn't support Server-Sent Events (Blue Text Relay answers with plain JSON, so that doesn't affect it). Cloudflare recommends a named tunnel for anything lasting.
Best for: quick tests.
Official docs: Quick Tunnels
Cloudflare Tunnel on your domain
A stable public hostname on a domain you already run on Cloudflare.
Setup: Settings → Remote → Cloudflare Tunnel, or imx remote cloudflareNamed mcp.example.com. The app signs in to Cloudflare, creates a tunnel, points the hostname at it and starts it. URL: https://mcp.example.com/mcp.
Privacy: TLS ends at Cloudflare's edge, so Cloudflare could technically see traffic in transit. The hostname is public; only your keys and limits protect it. Cloudflare Access can add its own login in front, but automated agents would then need an Access service token.
Best for: people who already use Cloudflare and want a URL on their own domain.
Official docs: Cloudflare Tunnel
ngrok
A stable public URL without owning a domain.
Setup: make a free account at ngrok.com and copy your authtoken, then Settings → Remote → ngrok (paste it once), or imx remote ngrok <AUTHTOKEN>. URL: your assigned dev domain, like https://<name>.ngrok-free.app/mcp, which stays the same across restarts.
Privacy: ngrok's docs say HTTPS connections "are terminated at ngrok's cloud service", so ngrok could technically see traffic in transit. ngrok's Traffic Inspector can record request details, so check its settings in your ngrok dashboard. The address is public; only your keys and limits protect it.
Limits: the free plan includes 1 GB of data out and 20,000 HTTP requests a month. ngrok's browser warning page only appears for web browsers, not for agents and API clients.
Best for: a fixed public URL when you don't want Tailscale or a domain.
Official docs: HTTP endpoints · Free plan limits
Want another connection?
We add connectors people actually use. Tell us which one at [email protected].
Provider details checked against their documentation on October 31, 2026; plans and limits change, so their docs are the final word. Tailscale, Cloudflare and ngrok are trademarks of their respective owners. Blue Text Relay is not affiliated with or endorsed by them.