MCP App Store
by KeenEthics
Openline icon

Openline

By Scalar Field

Get New App Alerts

Overview

Openline is a communication plugin. A signed-in chat sends and reads email, places and reviews phone calls, and sends and reads SMS from an inbox and a US phone number that Openline provides. It uses only the inbox and number on the account you connect. It does not read another person's inbox, send bulk unsolicited messages, or take a sign-in code in chat. Sign-in happens on Openline's page.

Tools

add_my_channel

ChatGPT
Save the human's own mobile number or email so texts or emails from that address to their Openline number are owner instructions. Phone: add_my_channel(kind='phone', address='+1...') or address as a list. Email: the sign-in email is already saved. add_my_channel(kind='email', address='ada@gmail.com') or address as a list adds other addresses. Each address is saved immediately. There is no confirmation code. Do not pass a token.

approve_agent_run

ChatGPT
Execute the drafted actions of a dry-run agent run (sends, callbacks) exactly as drafted. Do not pass a token.

auth_status

ChatGPT
Check whether this MCP client is signed in to Openline. Do not pass a token or OTP. If not signed in, Openline returns HTTP 401 so the host starts OAuth. Do not ask for a code in chat.

call_phone

ChatGPT
Place an outbound call from the user's Openline number; a voice agent speaks on the call. The other person just answers — they do not verify anything. Required: to (E.164 number or a saved contact name), goal (what to accomplish). voice is optional (quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder, marin, cedar); omit it and gleam is used. background_noise is optional (off, office, cafe, street): a quiet bed under the agent. Omit it and the call stays quiet. When persona is omitted, the call uses the person who matches that voice. Pass everything the user told you about the call so the prompt is complete: persona (object: name, company, role, personality), context (facts, offers, or background the agent may use), style (tone, pacing, persistence, e.g. 'friendly, push hard, do not give up'), constraints (things never to say or do), next_step (what to steer toward, e.g. book a test drive), language (if not English). outcome_schema: what structured data you need back, either a preset name (default, booking, lead_qualification, message_taken, reminder, support_case, quote, survey, screening) or an object of field -> description; the agent collects these and get_call returns them under 'outcome'. target_person (who to ask for if someone else answers), privacy (what never to disclose to third parties), disclose_ai (if_asked | always | never_volunteer), on_drop (redial_once | followup | none), on_complete (list: email_summary_to_user, sms_recap_to_peer, notify_user, agent_followup - the reply agent sends the agreed recap/next step by text or email after a real conversation), on_no_answer (list: sms - text them once a day from the dialling number when the call is not answered/busy/voicemail/failed; no_answer_text overrides the default wording), available_slots (user's free times), callee_timezone (IANA), reference_call_id + include_transcript (memory | excerpt | full) to continue an earlier call. Omitting reference_call_id starts a new call: the agent still knows earlier calls with this number and does not open as a follow-up. Optional: polish (true = an LLM tightens the generated prompt, adds ~2 s), wait (true = block until the call ends). Do not pass a token.

cancel_recurring_outreach

ChatGPT
Cancel a recurring outreach chain. It will not contact the person again. Do not pass a token.

cancel_scheduled_call

ChatGPT
Cancel a pending scheduled call by scheduled_call_id. Do not pass a token.

cancel_scheduled_message

ChatGPT
Cancel a scheduled SMS or email that has not run. schedule_id is the id returned when it was booked. Do not pass a token.

connect

ChatGPT
Start or confirm Openline sign-in. Do not pass email, OTP, or token. If not signed in, Openline returns HTTP 401 so the MCP host opens the OAuth redirect. The human signs in on Openline's page. If already signed in, returns the session email.

disconnect_email

ChatGPT
Disconnect and disable a provisioned inbox. Argument: account_id from list_email_accounts. Do not pass a token.

disconnect_phone

ChatGPT
Release the user's Openline phone number. Call history is kept. Optional: account_id from get_phone_number. Do not pass a token.

get_agent_run

ChatGPT
One agent run with its full step trace (model turns, tool calls and results, drafts). Do not pass a token.

get_call

ChatGPT
Read one call: status, voicemail text, contact snapshot, and full transcript. While status is queued, ringing, or in_progress, turns is empty and note says the transcript will be available after the call ends. Argument: call_id from list_calls. Do not pass a token.

get_contact

ChatGPT
Look up a customer by contact_id, phone_number, email, or name. Returns identities (all phones/emails), tags, consent flags (do_not_call/do_not_text/do_not_email), details, and a memory summary. Do not pass a token.

get_credits

ChatGPT
Credit balance for this billing cycle (calendar month, UTC): allowance, top-ups, spent, balance, resets_at, and spend by kind (call minutes, GPT-Live minutes, SMS segments, emails, LLM tokens, rentals) with cost and credits. 1 credit = 1 US cent. When a tool returns insufficient_credits, tell the human the balance and reset date; do not retry. Optional cycle 'YYYY-MM'. Do not pass a token.

get_customer_history

ChatGPT
Everything Openline knows about one customer, token-budgeted, for personalising outreach: rolling memory (summary, facts, promises, open items, sentiment trend), a timeline of recent calls/texts/emails with summaries and outcomes, consent flags, and last_contacted_at. Identify by contact_id, email, or phone. budget_tokens (default 1500) trims oldest history first; include limits sections (memory, calls, texts, emails, consent). Do not pass a token.

get_email

ChatGPT
Read the full body of one email plus thread_summary (how many earlier messages with this person, when) and a reply hint (account_id, reply_to_message_id, to, subject). Before replying, call get_email_thread so you have the whole exchange, then send_email with the reply hint. Argument: message_id from list_emails. Do not pass a token.

get_email_thread

ChatGPT
The whole conversation with one customer before you reply: every email (bodies with quoted history stripped), text, call summary, and agent reply, oldest first. Target by message_id (from list_emails/get_email), thread_id, contact_id, or contact_email. Returns items (structured, with UTC timestamps), turns (role user = the customer, each starting with <timestamp>...</timestamp>; role assistant = what was sent on the user's behalf) ready to drop into your context, now (current UTC time), and reply (account_id, reply_to_message_id, to, subject) to pass to send_email so the answer leaves from the inbox that received it and threads correctly. Do not pass a token.

get_inbound_policy

ChatGPT
Effective inbound policy for one endpoint (account_id) or for every endpoint when omitted, plus the defaults. Do not pass a token.

get_message

ChatGPT
Read one SMS: body, status, and peer number. Argument: message_id from list_messages. Do not pass a token.

get_phone_number

ChatGPT
Return the signed-in user's Openline phone number. If none exists yet, one is created automatically (US local DID). Anyone can call this number; the agent answers. Do not pass a token.

get_recurring_outreach

ChatGPT
One outreach chain: its wake-ups, the agent runs they started, and the calls tied to it. Do not pass a token.

import_contacts

ChatGPT
Bulk-import customers. rows: list of objects with any of name, phone, email, tags (list or comma string), notes, plus free-form fields (company, role, ...). Rows are merged into existing contacts by phone or email identity; a person known by both becomes one contact. Max 2000 rows per call. Returns imported/merged/skipped counts and tag totals. Do not pass a token.

list_agent_runs

ChatGPT
What the reply agent did on the user's behalf: runs with trigger, status (queued|running|done|escalated|failed|dry_run), and summary. Filter by contact_id, thread_id, status. Do not pass a token.

list_calls

ChatGPT
List recent calls for the signed-in user (inbound and outbound). Optional: limit (max 25), direction (inbound|outbound), status. Do not pass a token.

list_contacts

ChatGPT
List the user's customers/contacts, newest activity first, with keyset pagination. Filters: tags (list or comma string; all must match), has_email, has_phone, updated_since (ISO). include_memory=true adds a one-line memory summary and last_contacted_at per contact. Pass the returned next_cursor to get the next page. limit up to 200. Do not pass a token.

list_credit_ledger

ChatGPT
Itemised credit charges for a cycle, newest first (kind, reference, units, cost, credits). Optional cycle, kind, limit. Do not pass a token.

list_email_accounts

ChatGPT
List Openline inboxes for the signed-in user. Returns account_id, email address, provider ('openline'), and status. An inbox is created automatically on first send_email or list_emails. Do not pass a token.

list_emails

ChatGPT
Read recent messages from the user's Openline inbox. If none exists yet, one is created automatically. Optional: account_id, limit (max 25), unread_only, query (email address or free text). Pass contact_id (or contact_email) to get the cached conversation with one customer instead, both directions, newest first; optional since (ISO). Do not pass a token.

list_followups

ChatGPT
Things the voice agent promised, was asked for, or wants the user to know: callbacks, info to send, status checks, reminders. Optional: status (pending|done|scheduled|failed|cancelled), call_id, limit. Do not pass a token.

list_messages

ChatGPT
List recent SMS messages for the signed-in user (inbound and outbound). Optional: limit (max 25), direction (inbound|outbound), peer (E.164). Do not pass a token.

list_my_channels

ChatGPT
Show the Openline numbers/addresses assigned to the user and their verified personal channels. Do not pass a token.

list_recurring_outreach

ChatGPT
List recurring outreach chains for this account. Optional status: active, paused, completed, abandoned, expired, cancelled. Do not pass a token.

list_scheduled_calls

ChatGPT
List upcoming (pending) scheduled calls, or pass status=done|cancelled|missed|failed for history. Do not pass a token.

list_scheduled_messages

ChatGPT
List this user's scheduled SMS and email. Optional kind: sms or email. Do not pass a token.

logout

ChatGPT
Sign this MCP client out of Openline. Uses the host Bearer token. Do not pass a token. The human must call connect again (OAuth) to sign back in.

mark_do_not_contact

ChatGPT
Record that a customer asked not to be contacted again. Identify by contact_id, phone, or email; channels is a subset of calls, texts, emails (default all); quote their words. Future sends on those channels are refused. Do not pass a token.

pause_recurring_outreach

ChatGPT
Pause a recurring outreach chain. Nothing is sent until it is resumed. Do not pass a token.

pause_thread

ChatGPT
The user takes over a customer conversation: no agent replies or automatic texts for this contact until until ('in 2 days', 'tomorrow 9am', ISO; default 7 days). Inbound messages still notify the user. Do not pass a token.

remove_contact

ChatGPT
Delete one saved customer. Pass contact_id, phone_number (E.164), and/or email; every identifier you pass must belong to the same contact. Their calls, texts, emails, scheduled calls, and follow-ups stay, but are no longer linked to a contact. Do not pass a token.

remove_my_channel

ChatGPT
Remove a verified personal phone or email so texts or mail from it are no longer owner commands. One address: kind plus address. Several of the same kind: address as a list. All phones or all emails: kind and all=true. Every personal channel: all=true. Does not disconnect an Openline number or inbox. Do not pass a token.

resume_recurring_outreach

ChatGPT
Resume a paused outreach chain and schedule the next wake-up. Do not pass a token.

resume_thread

ChatGPT
Hand a paused customer conversation back to the endpoint policy. Do not pass a token.

run_thread_agent

ChatGPT
Have Openline's reply agent act on one customer conversation under your instruction, e.g. 'answer their question about delivery and offer Thursday', using the same history, persona, consent, and tools it uses for automatic replies. Target by contact_id or thread_id. allowed_actions narrows what it may do (reply_same_channel, schedule_callback, mark_do_not_contact, notify_user, search, call_phone, email_new_address, send_sms_other_number, save_contact, remove_contact, schedule_message); default is the endpoint policy. dry_run=true drafts sends without executing; approve_agent_run executes them. Returns the run with its trace. Do not pass a token.

save_contact

ChatGPT
Save or update a customer. Pass phone_number (E.164) and/or email; optional name, tags, and details (JSON object: company, role, relationship, language, timezone, notes). Merges into an existing contact that shares the phone or email. Do not pass a token.

schedule_call

ChatGPT
Schedule an outbound call for later, e.g. 'call them back next month about the EQ pricing'. Arguments: to, run_at (ISO-8601 with offset, or 'in 2 hours', 'tomorrow 3pm', 'next month'), goal, plus any call_phone brief fields (persona, voice, context, style, outcome_schema, ...). voice is optional (quartz, ripple, vesper, willow, stone, gleam, meridian, bossa, tempo, beacon, delta, cinder, marin, cedar); omit it and gleam is used. background_noise is optional (off, office, cafe, street): a quiet bed under the agent. Omit it and the call stays quiet. When persona is omitted, the booked call uses the person who matches that voice. reference_call_id makes this a follow-up to that earlier call (summary, promises, key quotes); omit it to start a new call that still knows earlier calls with this number and does not open as a follow-up. include_transcript memory|excerpt|full controls how much of the referenced call is included. callee_timezone (IANA) keeps the call inside the callee's 8am-9pm window. max_attempts > 1 retries on no answer. Do not pass a token.

schedule_email

ChatGPT
Schedule one email for later. Arguments: to, subject, body, run_at (ISO-8601 with offset, or 'in 2 hours', 'tomorrow 3pm'). Optional: contact_id, account_id, callee_timezone (IANA). Books a one-shot workflow schedule; the email is sent at that time. Do not pass a token.

schedule_sms

ChatGPT
Schedule one SMS for later. Arguments: to (E.164 or a saved contact name), body, run_at (ISO-8601 with offset, or 'in 2 hours', 'tomorrow 3pm', 'next month'). Optional: contact_id, from_account_id, callee_timezone (IANA). Books a one-shot workflow schedule; the text is sent at that time. A time inside quiet hours moves to when they end. Do not pass a token.

search_conversations

ChatGPT
Full-text search across past call transcripts, call summaries, SMS, and emails. Arguments: query; optional contact (E.164 or saved name) to scope to one person, since (ISO date), channel (call_turn|call_summary|sms|email), limit. Returns matching lines with surrounding context. Do not pass a token.

send_email

ChatGPT
Send an email from the user's Openline inbox. If none exists yet, one is created automatically. Arguments: to, subject, body (to may be empty when contact_id is given). Optional: account_id (if multiple inboxes), reply_to_message_id, contact_id (links the message to that customer's history and drives consent), idempotency_key (repeat sends with the same key return the first message instead of sending again; use e.g. '<campaign>:<contact_id>' when looping over customers), unsubscribe (default true: adds an unsubscribe footer + List-Unsubscribe header; set false for one-off transactional replies). The first successful send may include tell_the_user: explain that to the user (verified personal emails, what they are, and that they can name one or more addresses to verify with no code). Errors: do_not_email (customer opted out), email_invalid (bounced), rate_limited with retry_after_sec. Do not pass a token.

send_emails

ChatGPT
Send several emails in one call; each item is {to?, contact_id?, subject, body, idempotency_key?, unsubscribe?}. Same consent, caps, and idempotency rules as send_email, applied per item; returns per-item results in order (ok or error with retry_after_sec). Stops early when rate_limited and reports the remaining items as skipped so you can retry them. No composition happens here; write each message yourself. Max 100 items. The first successful batch may include tell_the_user once on the result: explain that to the user. Do not pass a token.

send_sms

ChatGPT
Send an SMS from one of the user's Openline numbers. Arguments: to (E.164 number or a saved contact name; may be empty when contact_id is given), body. Optional: contact_id, from_account_id (which of the user's numbers sends; default primary), idempotency_key (repeat sends with the same key are not re-sent). Errors: do_not_text, rate_limited / quiet_hours with retry_after_sec. Do not pass a token.

send_sms_batch

ChatGPT
Send several texts in one call; each item is {to?, contact_id?, body, idempotency_key?}. Same rules as send_sms per item; returns per-item results in order and stops early on rate_limited (remaining items reported as skipped). Max 100 items. Do not pass a token.

set_account_profile

ChatGPT
Give one of the user's numbers or inboxes a default identity so every call, text, and email from it is consistent. account_id from list_my_channels / list_email_accounts / get_phone_number. Optional: persona {name, company, role}, signature (appended to emails), disclose_ai (if_asked | always | never_volunteer), quiet_hours {start, end, tz} (no calls in that local window), daily_cap (max sends per day from this endpoint), style (default tone). A call brief still overrides persona/style/disclose_ai. Do not pass a token.

set_contact_policy

ChatGPT
Per-customer overrides on top of the endpoint policy, e.g. {"sms": {"on_reply": "notify"}} to never auto-reply to this person, or {"agent": {"allowed_actions": [...]}}. calls, after_hours, or unknown_callers may be voicemail only after set_voicemail_message has stored this user's greeting; this tool does not accept the sentence. Pass {} to clear. Do not pass a token.

set_inbound_policy

ChatGPT
Decide what happens when customers call, text, or email one of the user's numbers or inboxes. account_id from list_my_channels / list_email_accounts. policy is a partial object merged into the current one. Phone endpoint keys: calls (agent|voicemail|reject), after_hours (agent|voicemail|reject) with business_hours {start, end, tz, days}, unknown_callers (screen|agent|voicemail|reject), missed_calls (callback_followup|sms_sorry|none), after_call_followup (none|agent). Voicemail plays the greeting from set_voicemail_message and does not run an agent; that tool must be called first. sms {on_reply: notify|agent|agent_and_notify|auto_reply_text|ignore, unknown_senders: screen|agent|ignore, auto_reply_text}. Email endpoint keys: on_reply, unknown_senders, auto_reply_text. Shared: agent {allowed_actions, escalate_on, budget {max_steps, max_runs_per_thread_per_hour}, caller_limits {calls|sms|email: {max_per_interaction, max_per_day}}, standing_instructions}, notify {mode: immediate|digest_hourly|digest_daily, channels, urgency_floor}. caller_limits caps callbacks, texts, and emails an inbound caller (not a verified owner channel) can ask the agent to send to themselves. Defaults are 3 per call or inbound message and 10 per rolling day; 0 blocks that kind. Defaults otherwise: replies only notify the owner; opt in to agent. Do not pass a token.

set_voicemail_message

ChatGPT
Set this user's voicemail greeting. message is the sentence to play. Openline turns it into audio, checks the audio matches that sentence, and stores one greeting for the user. Call this before setting calls, after_hours, or unknown_callers to voicemail. Voicemail mode plays that audio and does not run an agent. Do not pass a token.

start_recurring_outreach

ChatGPT
Keep contacting one saved contact until an objective is met (for example, until they agree to repay). Openline calls, texts, and emails over time, reschedules itself, and stops at the deadline or when the goal is met. Use call_phone, send_sms, or send_email for a single contact. Do not use this tool for a one-off call, text, or email. deadline is required (phrase or ISO, at most 30 days). limits may only lower the defaults (max_attempts 100, max_contacts_per_day 20, max_calls_per_7d 100 outbound calls placed by this chain, min_gap_minutes 2, at most 240). Do not pass a token.

tag_contacts

ChatGPT
Add or remove tags on contacts, selected by contact_ids or by an existing tags filter. Arguments: add (list), remove (list), contact_ids (list) or tags_filter (list). Do not pass a token.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps