MCP App Store
by KeenEthics
Communication
TimelinesAI icon

TimelinesAI

by TimelinesAI

Overview

Connect your TimelinesAI WhatsApp inbox to ChatGPT. List chats, read history, send messages, react, label, assign teammates — all as you, in production. TimelinesAI is a multi-number WhatsApp inbox for teams. This app turns ChatGPT into a remote control for that inbox: browse chats with filters, read context windows around any message, send messages and threaded replies, react with emojis, manage labels, and assign chats to teammates. Every action runs under your TimelinesAI permissions and consumes the same quota as the UI. No sandbox — recipients see real messages from your number. Write actions require your confirmation in ChatGPT before they run.

Tools

chat_assign

ChatGPT
Assign the chat via `responsible (teammate email; Public API PATCH /chats/{id}). Use responsible_email from workspace_team. Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

chat_close

ChatGPT
Set `closed: true for the chat (Public API PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

chat_details

ChatGPT
Fetch a single chat (raw GET /chats/{chat_id}). Use this to inspect labels, assignment, closed, and related fields after the six chat mutation tools (close/open/assign/unassign/set_label/remove_label).

chat_history

ChatGPT
List messages in a chat with filters and UID pagination.

chat_open

ChatGPT
Set `closed: false to reopen (Public API PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

chat_remove_label

ChatGPT
Remove one label (POST replaces the label list). Graceful no-op success if the label is not on the chat. Returns compact JSON `{\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

chat_send_message

ChatGPT
Send a message in an existing chat via POST /chats/{chat_id}/messages. Provide chat_id plus at least one of text or file_uid: - Text-only: set text (file_uid omitted). - Attachment only: set file_uid (TimelinesAI file UID); text may be omitted. - Text plus attachment: set both text and file_uid. - Reply threading: optionally set reply_to (message UID) like message_reply; you can still use message_reply instead if clearer. Strict input: only chat_id, text, file_uid, and reply_to are accepted—unknown field names raise a validation error so mistaken LLM outputs never hit the API. Empty requests (missing both text and file_uid) fail validation before any quota use. Messaging quota: the Public API charges one quota unit per successful plain-text send and typically two units when sending with file_uid (attachments).

chat_set_label

ChatGPT
Ensure a label is present (PUT /chats/{id}/labels adds label). Idempotent: if the chat already includes this label, returns success without calling PUT. Returns compact JSON `{\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

chat_unassign

ChatGPT
Clear assignee using empty `responsible (PATCH /chats/{id}). Returns compact JSON {\"status\":\"ok\"} on success (no data field). On failure: {\"status\":\"error\",\"data\":{\"message\":\"...\"}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a chat, call chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*`, etc.).

list_chats

ChatGPT
List or search TimelinesAI chats using optional filters.

message_details

ChatGPT
Fetch full details for one message.

message_react

ChatGPT
Set or clear an emoji reaction on a message.

message_reply

ChatGPT
Reply to a specific message in an existing chat.

waba_accounts

ChatGPT
WABA numbers this login may send from. Use id as waba_account_id. QR numbers: workspace_whatsapp_accounts.

waba_chat_assign

ChatGPT
Assign the WABA chat via `responsible (teammate email; PATCH /waba/chats/{id}); affects that chat only. Use responsible_email from workspace_team. Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_chat_close

ChatGPT
Set `closed: true for the WABA chat (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_chat_details

ChatGPT
One WABA chat: window, assignment, labels, waba_account_id.

waba_chat_history

ChatGPT
Messages in a WABA chat, newest first. One message: waba_message_details.

waba_chat_open

ChatGPT
Set `closed: false to reopen the WABA chat (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_chat_remove_label

ChatGPT
Remove one label from the WABA chat: reads current labels and POSTs the remaining list (WABA POST replaces), so other labels stay. Graceful no-op success if the label is not on the chat. Returns compact JSON `{"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_chat_send_message

ChatGPT
Free text in an existing WABA chat (chat_id). Only when service_window_is_open is true. New chat: waba_start_chat. Phone only: waba_list_chats first.

waba_chat_send_template

ChatGPT
Approved template in an existing WABA chat (chat_id). Window false/null. New chat: waba_start_chat. Meta charge.

waba_chat_set_label

ChatGPT
Add one label to the WABA chat (PUT /waba/chats/{id}/labels adds, keeping existing labels). Returns compact JSON `{"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_chat_unassign

ChatGPT
Clear the WABA chat assignee using empty `responsible (PATCH /waba/chats/{id}). Returns compact JSON {"status":"ok"} on success (no data field). On failure: {"status":"error","data":{"message":"..."}}. Only the documented parameters are accepted; unknown keys raise a validation error. After any mutation on a WABA chat, call waba_chat_details with the same chat_id to read authoritative state (labels, closed, responsible_*, service_window_*`, etc.).

waba_list_chats

ChatGPT
WABA chats this login can see. Read service_window_is_open before send. QR chats: list_chats.

waba_message_details

ChatGPT
One WABA message by UID. Failed → failure_reason.

waba_message_react

ChatGPT
Set or clear an emoji on a WABA message. Empty clears. Confirm later with waba_message_details.

waba_start_chat

ChatGPT
Start a new WABA chat with phone via an approved template. Existing chat: waba_chat_send_*. waba_account_id must be in waba_accounts and the template's accounts[]. Meta charge.

waba_template_details

ChatGPT
One template: components, status, accounts[] (valid waba_account_id values). Required before a template send. For waba_start_chat, waba_account_id must be in both accounts[] and waba_accounts.

waba_templates

ChatGPT
WABA templates this login can reach (50/page). Send uses name + language after waba_template_details. Only APPROVED is sendable.

whatsapp_account_send_message

ChatGPT
Send plain text by phone number using a specified WhatsApp account.

workspace_quotas

ChatGPT
Return current workspace quota usage.

workspace_team

ChatGPT
List teammates in the current workspace.

workspace_whatsapp_accounts

ChatGPT
List WhatsApp accounts in the current workspace.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

34

Tools

2

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily