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.

  1. Open Agents in your workspace and choose your provider.
  2. Choose reading, reply suggestions, organization, attachments, or sending.
  3. 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.
  4. 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.

This installation restricts outgoing tests to your configured test destination. A sending permission does not remove that restriction.

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.

Read the complete provider and event contracts ↗

02 · WORK WITH CONTEXT

A useful reply starts with listening.

Read

Receive an event, then fetch conversation_context. Check the latest exchange and attachments.

Suggest

Save a save_reply_draft with the message that informed it. The owner can review it in the inbox.

Respond

When authorized, call send_message with a stable idempotency key. Inspect get_send_status.

Organize

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_conversations
read_messages
conversation_context
search_messages
save_reply_draft
archive_reply_draft
organize_conversation
read_events
system_status
read_attachment
list_reply_drafts
upload_attachment
send_message
get_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.

  1. Choose a domain and an existing public Linux server.
  2. 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.
  3. Install the gateway configuration, trusted HTTPS, and the independently verified SSH host key.
  4. Set the public origin and restart only PeepText.
  5. 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.

Loading the API specification…

Download the OpenAPI specification ↗ · Read the full agent guide ↗