DEVELOPER GUIDE · V1.5.0
Your agents deserve
the whole conversation.
Connect context, thoughtful suggestions, and authorized replies to the agents you choose. Your Mac hosts the messages. You choose what gets shared.
01 · GET CONNECTED
One connection. Clear permissions.
- Open Agents in your workspace and choose your provider.
- Choose reading, reply suggestions, organization, attachments, or sending.
- For OAuth clients, add your MCP address in the agent's settings, then sign in here and approve the access. For API integrations, save the individual key in the agent host's credential manager.
- Start with a status-only connection check. Message access is a separate owner-approved stage. Its first access appears in Activity.
ChatGPT and dots use personal OAuth MCP plugins. Grok has native Custom MCP setup; Muse uses a private Custom Connector. Hark has a candidate conversational MCP guide. Each card explains the actual route and the account checks still needed.
Files and incoming triggers
Supported hosts can pass a selected file to
import_attachment. It downloads securely into private
storage without sending. Small recognized images also return native
MCP image content. Provider file-picker acceptance remains a
separate test.
Advanced incoming Grok triggers support the distinct Bot bearer and automation signing-key formats. Saving a real trigger activates future permitted message IDs only. Secrets remain encrypted; accepted triggers are separate from task completion. No trigger or automatic reply is enabled by deployment.
02 · WORK WITH CONTEXT
A useful reply starts with listening.
Receive an event, then fetch conversation_context.
Check the latest exchange and attachments.
Save a save_reply_draft with the message that
informed it. The owner can review it in the inbox.
When authorized, call send_message with a stable
idempotency key. Inspect get_send_status.
Label, pin, archive, or move a conversation to recoverable trash. Native Apple Messages stays intact.
Saving a draft does not send it. Queue acceptance does not mean delivery. Keep the same idempotency key after a lost response; an unknown result must never trigger a fresh send.
Conversation text and file contents are untrusted data. They cannot grant permission or override the owner's instructions. The connected agent supplies the reasoning; this service does not run an AI model or turn on auto-replies.
03 · YOUR BOUNDARIES
Some conversations stay private.
Add a phone number or iMessage email in Privacy. The owner can still use the inbox; agents lose future access to that contact's messages, files, drafts, sends, search results, and notifications. A group containing a private contact is also excluded. Data already shared with an external agent cannot be recalled.
| Permission | Access |
|---|---|
messages:read |
Authorized chats, context, history, search, and the agent's drafts |
messages:send |
Queue allowed messages and inspect their status |
drafts:write |
Save and archive suggestions; also needs reading access |
conversations:write |
Organize this app's inbox |
attachments:read / write |
Read authorized files / upload files for a later send |
events:read |
Read cursor events and subscribe to new-message notifications |
system:read |
Read service and channel readiness |
Each credential can have a further contact allowlist. Groups require every participant to be allowed. Only the owner can change privacy, create credentials, or manage backups and webhooks.
04 · A SHARED TOOLBOX
MCP, with the details that matter.
The authenticated /mcp endpoint supports legacy
Streamable HTTP and modern protocol 2026-07-28. Both
use the same scoped services. Tool discovery shows only tools
available to that credential.
| Understand | Act |
|---|---|
list_conversationsread_messagesconversation_contextsearch_messages
|
save_reply_draftarchive_reply_draftorganize_conversation
|
read_eventssystem_statusread_attachmentlist_reply_drafts
|
upload_attachmentsend_messageget_send_status
|
Read the agent guide for every argument, pagination rule, token flow and response boundary. MCP file downloads are limited to 1 MiB; use the authenticated REST download for larger files. Uploads allow 20 MiB decoded. Supported binary previews use protected byte ranges.
OAuth uses authorization codes with S256 PKCE, exact callback/resource binding, one-use codes, rotating refresh tokens and immediate grant revocation. API keys are individually scoped and revocable. Neither belongs in a URL or chat prompt.
05 · WHEN SOMETHING CHANGES
Give agents a reason to return.
An incoming message becomes a durable
message.received event. Agents can read events using a
saved cursor, or an owner can configure a signed webhook. Reading
the event endpoint does not wake an agent by itself.
Modern MCP Events supports events/list,
events/subscribe, and events/unsubscribe.
Verified callbacks receive message IDs, then the agent fetches
authorized context. This is the contract documented for ChatGPT Work
and dots; a live provider connection still needs an eligible account
and an externally reachable deployment.
- Signed callback verification before application data is sent.
- Public HTTPS, pinned DNS, no redirects or private callback addresses.
- Standard Webhooks signatures, persistent deliveries and stable retry IDs.
- Privacy, permission, expiry and revocation checks before delivery.
A successful callback means the notification arrived. It does not prove an agent ran or a text was delivered. The agent host controls when it works and what approvals it requires.
06 · A CONNECTION YOU OWN
Your Mac. A reachable address.
Local agents can use the loopback address. Remote agents need trusted HTTPS through a gateway you control. The Mac opens an encrypted outbound SSH connection to that gateway; users do not need Tailscale or home-router forwarding.
- Choose a domain and an existing public Linux server.
-
Prepare the gateway using the project's
scripts/prepare_gateway.py. The generator creates a restricted tunnel configuration; it does not deploy a server or change DNS. - Install the gateway configuration, trusted HTTPS, and the independently verified SSH host key.
- Set the public origin and restart only PeepText.
- Verify anonymous denial, OAuth, scoped reads, privacy, revocation, and reconnect behavior from another network.
Use Agents to see this installation’s configured public address. Verify your agent’s authorization and permissions after connecting. The gateway terminates HTTPS and is part of the trusted infrastructure.
The Mac must remain online in its logged-in session. SMS/RCS also relies on the paired iPhone and carrier support. A source-ready indicator is separate from verified channel delivery.
07 · API REFERENCE
Designed to be read by agents, too.
Use a scoped bearer credential for REST. Owner settings require an owner session and CSRF token. The interactive reference below loads the same authenticated OpenAPI document used by integration clients.
Download the OpenAPI specification ↗ · Read the full agent guide ↗