---
name: spreva
description: Plan, write, schedule and publish social media posts with SPREVA, find the workspace's photos and videos, report how posts did, and make videos in SPREVA's Studio. Use when the person mentions SPREVA, or asks to post, schedule, draft or reschedule on Instagram, TikTok, YouTube, LinkedIn, X, Facebook, Threads, Bluesky or another network, to see what is scheduled or failed, or how a campaign or post performed.
---

# SPREVA

SPREVA publishes and schedules a workspace's social media posts on its connected accounts (Instagram, TikTok,
YouTube, LinkedIn, X, Facebook, Threads, Bluesky, Pinterest and more), keeps its media library, groups posts into
campaigns and queues, reports analytics, and makes videos and images in its Studio.

## How to reach it

1. **MCP tools, if connected.** If tools named `overview`, `search`, `fetch`, `save_post` are available (often
   prefixed, e.g. `spreva:overview` or `mcp__spreva__overview`), use them.
2. **Otherwise the `spreva` CLI** (`npm i -g @spreva/cli`, or `npx -y @spreva/cli <command>`), with `SPREVA_API_KEY`
   set to an API key from SPREVA → Developer → API keys:

   ```sh
   spreva overview
   spreva search "winter blend"
   spreva fetch https://app.spreva.ai/posts/…
   spreva call save_post --json '{"caption":"Winter Blend is here","accounts":["instagram"],"when":"draft","request_id":"wb-1"}'
   spreva call <tool> key=value ...
   spreva tools                      # every tool, one line each
   spreva docs platforms/tiktok      # reference pages
   ```

   Every command prints the same Markdown answer the MCP tool gives. `spreva call` exits with 1 when the answer is
   an error. If a call says the key is missing or invalid, ask the person for an API key; `spreva doctor` checks
   the setup.

## The usual path

1. **`overview` first**, once per conversation: the workspace's timezone and current time there, what needs
   attention, what goes out next, every account with the reference to use for it, queues, campaigns, and what the
   plan and the agent permissions allow.
2. **`search`** to find posts, files, campaigns, accounts and queues by their words ("latte art in slow motion",
   a caption, a file name). `fetch` reads one object in full by its link or id.
3. **`save_post`** to create or change a post and set when it goes out. `publish_post` publishes now;
   `delete_post` removes one.

Other tools: `import_media` (a file from a public link into the library), `update_media` (name, alt text, tags,
folder), `save_campaign`, `save_queue`, `analytics`. On the full connector the Studio adds `create_video`,
`narrate_video`, `edit_video`, `review_video`, `render_video`, `generate_image`
(guide: `spreva://docs/studio/making`). Make only what was asked.

## Names, not ids

Name things as a person would, or pass a link an answer gave. Ids are never needed.

- Files by exact file name (`"winter-blend-flatlay.jpg"`) or link; find them with `search` first.
- Accounts as `"instagram"` (when there is one), `"@handle"`, `"tiktok @handle"` when several networks share the
  handle, the account's name, `"all linkedin"`, or a link. `overview` lists the reference for each.
- Campaigns and queues by name.

A name that matches several things comes back as a choice and nothing is saved. When the person's words fit several
accounts, files or posts equally, ask them which one before changing anything. No match comes back with the
closest names.

## Times

- `when` is an ISO 8601 time **with its offset** (`2026-09-27T09:00:00+02:00`), `"next slot in <queue>"`,
  `"next slot"`, or `"draft"`. A new post without `when` is a draft; `when: "draft"` unschedules one.
- Work out "tomorrow at 9" from **overview's clock and the workspace's timezone**, not from your own clock, unless
  the person names another zone.

## Changing things safely

- **Revisions:** every change to an existing object needs the `revision` its last `fetch` or write answer ended
  with. If someone changed it since, nothing is saved and the answer shows the current version: read it, then
  decide again.
- **request_id:** send a new `request_id` for each change you mean to make and the **same** one when retrying the
  same change. A repeat is answered once and never makes a second post.
- Only the fields you send change. `per_account` holds what differs for one account (a shorter caption for X,
  a placement such as reel, story or short, network options).
- A post is always saved, even when a network would refuse it: the answer lists, per account, what is wrong and
  the `save_post` call that fixes it. Errors in general give the call that fixes them.

## Confirmation and permissions

- **Never publish, schedule or delete unless the person asked for it.** Drafts are the safe default when intent
  is unclear.
- Publishing now, scheduling less than an hour ahead, deleting a published post and spending the AI allowance
  (narration, images) may answer with a **preview and a `confirmation`**. Calling the same tool with only
  `{ "confirmation": "…" }` executes exactly that preview. Go ahead if the person asked for exactly that;
  otherwise show them the preview first.
- If a person must approve it in SPREVA, the answer gives the link: share it and stop.
- Deleting a published post removes it from SPREVA only; it stays live on the networks.

## Example

"Post the launch teaser tomorrow at 9 on Instagram and TikTok, shorter on TikTok, in the Winter Blend campaign":

```
overview                      → timezone Europe/Lisbon, now 2026-09-26 14:05 (+01:00), accounts "instagram", "tiktok"
search { query: "launch teaser", kinds: ["media"] }   → launch-teaser.mp4
save_post {
  caption: "Winter Blend is here", media: ["launch-teaser.mp4"], accounts: ["instagram", "tiktok"],
  per_account: { tiktok: { caption: "Winter Blend ☕" } }, campaign: "Winter Blend",
  when: "2026-09-27T09:00:00+01:00", request_id: "wb-launch-1"
}
```

Then tell the person what was scheduled, when, and where, with the link from the answer.

## Reference

Read these with `fetch` (MCP) or `spreva docs <page>` (CLI) when you need them, not up front:

- `spreva://docs/platforms/<network>`: what each network accepts (placements, media, lengths, options).
- `spreva://docs/queues`: scheduling and queues.
- `spreva://docs/agent-permissions`: what needs a confirmation or an approval.
- `spreva://docs/studio/making` and `spreva://docs/studio/editing`: making and editing videos (full connector).
- `spreva://docs`: the index.
