ai.oriiion/oriiion · v1.0.0 · marketing-and-seo
oriiion is healthy: it completed an MCP handshake in 1605 ms and exposes 177 tools.
Your marketing, a message away
Endpoint: https://www.oriiion.ai/mcp (streamable-http)
No repository listed · Website · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 177 |
| Latency | 1605 ms |
| Last checked (UTC) | 2026-10-21T16:30:58.982Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-21T16:30:58.982Z | Healthy | 1605 |
get_chatgpt_ads | Read the current user’s ChatGPT ad drafts, campaigns and results: status, budget, fees, spend, impressions, clicks, CTR, CPC and CPM. Includes account availability and draft approval quotes. Set refresh=true to fetch the latest provider report; reporting is daily, not real time. Null results mean no |
create_chatgpt_ad | Save a ChatGPT ad DRAFT under the current user. Does not launch, reserve funds or spend money. Returns the creative and current quote for review in chat. Use start_chatgpt_ad only after the user approves the exact budget, service fee, duration and oriiion shared advertiser identity. No campaign-buil |
edit_chatgpt_ad | Edit selected fields of a ChatGPT ad draft; pass its latest revision from get_chatgpt_ads. For a launched ad, creative/targeting/bid/duration changes require replacement=true and a new requestKey: this creates a replacement DRAFT and leaves the original unchanged. Clearly explain this, show the new |
start_chatgpt_ad | SPENDS MONEY. Launch an approved draft using its exact approvalToken from create/edit/get_chatgpt_ads, or resume a paused campaign within its existing lifetime budget. State budget, fee, duration and shared advertiser identity first; confirmed=true requires user approval. A pending_review result is |
pause_chatgpt_ad | Pause delivery of the current user’s ChatGPT ad. It can be resumed with start_chatgpt_ad before its deadline and within the remaining budget. |
end_chatgpt_ad | End a ChatGPT draft or archive a launched campaign permanently. It cannot be resumed. Unspent reservations settle after the final daily report and at least 48 hours after ending; ending does not instantly refund funds. |
update_chatgpt_ad_budget | Change a launched ChatGPT ad’s lifetime budget. First read get_chatgpt_ads. State the new total and additional reservation/fee and obtain approval. Additional charge = max(0, new budget - fundedBudgetCents) plus that increase × serviceFeePct (fee rounded to minor units). Send that exact additionalCh |
onboarding_v7 | Start or continue oriiion onboarding, without login. Ask exactly the returned question and show its choices; carry returned answers into the next call. Append the chosen value, or null for the recommendation. Never invent user answers. Use finish when the user asks for the recommended plan. This com |
get_content_skill | oriiion's own method for social media content, as a skill to follow: 'content-strategy' (plan a month of posts like a strategy meeting), 'post-craft' (direct one post: angle, picture, captions in the brand's voice) or 'content-critic' (review a post and send back what is not good enough, with exact |
import_memories | Store what another AI assistant (ChatGPT, Claude, Gemini) remembers about the user into oriiion, so oriiion's assistant knows them from the first message. You must PRODUCE the export yourself before calling this — there is no API that reads another provider's memories, and inventing entries would pu |
get_account_info | Get the authenticated user's profile and business information. |
get_analytics_overview | Headline social-media performance for the account over a period: total views, reach, engagements (likes/comments/shares/saves), posts and followers, each with change vs the previous period. Use this to understand overall account health. |
get_platform_analytics | Per-platform breakdown of performance (views, reach, engagements, followers, engagement rate) ranked so you can see which platform delivers the most value for this customer. Use it to decide where to focus. |
get_top_posts | The best-performing published posts by engagement, with their captions, platforms, media type and metrics. Study these to learn what content resonates and create more of what works. |
get_top_performing_media | Fetch the user's top-performing published post images and videos, ranked by engagement (likes, comments, views) or recency. Returns verified media URLs and performance notes to present in show_image_carousel. |
get_best_posting_times | Engagement-weighted best times to post (day + hour, UTC) based on the account's own history, plus concrete upcoming datetimes to schedule at. Use before scheduling to maximise reach. |
get_follower_stats | Follower counts and growth per connected account over a period. Use alongside engagement to judge which platforms are worth investing in. |
get_content_insights | A synthesized 'what's working' briefing combining the best platform, best posting times, top posts and the engagement mix into actionable guidance for creating better content. Call this before generating new posts to ground them in what performs. |
list_posts | List the user's social media posts. Supports filtering by status and platform. Returns up to 50 posts at a time. |
get_post | Get a single post by ID, including its carousel media items if any. |
show_product_picker | Show products from the user’s connected Shopify store or website/feed as selectable cards with reference photos. Search for a product or supply 1-6 real IDs from list_products. One candidate asks “Do you mean this product?”; several let the user choose. Use when the requested product/reference is am |
create_photo_carousel | Create ONE carousel post containing 2-10 separately generated photos, in the requested order. Use when the user asks for an image/product/photo carousel, not separate posts or a text slide deck. Supply a distinct complete brief for every slide, preserving all requested subjects and shared constraint |
create_product_video | Make a short vertical video (Reels/TikTok) out of one or more products from list_products — their photos, titles and descriptions. sound: music (music only), voiceover (a narrator, with captions), both (narration over music), or leave it out and the concept decides. look: designed (default; the vide |
create_photo_reel | Assemble 2-12 uploaded photos into a video, each shown exactly once in supplied order. Enforces targetSeconds (5-60), music and text switches. Defaults to a silent, text-free reel. This uses the normal video renderer, not a trend sound. Returns rendering status, not a finished video. Branded text us |
open_image_editor | Open the existing Edit AI Image modal for an owned post or a specific carousel image. Prefill only the requested instruction. The user can mark an area, describe changes, add a reference photo, and pick products or @mention them, then press Generate edit. This only opens the editor; it does NOT gene |
generate_posts | Generate new social media posts using AI with Agency Workforce v3. Named products in the description (e.g. iPhone 18, Volvo EX90) are detected automatically: photos come from the user's own catalogue when they have it, otherwise reference photos are found on the web, so the image shows the real prod |
spar_ideas | Run an interactive sparring turn with Oriiion's strategic Thought Partner. Brainstorms high-impact angles (contrarian, playbook, risk/opportunity, book analogies, personal story), formulates opening hooks, and delivers quick choices. |
get_idea_bank | Retrieve the user's saved Idea Bank (backlog, used, or archived idea cards from sparring sessions). |
save_to_idea_bank | Save an angle card or brainstormed concept directly to the user's Idea Bank backlog for later use. |
convert_sparring_idea_to_post | Instantly turn a saved Idea Bank item or Sparring Angle Card into a finished single post using Agency Workforce v3. |
retry_post_image | Make the image again for a post that has its caption but never got a picture (get_generation_status reports image_failed, or a post's imageStatus is 'failed'). Only the image is remade — the caption is left exactly as it is, including any edits the user made while waiting. |
get_generation_status | Check the status of an async post generation batch. Returns 'generating', 'caption_ready', 'completed', 'failed', or 'partial'. 'caption_ready' means the captions are final and the images are still rendering — show the user the caption text then, do not wait for the pictures. Each post also carries |
edit_caption | Update the caption/text of an existing post. Without a platform, the main caption is updated everywhere. With a platform, only that platform's caption variant is changed (other platforms keep theirs). |
generate_platform_captions | AI-generate platform-specific caption variants (Facebook, Instagram, LinkedIn, X, etc.) for one post, tailored to each connected platform's style and character limits. The base caption stays unchanged; each platform publishes its own variant. |
set_mentions | Add mentions/tags to a post. Instagram: photo tags (usernames) and collaborators (max 3). LinkedIn: mentions as { name, url } pairs — the caption must contain '@<name>' for each one. Applied when the post is published. |
set_first_comment | Set an automatic first comment for a post (posted right after publishing — commonly used for hashtags or links). Supported on Facebook, Instagram and LinkedIn. Pass an empty string to remove it. |
publish_post | Publish a draft post now, to every network it is set to go to — any connected network: Facebook, Instagram, LinkedIn, X, TikTok, YouTube, Threads, Pinterest, Bluesky, Snapchat, Telegram, Discord. Pass platforms to choose (['all'], ['tiktok'], ['linkedin','instagram'] …), instagramPlacement 'story' f |
schedule_post | Schedule (or reschedule) a ready post for a date and time; it publishes itself then. Choose the networks with platforms — ['all'] for every connected network, or a subset like ['tiktok'] or ['linkedin','instagram']; omit to keep the post's current choice (else the account's publishing settings). ins |
delete_post | Delete a post. Only draft and scheduled posts can be deleted. Published posts cannot be deleted. |
list_todo | Everything waiting for the user's yes: a post idea from a spike, a connection to fix, and — as they ship — comments, messages and reviews to answer, each with a ready draft and one line on why it's there. Same list as the todo page. Use act_on_todo to accept or dismiss. |
act_on_todo | Accept or dismiss one todo item by id (from list_todo). Accepting does what the card's button does: a post idea starts generating, a connection card returns the link to send. If the user changed a draft before saying yes, pass their version as finalText. Always confirm with the user before accepting |
get_connect_link | One link that connects or reconnects a channel. Send it to the user: it works in any browser, asks them to sign in if needed, and finishes the connection by itself. Use when a channel is missing, or when get_connection_health says needs_reconnect. |
get_connection_health | Whether each connected channel can still publish: ok, warning, or needs_reconnect (with the link to fix it). Check this when a post failed or the user asks why something didn't go out. |
search_trending_audio | Trending or keyword-matched sounds from Instagram's audio catalog for a Reel — licensed music or original sounds. Returns audioIds to use with set_reel_audio. |
set_reel_audio | Attach a sound from search_trending_audio to an unpublished video post. Applies when it publishes as an Instagram Reel. |
set_paid_partnership | Mark an unpublished Instagram post as a paid partnership (required by law when a brand paid for it), tagging up to two sponsor usernames. Instagram shows the label on publish. |
get_audience_insights | Who follows and who engages: age, gender and city breakdowns, 30-day totals and the best posting slots for the user's Instagram (and Facebook page). Use it to answer 'who is my audience' or to ground a post idea in a real group. |
list_conversations | Direct-message conversations on the user's connected accounts (Instagram, Messenger, WhatsApp, Telegram, X…), newest first, with the last message and unread count. Use get_conversation for a thread. Only when the user explicitly asks about their messages — never on your own initiative, and never to |
get_conversation | The messages in one conversation, oldest first. Use conversationId and accountId exactly as returned by list_conversations. |
send_message | Send a direct message in an existing conversation on the user's behalf. ALWAYS show the user the exact text and get their approval before calling this — it goes to a real person immediately. |
list_reviews | Google Business (and Facebook) reviews on the user's connected accounts, newest first, with rating, text and whether they've been answered. Use reply_to_review to answer one. |
reply_to_review | Post a public reply to a review. Use reviewId and accountId from list_reviews. ALWAYS show the user the reply text and get their approval first — it is public and permanent. |
list_subreddits | The subreddits the user's connected Reddit account can post to. Pass a subreddit name to get its rules and flairs — read them before drafting a Reddit post. |
publish_to_reddit | Post to a subreddit on the user's behalf: a title written for that subreddit plus text, a link, or an existing post's caption and image. Reddit is never posted to automatically — only through this, and only after the user has approved subreddit, title and text. Check list_subreddits for rules and fl |
get_customer_profile | Read the authenticated customer profile folder: business soul, brand/design guidance and connected channels. Files regenerate from saved settings. Update business details with update_business_info, logo/colors/fonts with set_brand_identity, and writing rules with save_style_guide or update_content_r |
get_connected_platforms | List all social media platforms the user has connected (Facebook, Instagram, LinkedIn, X). Shows page names and usernames. |
get_onboarding_status | Check the user's onboarding progress. Returns which steps are completed, which are required, and whether onboarding is fully complete. |
get_onboarding_links | Generate onboarding links for the user's remaining steps (payment, Instagram, Facebook, LinkedIn connections). Returns direct links the user can click to complete each step. |
update_business_info | Update the user's business profile information. All fields are optional — only provided fields will be updated. |
set_account_type | Set the user's account type. This affects which social platforms are required during onboarding. |
get_post_review_link | Create two links to a visual page of the user's generated posts. ownerLink = full CONTROL: edit each platform's caption (by hand or by AI rewrite), AI-edit / replace / add images, approve, schedule, and publish now (great when chat can't render images, or as a QR on a phone) — share only with people |
complete_onboarding | Mark the user's onboarding as complete. Only works once all required steps (payment + required social connection) are done — verify with get_onboarding_status first. Call this at the end of a successful onboarding conversation. |
find_social_profiles | Find the user's social media profiles (Instagram, LinkedIn, Facebook, YouTube, TikTok, X) by harvesting links from their website and web-searching for official profiles. Returns candidates only — confirm with the user, then save with set_social_profiles. |
set_social_profiles | Save the user's confirmed social media profile URLs to their account. |
discover_brand_images | Collect candidate brand images from the user's website, Instagram posts and earlier research (up to 24). Show them to the user to pick from, then save the selection with select_brand_images. |
select_brand_images | Save the user's chosen brand images as visual references for post generation. |
list_connected_sources | List the user's connected photo libraries (Dropbox, OneDrive, Google Drive/Photos, etc.) and which approved folder/album each imports from. |
search_my_images | Search the user's own photo library (imported + scraped, vision-tagged) by keyword — e.g. 'coffee', 'team', 'outdoor'. Returns real photo URLs to use with change_image / add_image_to_post. |
recommend_images_for_post | Given a post ID, return the best-matching real photos from the user's own library for that post's topic (ranked). Ideal for AI-OFF customers — pass a chosen URL to change_image to set it. |
research_brand | Analyze the user's website (screenshot + AI vision) to extract their brand identity: logo, brand colors and fonts. Takes ~20-30 seconds. Nothing is saved — show the result to the user and persist their confirmed version with set_brand_identity. |
get_brand_identity | Get the user's saved brand identity: logo, colors, fonts, AI-image setting, and content style guide (include/exclude rules). |
set_brand_identity | Save the user's confirmed brand identity. Only provided fields are updated. |
generate_style_guide | Generate a content style guide (tone of voice, dos, don'ts, emoji & hashtag policy) from the user's saved business profile. Nothing is saved — show it to the user, apply their edits, then persist with save_style_guide. |
save_style_guide | Persist the user's confirmed content style guide. It feeds directly into post generation (include/exclude rules). |
update_content_rules | Save a standing rule the user states about their posts or images, one rule at a time, without rewriting the rest of their style guide. 'always' rules feed what every post must include or follow; 'never' rules feed what must never appear in an image or a caption. Use it the moment the user says thing |
set_image_style | Choose whether the user's posts use AI-created images (true) or real photos — their brand images, products and stock (false). |
get_pricing | Get oriiion's subscription plans and prices. Works without authentication — useful before the user has an account. To subscribe, the user pays through their personal payment link from get_onboarding_links. |
get_billing_status | Get the authenticated user's own subscription/contract status: current plan, monthly amount, last and next payment, recent invoices, and Try & Buy trial state (on trial + days remaining). Scoped to the signed-in user only. Invoices are emailed automatically to the invoice email on file; there is no |
get_booking_payments | Payments the user's customers made for bookings on the user's own website (Stripe via oriiion): totals, last 30 days, fees, the latest payments with receipt links, and a one-time link to their Stripe dashboard with every receipt, payout and report. Use when the user asks about payments, receipts, pa |
get_meeting_availability | Read the authenticated business’s bookable calendar services, resources and host timezone, or check available times on one local date. Omit date/service/resource to discover options first; then provide both date and the exact service name, with an optional returned resource. Availability includes th |
prepare_meeting_link | Prepare a guest room link for the user’s email draft. Recheck host calendar availability and atomically reserve the selected service time, then automatically create a branded video room. Creates a booking/room but sends no invitation, email or owner reminder. First use get_meeting_availability for e |
prepare_booking_link | Prepare a public availability booking link for the user’s email draft, using an existing host calendar service and optional resource. The recipient opens it, sees live availability in the host timezone and chooses a time. A successful booking automatically creates a branded video room, including whe |
create_meeting | Create a branded oriiion video meeting in the authenticated user’s My business workspace. Requires Business Suite, a customer instance and the Meetings grant. Always return BOTH guestUrl (label: Link for your guest) and hostJoinUrl (label: Join as host) in the user’s language, especially for meeting |
list_meetings | Check the authenticated business’s upcoming or past oriiion meetings and find exact room IDs. Default upcoming; use history for catch-up requests and all when searching by title. Returns real status, times, guest links, setup state and pagination. Date filters apply to meeting start times (from incl |
link_meeting_customer | Connect an existing owned meeting and its retained recordings to a CRM customer, including finished meetings. Use exactly one of roomId or latest:true, and exactly one of leadId or customer. latest:true means the most recent meeting whose start time has passed, excluding cancellations; equal start t |
get_meeting | Read one owned My business meeting: title, schedule, current status, settings and its guestUrl/hostJoinUrl. When asked for joining links, always include both, clearly labelled Link for your guest and Join as host in the user’s language. Resolve the roomId with list_meetings first. Does not join the |
get_meeting_catchup | Catch up on an owned meeting from its saved summary, speaker-labelled final transcript, chat, notes and follow-up drafts. Use list_meetings to select the correct room; ask if multiple meetings match. Results are paginated: follow nextOffset before claiming to have reviewed the whole meeting. Search |
get_business_mail_recipients | Choose usable email recipients from the authenticated business’s CURRENT CRM lead lists. Read only: does not add newsletter consent, modify contacts or send anything. Search names/company/email; filter by imported/campaign source, lead kind, independent callStatus or sales status, then select exact |
send_business_email | Send the exact approved personal email from the authenticated business mailbox to 1–5 explicit recipients. This sends real email. First show the sender, recipient addresses, subject and full body; send only when the user explicitly authorizes that message. Selecting CRM leads or preparing meeting/bo |
list_business_emails | List messages in the authenticated business’s own mailbox. Read only: never marks mail read, archives, drafts or sends anything. Views mirror the dashboard: inbox (received, not archived), unread, todo (needs a reply), drafts (has a saved reply draft), sent, archived, starred, important, all. Return |
get_business_email | Open one message from the authenticated business mailbox by the id list_business_emails returned. Read only: unlike opening it in the dashboard, this does NOT mark it read and changes nothing. Returns the full plain text (up to 20,000 characters), any saved reply draft, delivery and open tracking fo |
update_business_emails | Mailbox housekeeping in the authenticated business mailbox, only when the user asks: mark messages read or unread, archive or unarchive. Sends nothing and deletes nothing. mark_read/mark_unread apply to received messages among the ids (sent mail has no read state). archive/unarchive move the whole c |
draft_business_email_reply | Save a reply draft on one received message in the authenticated business mailbox, for the owner to review. This sends NOTHING and is not authorization to send. The draft replaces any earlier draft on that message (replacedExistingDraft says so) and puts the message on the to-do list; the owner sees |
list_github_repos | List the GitHub repositories the user has switched on for oriiion (beta). Only these repos can be read. If none are switched on, tell the user to choose repos under Integrations → GitHub → Choose repos. |
list_github_changes | What recently shipped in the user's switched-on GitHub repos: merged pull requests and recent commits on the default branch, newest first. Use for 'what did we ship this week?' or to find the change a user wants to post about. |
get_github_change | The full picture of one pull request: description, commits and the most telling parts of the diff. Use it to explain in plain language what changed for a user, or before writing a post about it. |
get_github_file | Read one file from a switched-on repo's default branch — by default the README, which is the quickest way to learn what a product is. Given a directory path, lists its entries instead. |
research_website | Scrape the user's website and auto-extract business name, category and description into their profile (only fills fields that are still empty). Use during onboarding so the user doesn't have to type what their site already says. Show the user what was found and confirm it. |
list_products | List the user's products (from their connected Shopify store and/or website product feed). Pass `search` to filter by title/description. Each item includes ALL its image URLs in `images` (plus `imageCount`) and a brief description; use get_product for the full untruncated description. Use the return |
get_product | Get full details for one product — complete title, full (untruncated) description and every product image URL. Use before generating so posts reflect the real product info. |