Every workflow starts the same way:
rheos_list_brands to discover the brand, then rheos_get_context to load identity, current audiences and themes, plus reference data. We omit those two calls from the recipes below for brevity — assume they happen first.1. Draft a post from a URL
Goal: “Read this article and write a LinkedIn post about it in my brand voice.”1
Scrape the URL
Use
rheos_scrape_website if it’s the brand’s own site, or have the assistant fetch the page text directly (most clients can fetch HTTP). For an article on rheos.app, rheos_fetch_docs returns clean markdown.2
Choose optional formula fields
If they help this post, pick an
intent, hookId and ctaId from the formula data already loaded via rheos_get_context. These fields are optional.3
Write the body
The assistant writes the post text itself — no tool call needed. Brand voice comes from the identity document loaded in step 0.
4
Persist the draft
Call
rheos_create with resource_type="posts":5
Review or schedule
The post is now visible in the dashboard. If the user is happy, call
rheos_schedule_post with an ISO timestamp, or rheos_publish_post to go out immediately. The post’s channel must be connected first; otherwise scheduling is rejected with channel_not_connected.2. One-shot post from an image
Goal: “Here’s a photo from yesterday’s event — draft an Instagram post.” The fast path isrheos_draft_post_from_image, which uploads the image and
drafts a caption in a single call:
post_id and asset_id. If the caption
needs tweaking, follow up with rheos_update. Then schedule or publish as in
workflow 1.
Use
rheos_upload_image instead when you want to stage the image for later — for example, uploading a batch of product shots before deciding which one to pair with which post.3. Schedule a week of content
Goal: “Plan five posts for next week — Mon/Wed/Fri on LinkedIn, Tue/Thu on Instagram.”1
Generate the idea queue
Call
rheos_generate_ideas with count: 5 and any formula bias the user supplied. Returns five idea_ids as posts with status="idea".2
Present and refine
Show the ideas to the user. If they don’t like one, call
rheos_refresh_idea to regenerate it in place. If they want a totally different angle, call rheos_generate_ideas again with a different formula bias.3
Accept the keepers
For each idea the user picks, call
rheos_accept_idea — this flips the status to draft.4
Write each body
For each accepted idea, the assistant writes the full post body in brand voice, then
rheos_update saves it:5
Schedule each one
Call Confirm each post’s channel is connected first with
rheos_schedule_post per post with the chosen scheduled_at ISO timestamp.rheos_get_platforms or
rheos_get_context. A definite missing connection rejects the call with
channel_not_connected.rheos_cancel_scheduled.
4. Update the brand identity from a new website
Goal: “We just relaunched our website — re-import the brand from there.”1
Scrape the new site
rheos_scrape_website populates the brand’s website source and versions the old one.2
Re-synthesise the identity doc
rheos_trigger_identity_doc_flow reads every active source and writes a fresh identity document. Pass regenerate: true to bypass the cache.3
Review
Call
rheos_view_brand_document to read the new markdown. If metadata fields look off (tone, audiences), patch them with rheos_update_brand_metadata instead of re-running the full flow.5. Produce and review a short-form video
Goal: “Here’s a draft video session — render it, get AI feedback, and apply the fixes.” This is the video-pipeline loop. Sessions are created in the dashboard; the MCP picks up from “session exists, scenes drafted”:1
Inspect the session
rheos_video_get_session returns the current scene list.2
Edit if needed
Use
rheos_video_update_scenes to make changes — but only for explicit
user edits. AI-suggested edits should go through
rheos_video_apply_suggestions (preserves layer ids).3
Render
rheos_video_render kicks off Lambda. Returns render_id and bucket_name.4
Poll progress
Call
rheos_video_render_progress every 3–5 seconds. Typical render is
30–90 s for a 15-second clip. When done: true, the response includes
the MP4 URL.5
AI review
rheos_video_review sends the MP4 to Gemini and returns text
suggestions (“tighten the cut at 0:04, the hook subtitle reads after the
visual change”).6
Apply suggestions and re-render
rheos_video_apply_suggestions patches the scenes from the review,
then loop back to step 3.rheos_create (assetIds) or published
directly through the video session’s own publish flow in the dashboard.
6. Connect a new social channel
Goal: “Connect this brand’s Instagram account.” OAuth has to happen in a browser — the MCP can’t complete it directly. The flow is:Instagram, Facebook, LinkedIn, X, Bluesky and Pinterest can be connected today. TikTok, Threads and YouTube Shorts are still pending platform approval —
rheos_get_platforms reports them as unavailable with the reason, and attempting to schedule for one is rejected with channel_not_connected.1
Generate the deep-link
rheos_connect_platform with channel: "instagram" and the brand_id.
Returns a dashboard.rheos.app/settings/integrations?... URL the user opens to
complete OAuth (the response status is url_handoff_required — it does not mean
the platform is connected yet).2
User opens it
The assistant tells the user to open the URL. They sign in to the
platform and approve.
3
Verify
After approval, call
rheos_get_platforms (or rheos_get_context) to
confirm the channel is now connected. The new platform is then available
as a channels value on rheos_create, rheos_schedule_post, and
rheos_publish_post. Until it is connected, rheos_schedule_post rejects
a post for that channel with channel_not_connected.Tips
- Start every session with
rheos_list_brands+rheos_get_context. It seeds the assistant with brand voice, current audiences and themes, plus reference data — everything else gets cheaper after that. - Prefer one-shot tools.
rheos_draft_post_from_imagebeatsrheos_upload_image+rheos_create.rheos_get_contextbeats five separate reference calls. - Read the
next_stephints. When a Rheos tool response includesnext_step, it nudges the caller toward the right follow-up tool. The assistant should treat it as a strong signal. - Failed generations don’t charge. A failed
rheos_image_generatecall refunds automatically, so a retry costs you the same as getting it right first time.

