add_lead_notes
ChatGPTSave the free-text note on a lead, replacing any note already there (include the old text to keep it). Notes are for the user, never sent to anyone.
add_search_term
ChatGPTAdd a tracked Reddit text-search term (shared across your account): a phrase people write when they need the product, such as 'crm for a small sales team'. Not a username: Reddit search cannot find a person by name.
cancel_queued_dm
ChatGPTCancel a DM that is queued for the Chrome extension to send, before it goes out.
cancel_queued_reply
ChatGPTCancel a reply that is queued for the Chrome extension to post, before it goes out. Does nothing to a reply that has already been posted.
create_campaign
ChatGPTCreate an agent: type='messaging' (DMs to leads), 'reply' (public replies) or 'content' (standalone post drafts). Each agent has ONE mode and its own cadence; one active agent per (account, type). For Reddit outreach agents use subreddit mode (subreddits), text mode (reddit_search_terms + reddit_search_mode='text'), or switching mode (reddit_search_mode='switching', finds people publicly leaving a competitor; optional switching_competitors, else the product's competitors); content agents need no targeting. Omitting type creates a legacy multi-mode campaign (deprecated).
create_message_template
ChatGPTSave a reusable message template under a name.
create_product
ChatGPTAdd a product from its website URL. Needed once before creating an agent; the site is read to name the product and the rest fills in on the first lead search.
delete_message
ChatGPTDelete a message that already failed or was sent, removing it from the thread in OneUp and, for a Reddit DM on an account connected through Reddit sign-in, from the user's own Reddit inbox view. The other person keeps their copy: nothing is unsent.
delete_message_template
ChatGPTDelete a saved message template permanently.
delete_post
ChatGPTThrow away an unpublished post draft the user does not want. This is permanent, so confirm with them first. It only works on a post that has not gone out yet (draft or suggested): deleting a published post means taking it down from X or Reddit too, which the user does from that post's page in the app. Nothing else in the queue is touched.
discard_draft
ChatGPTThrow away the unsent DM draft on a conversation. A conversation that only ever held an unsent first draft is removed with it; otherwise the conversation stays and only its unsent drafts (follow-up included) go, and any queued send is cancelled. Use when the draft is wrong and you do not want to send it.
discard_message
ChatGPTDiscard one specific unsent message by id (a follow-up draft, for example).
draft_reddit_dm
ChatGPTGenerate a personalized Reddit DM opener for a post or comment using OneUp's DM writer. Creates draft copy only; nothing is sent. Consumes account credits.
ensure_followup_draft
ChatGPTGet the objection-handling follow-up draft for a conversation, writing one if there is no current draft and the lead has replied (nothing is written before their first reply; pass regenerate=true for a fresh one). Draft only; nothing is sent. Consumes account credits when it has to write.
frontdesk_reply
ChatGPTSend the user's own reply to a website visitor in a chat that was handed over to them; it appears live in the widget on their site. Confirm the exact text with the user first; once confirmed, make the call.
generate_reply_suggestions
ChatGPTWrite three suggested replies for a conversation, grounded in the original post and the user's product, plus the conversation's objection-handling follow-up draft first when there is one. Nothing is sent; it may also save or refresh that follow-up draft. Consumes account credits.
get_campaign
ChatGPTGet full detail for one agent: its config, the product it promotes, its connected account and its analytics totals (messages are in list_conversations).
get_campaign_activity
ChatGPTGet an agent's audit log (created/edited/paused/resumed/run_now), with actor.
get_conversation
ChatGPTGet one conversation: the lead, its status, the post or comment it started from, and the thread's newest 20 messages (message_count gives the total).
get_frontdesk_conversation
ChatGPTTranscript of one website-chatbot conversation (its newest 40 messages, in reading order), plus the visitor's details.
get_frontdesk_status
ChatGPTWhether Front Desk (the chat widget on the user's own website) is set up and live: domain, availability right now, unread conversation count, and knowledge base size. Start here for any Front Desk question.
get_lead
ChatGPTGet one lead's detail (scores, status, notes, conversation link).
get_lead_stats
ChatGPTPipeline summary for the user's leads: totals by status (new, engaged, qualified, trail, paid, disqualified), by source, and by agent. Use this for 'how are my leads doing' before listing anything.
get_outreach_readiness
ChatGPTReport whether real Reddit sends are possible right now (send-token freshness, and per agent whether enough posts are gathered for it to run), with plain-English advice on what to do.
get_post
ChatGPTOne post in full: its whole body, the title and subreddit for Reddit, attached media, the series it belongs to, which agent run produced it, and, once it is live, the URL it was published at with its likes and comments. Use this after list_posts whenever the user asks to read, review, or check on a specific post. Also returns review_url, the page in the app where they can edit and publish it.
get_reply
ChatGPTGet one reply in full: its text, status, and the post or comment it answers.
get_run_details
ChatGPTGet one run's stats (posts fetched/analyzed/relevant, messages sent).
list_agent_replies
ChatGPTList replies belonging to ONE agent, optionally filtered by status (draft/posted/discarded/failed). Use list_reply_drafts for the cross-agent view.
list_campaign_runs
ChatGPTList an agent's run history with per-run stats (paginated).
list_campaigns
ChatGPTList your agents (Messaging, Email, Reply, Content) with status, platform, schedule and targeting. Each row's agent_label names which kind it is in the user's words: an Email Agent is stored as agent_type 'messaging' on platform 'email', so read agent_label or roster_type, not agent_type, to tell them apart. Rows without agent_type are legacy multi-mode campaigns. paused_note and status_note say in plain words why a quiet agent is quiet (waiting for posts, finished, paused) and what restarts it.
list_conversations
ChatGPTList conversations (unread, draft, or replied) across all agents, or for one agent when campaign_id is given. Use filter=draft to see messages waiting for approval.
list_disqualification_reasons
ChatGPTThe reasons a lead can be disqualified, for use with update_lead_status.
list_frontdesk_conversations
ChatGPTRecent conversations visitors had with the website chatbot, newest first. Filter to only the ones handed over to the user (escalated) or only unread ones.
list_leads
ChatGPTList leads for you or a campaign, optionally filtered by funnel status.
list_message_templates
ChatGPTList your saved message templates (reusable snippets you send often).
list_posts
ChatGPTList the user's posts and post drafts, newest first: what the Content Agent wrote, plus posts the user drafted in the app. Use it for 'what drafts are waiting on me', 'what did my agent write', or 'what have I published'. Filter by status ('draft' = written but not published, 'published' = live, plus suggested/scheduled/processing/failed), by platform, and by origin ('agent' = written by an agent, 'composer' = the user's own app draft). Returns {count, posts:[{post_id, platform, status, kind, origin, title, subreddit, series, media_count, created_on, scheduled_time, preview}]}. Pass a post_id to get_post for the full text.
list_products
ChatGPTLists the products a Reddit lead search can run for: every product on the user's OneUp Today account, with product_id, name, description and url. start_reddit_lead_search with a product_id finds people on Reddit for one of them. An empty list on a new account means no search has run yet; the first start_reddit_lead_search creates the product.
list_reply_drafts
ChatGPTList public reply drafts your Reply agents have written, across every agent: ones waiting on your approval, plus approved ones still queued to post (queue_state is set on those). Returns reply_id + campaign_id (pass it as agent_id), the draft text, and what it replies to.
list_reply_history
ChatGPTList replies that have already been posted, newest first. Optionally narrow to one connected account with social_id. Use this to see what actually went out.
list_socials
ChatGPTList connected social accounts; Reddit rows include send-token freshness.
lookup_conversation
ChatGPTFind a conversation by its id alone when you do not know which agent it belongs to. Returns the conversation plus its agent_id, which the other conversation tools need.
mark_conversation_read
ChatGPTMark one conversation as read, the same as opening it in the app inbox.
mark_conversation_unread
ChatGPTMark one conversation unread again so it resurfaces in the inbox.
mark_frontdesk_read
ChatGPTMark one website-chatbot conversation as read, clearing it from the unread badge.
pause_campaign
ChatGPTPause an agent (status -> paused, paused_reason owner_paused): its scheduled runs stop and it stays paused, resumable at any time with resume_campaign. This replaces any automatic pause the agent was in, so only resume_campaign restarts it. Nothing it found is deleted. Idempotent.
post_reply
ChatGPTPublish a reply draft to Reddit, X, Instagram or Threads from the user's own connected account. It posts publicly right away, except on a Reddit account connected through the OneUp Chrome extension, where the result status is "queued" and it posts when the user's browser is open (tell the user it is queued, never that it was posted; cancel_queued_reply stops it). Confirm the exact text with the user first; once they have confirmed, make the call. Pass reply_text to edit the draft before posting.
regenerate_draft
ChatGPTRewrite the unsent draft on a conversation. Pass instruction to steer it (shorter, warmer, answer their question); omit it to regenerate from scratch. Replaces the current draft; nothing is sent. Consumes account credits.
remove_search_term
ChatGPTRemove a tracked Reddit text-search term.
reply_in_conversation
ChatGPTSend a reply in an existing DM or email thread from the user's own account; on a Threads conversation the reply is published publicly. It goes to the other person, so confirm the exact text with the user first; once confirmed, make the call. Returns a job id and the send completes in the background, except an X reply, which is queued for the OneUp Chrome extension to send.
resume_campaign
ChatGPTResume a paused agent (status -> scheduled). Idempotent. A messaging agent on a karma-laddered Reddit account stays paused and starts by itself once the ladder completes.
retry_reply
ChatGPTRetry a reply that failed to send, optionally clearing the failed message (only a message marked failed) first. Sends to the other person, so confirm with the user before running.
run_campaign_now
ChatGPTTrigger a manual campaign run now. Runs discovery and drafting, which consumes account credits. Drafts only (no sends) unless a fresh send token is present — check get_outreach_readiness first.
search_conversations
ChatGPTSearch across every conversation you own by username, profile fields, or message text. Use this to find a thread when you do not know its conversation_id.
search_help
ChatGPTSearch OneUp Today's own help docs. Use for questions about how the product works: connecting an account, what a setting does, the Chrome extension, how an agent decides what to do. Returns matching help articles with links.
select_reply
ChatGPTChoose one reply draft when the agent generated several variants for the same target. The siblings are discarded; the chosen one stays a draft. Does not post it.
send_draft
ChatGPTSend an existing draft conversation for real delivery to the recipient on Reddit. Call with campaign_id and conversation_id from list_conversations; omit private_message to deliver the stored draft unchanged. Sends immediately; if the account sent too recently, the DM is queued and the user's OneUp browser extension sends it when the pacing window ends (result status "queued"; cancel_queued_dm stops it). A disconnected or stale Reddit account is refused, not queued. This contacts a real person, so confirm with the user first; once the user has confirmed, make this call.
seo_add_keyword
ChatGPTAdd one keyword of your own to a site's plan, so the agent writes about it too.
seo_approve_article
ChatGPTApprove an article the SEO agent wrote so it publishes to the user's live blog immediately, or at publish_at (ISO time) to schedule it. This publishes to their site, so confirm with the user first.
seo_build_keyword_plan
ChatGPTRebuild this site's keyword plan from its product. Runs in the background; returns status 'building' if one is already running.
seo_create_site
ChatGPTAdd a site for the SEO agent to write for. Needs a name and the product_id the blog is about (the product drives the keyword plan). site_type defaults to 'feed': nothing to connect, the user's site pulls published articles from a feed URL. A WordPress or webhook site needs credentials and is connected in the web app.
seo_delete_site
ChatGPTPermanently remove an SEO site and stop it generating anything further.
seo_generate_article_now
ChatGPTWrite one article for this site now instead of waiting for its schedule. Runs in the background; it lands in the review queue, except on a site with auto_publish on, where it goes live on the blog once written. Consumes account credits, so confirm with the user first.
seo_get_keyword_plan
ChatGPTShow the keyword plan driving this site: the topics queued, done, and their priority.
seo_get_ranks
ChatGPTShow tracked keyword positions over time for one published article.
seo_get_site
ChatGPTGet one SEO site in full: its settings, publishing target, and article usage this period.
seo_get_traffic
ChatGPTTraffic for a site over the last N days, or for one article when article_id is given. Comes from the connected Search Console property.
seo_keyword_chat
ChatGPTAsk a question about this site's keyword strategy and get an answer grounded in its plan, traffic and live keyword data. It may add keywords it recommends to the site's plan. Free.
seo_list_pending_articles
ChatGPTList articles the SEO agent has written and is waiting on you to approve.
seo_list_sites
ChatGPTList the blogs/sites your SEO agent writes for, with their status and article usage.
seo_pause_site
ChatGPTPause an SEO site so it stops writing new articles until resumed. Articles already approved or scheduled still publish at their time.
seo_resume_site
ChatGPTResume a paused SEO site so its schedule starts producing articles again.
seo_unschedule_article
ChatGPTTake a scheduled article back out of the publishing queue; it returns to review.
seo_update_site
ChatGPTChange an SEO site's settings: its name, the product it writes about, how many articles a month it writes (each one charged), article length, the country it tracks rankings in, whether new articles publish without review, and whether articles get images.
seo_verify_site
ChatGPTCheck that OneUp can actually reach and publish to this site, and report what is wrong.
setup_front_desk
ChatGPTTurn Front Desk on for the user's website and return the one script tag that installs it. Creates the chatbot if they do not have one, starts the knowledge-base build from their product and a crawl of their site. Running it again just returns the script tag; rebuild_knowledge=true re-crawls and replaces the knowledge base, hand-edited passages included. Use this when someone wants the chat widget on their site.
star_conversation
ChatGPTStar or unstar a conversation. Pass starred=false to remove the star.
start_reddit_lead_search
ChatGPTOne step from a website URL to a running Reddit lead search: adds the product, creates a draft-only messaging agent and runs its first discovery now. Use for a new account or a new product. Drafts are reviewed before anything is sent. Consumes account credits, like run_agent_now.
sync_social_dms
ChatGPTPull in new DMs and replies from a connected account right now instead of waiting for the next scheduled sync. Supports reddit, instagram, facebook, and threads.
update_campaign
ChatGPTEdit an existing campaign's configuration: theme, target user count, discovery run frequency, or DM/reply toggles. Not for creating or scheduling social-media posts.
update_lead_status
ChatGPTMove a lead through the funnel: engaged/qualified/paid or disqualified.
update_message_template
ChatGPTRename a saved message template, change its body, or both.
use_message_template
ChatGPTRecord that a template was used, which keeps its usage count and ordering fresh.
whoami
ChatGPTIdentify the authenticated OneUp account: user_id, name, email, company owner, and prepaid wallet balance (amounts in cents), plus the date the free starting credit ends (trial_expires_on).