Get bytes into an account and turn them into posts. Files travel over HTTP, not JSON-RPC — see Uploading files.
upload_file
Store a small file in the user's oriiion account by passing its bytes inline as base64, and get back a permanent URL for the post tools. HARD LIMIT 1MB — the whole file travels as tool-call text, so this is only for things like a logo or a one-page PDF. For anything bigger: POST it to https://oriiion.ai/api/mcp/upload with the header X-API-Key: <this connection's API key> and form field file=@<path> if you can make HTTP requests, otherwise call create_upload_link.
Parameters
filenamestringrequired- Original filename including extension, e.g. 'logo.png'
contentBase64stringrequired- The file contents, base64-encoded (a data: URL prefix is accepted and stripped)
cropboolean- Images only: crop to 1080x1350 portrait for social posts. Leave false to keep the original framing. (defaults to false)
create_upload_link
Get the user's own files (photos, video, PDFs, documents) into their oriiion account when you only have them inside this conversation. Returns a short-lived link the user opens in a browser and drops files on; then call list_uploaded_files for the stored URLs, which work with create_post_from_image, create_carousel_from_images, create_post_from_video and create_document_post. IF YOU CAN RUN SHELL COMMANDS, skip this and upload directly instead — it is faster and needs nothing from the user: curl -X POST https://oriiion.ai/api/mcp/upload -H "X-API-Key: <the API key configured for this connection>" -F "file=@/path/to/file" — it returns the stored URL as JSON. Use this link tool when you cannot make HTTP requests or the file only exists as an attachment in the chat.
Parameters
notestring- Optional short note about what the user should upload — shown to you, not to them
list_uploaded_files
Read-only
The URLs of files the user recently uploaded out of band — via an upload link or a direct HTTP upload — newest first. Call this after the user says they have finished uploading. Returns each file's type so you know which post tool to pass it to.
Parameters
limitnumber- How many files to return (1–50; defaults to 20)
hoursnumber- Only files uploaded within this many hours (1–720; defaults to 24)
create_post_from_image
Create posts from an image the user provides (public URL). The image becomes the post's media and AI writes captions for it. Runs asynchronously — the user is notified when posts are ready.
Parameters
imageUrlstringrequired- Public HTTP/HTTPS URL of the image
topicstring- What the post should be about (helps the caption)
countnumber- Number of caption variants/posts to generate (1–5; defaults to 3)
enhanceboolean- Let AI regenerate an enhanced version of the image (defaults to false)
create_carousel_from_images
Create a carousel post from 2-10 images (public URLs). Images are cropped to portrait format. Provide either a ready caption or a context for AI to write one. Returns a draft post plus an ownerLink (a page showing every slide where the user can edit, schedule or publish) and a reviewLink for sharing. ALWAYS give the user the ownerLink — it is the only way to see the slides here, since this chat cannot display images.
Parameters
imageUrlsstring[]required- 2-10 public image URLs, in slide order
captionstring- Caption to use as-is
contextstring- What the carousel is about — used to AI-generate the caption if none is given
create_document_post
Create a swipeable document post from a PDF (public URL) — the format LinkedIn shows as a page-by-page carousel. LinkedIn is the ONLY platform that renders a PDF: if LinkedIn is not connected the tool returns a connect link, which you should give the user. Instagram can be added when the post is PUBLISHED — the pages then go out there as an image carousel — so one post is created, not two. Provide either a ready caption or a context for AI to write one.
Parameters
documentUrlstringrequired- Public HTTP/HTTPS URL of the PDF document
titlestring- Title shown on the LinkedIn document card. Defaults to a readable form of the filename.
captionstring- Caption to use as-is
contextstring- What the document is about — used to AI-generate the caption if none is given
createCarouselboolean- Also create a SEPARATE Instagram carousel post from the pages right now (max 10 slides). Default false — Instagram is normally added at publish time instead. (defaults to false)
redesign_document
Turn a plain PDF (public URL) into a NEW brand-designed document carousel. The document is read, planned as one idea per slide, designed in the account's brand (colours, fonts, logo, brand guidelines) and rendered as a fresh PDF — published as a LinkedIn document post; Instagram can be added at publish time and gets the same slides as an image carousel. Use this when the user wants a PDF redesigned or turned into a carousel rather than posted as-is (that is create_document_post). LinkedIn must be connected; if not, the tool returns a connect link to give the user. Runs in the background for a few minutes — poll get_task_status with the returned taskId.
Returns immediately — poll get_task_status for the result.
Parameters
documentUrlstringrequired- Public HTTP/HTTPS URL of the source PDF
titlestring- Deck title, shown on the LinkedIn document card. Defaults to what the document itself says.
contextstring- What the document is about or what to emphasise — improves the slide plan and the caption
productIdstring- Optional product the deck is about, as 'shopify-42' or 'feed-17' (from list_products). Adds product details and a product photo to the design.
slideCountinteger- How many slides, 4–10. Default 8. (4–10)
createCarouselboolean- Also create a SEPARATE Instagram carousel post right now. Default false — Instagram is normally added at publish time, the slides then go out there as an image carousel. (defaults to false)
add_image_to_post
Add an image (public URL) to an existing post as an extra slide, turning it into a carousel (max 10 slides).
Parameters
postIdnumberrequired- The post to add the image to
imageUrlstringrequired- Public HTTP/HTTPS URL of the image to add
edit_image
AI-edit a post's image with a natural-language instruction (e.g. 'make the background blue', 'remove the text'). Runs asynchronously (~1-2 min) and applies the edited image to the post automatically. Check progress with get_task_status.
Returns immediately — poll get_task_status for the result.
Parameters
postIdnumberrequired- The post whose image to edit
instructionstringrequired- What to change in the image
change_image
Replace a post's image entirely. Pass imageUrl to swap in an existing image (instant), or prompt to generate a brand-new AI image (async ~1-2 min, applied automatically; check with get_task_status).
Parameters
postIdnumberrequired- The post whose image to replace
imageUrlstring- Public URL of the replacement image
promptstring- Description of a new image to AI-generate instead
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.
Returns immediately — poll get_generation_status for the result.
Parameters
postIdnumberrequired- The post whose image should be made again
Check the status of an async task (image edits, video processing). Returns 'processing', 'completed' or 'failed'. For post generation batches, prefer waiting for the automatic notification instead.
Parameters
taskIdnumberrequired- The task id returned by an async tool
Create a standalone image from a description — a picture on its own, with NO post, caption or schedule attached. Themed with the account's brand colours, fonts and image settings. Use this when the user asks for an image, a picture, a thumbnail or a graphic rather than a post. Takes about a minute; returns a batchId to check with get_image_status. To put an image ON a post instead, use change_image or create_post_from_image.
Returns immediately — poll get_image_status for the result.
Parameters
descriptionstringrequired- What the image should show, in plain language
imageTypestring- What the image is for. Defaults to the account's own setting; use 'thumbnail' for a video or article thumbnail (one of "social_post", "creative_ads", "ugc", "product", "thumbnail")
cameraStylestring- The look of the photography. Defaults to the account's own setting (one of "candid", "everyday_realism", "professional", "influencer", "product")
aspectRatiostring- Shape. Defaults to 4:5, or 16:9 for a thumbnail (one of "1:1", "4:5", "9:16", "16:9", "3:2")
countnumber- How many variants, 1-3. Defaults to 1 — each extra one is a separate generation (1–3)
get_image_status
Read-only
Beta access
Check images started by create_image and get their URLs once they are finished. Show a finished image to the user rather than only describing it.
Parameters
batchIdstringrequired- The batchId returned by create_image