DMWire Docs
Early access

ChatGPT and other MCP clients

Any MCP client that can call a remote server over streamable HTTP and send a header can use DMWire. ChatGPT cannot do that yet.

ChatGPT: not supported yet

ChatGPT custom connectors (developer mode) connect to remote MCP servers with OAuth sign in or with no authentication. They do not send a fixed API key header. DMWire needs a key on every request, so a ChatGPT connector cannot reach it today. Sign in for DMWire is planned; when it ships, ChatGPT plans that allow custom connectors will work and this page will say so.

What you can do now: use DMWire from Codex, or from Claude, Claude Code, Cursor or OpenClaw.

Which clients work today

ClientWorks todayHow
Claude CodeYes, testedclaude mcp add with a header
Claude desktopYesCustom connector with a request header if your account has it, otherwise the desktop config bridge
claude.ai in the browserOnly with request headersCustom connector, header option is a limited beta
CursorYesmcp.json with headers
Codex (CLI, IDE, app)Yes, config testedcodex mcp add
OpenClawYesMCP server with headers
ChatGPT connectorsNot yetNeeds sign in, planned

Any other MCP client

Give it these settings:

SettingValue
Server URLhttps://mcp.dmwire.ai/mcp
TransportStreamable HTTP (no SSE)
HeaderX-API-Key: <your key> or Authorization: Bearer <your key>

The server refuses a key in the URL. If your client cannot send headers, run the mcp-remote bridge in front of it.

The handshake, run for real

Initialize:

Request
curl \
  -X POST https://mcp.dmwire.ai/mcp \
  -H "X-API-Key: $DMWIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18", "capabilities": {}, "clientInfo": {"name": "my-agent", "version": "1.0"}}}'
Response (HTTP 200, captured 2026-10-17)
{
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "tools": {}
    },
    "serverInfo": {
      "name": "dmwire",
      "title": "DMWire",
      "version": "1.0.0"
    },
    "instructions": "DMWire connects you, the agent, to the user's own WhatsApp and Telegram so you can read and answer their messages. DMWire runs no AI of its own: you are the brain, DMWire is the wire.\n\n1. Start with `list_accounts` to see what is connected.\n2. To connect WhatsApp, call `connect_whatsapp` and give the user the QR code, connect link or pairing code it returns to open on their phone; check `get_whatsapp_status` until it is connected. For Telegram, call `connect_telegram`, then `submit_telegram_code` with the code Telegram sends the user (and `submit_telegram_password` if they use two-step verification).\n3. To receive messages, call `wait_for_messages`. It waits until something arrives, then returns the messages and a cursor: call it again with that cursor to keep listening.\n4. To reply, call `send_message`.\n5. Free tier limits: 1 connected account, 50 sends a day, 10 new contacts a day. A freshly registered WhatsApp number cannot message new contacts during its first days. `get_usage` shows what is left today.\n6. Ask the user before you message anyone, and never send unsolicited messages: answer people who wrote first, or people the user asked you to contact.\n7. Request bodies go in the `body` argument."
  },
  "jsonrpc": "2.0",
  "id": 1
}

Call a tool:

Request
curl \
  -X POST https://mcp.dmwire.ai/mcp \
  -H "X-API-Key: $DMWIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "list_accounts", "arguments": {}}}'
Response (HTTP 200, captured 2026-10-17)
{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "HTTP 200\n{\"accounts\":[]}"
      }
    ],
    "isError": false
  },
  "jsonrpc": "2.0",
  "id": 3
}
Request
curl \
  -X POST https://mcp.dmwire.ai/mcp \
  -H "X-API-Key: $DMWIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "get_usage", "arguments": {}}}'
Response (HTTP 200, captured 2026-10-17)
{
  "result": {
    "content": [
      {
        "type": "text",
        "text": "HTTP 200\n{\"plan\":\"free\",\"status\":\"active\",\"day\":\"2026-10-17\",\"sends\":0,\"sends_cap\":50,\"new_contacts\":0,\"new_contacts_cap\":10,\"accounts_total\":0,\"accounts_connected\":0,\"accounts_cap\":1}"
      }
    ],
    "isError": false
  },
  "jsonrpc": "2.0",
  "id": 3
}

The full tool list is in the MCP tools reference. A tool answer is text that starts with the HTTP status of the call DMWire made for you, followed by the JSON body.

Last checked against the live service on 2026-10-17.