Skip to content

skill.md

A skill file tells an agent when to reach for Dropslate and how to behave once it does. The one below is the same text served at /skill.md - byte for byte, from one source - so you can copy it from here or have your agent fetch it. Drop it into a skills folder as dropslate/SKILL.md, or paste it into a project’s instructions.

SKILL.md
---
name: dropslate
description: Schedule and publish posts to YouTube, Instagram, Facebook and Threads through Dropslate (MCP or REST). Use when the user asks to publish, schedule, cross-post, retry or check social media posts, or to upload media for them. Plan first, create only after the user confirms.
---
# Dropslate
Dropslate schedules and publishes posts to connected social accounts through each network's official API. Over MCP (`https://mcp.dropslate.top/mcp`, or `npx -y @dropslate/mcp` with `DROPSLATE_API_KEY`) you get 22 tools; over REST the same routes at `https://api.dropslate.top/v1`. A post has four states only: `draft`, `queued`, `live`, `failed`. Docs: https://docs.dropslate.top (index for agents: https://docs.dropslate.top/llms.txt).
## When to use
- The user wants a file or a text published or scheduled to YouTube, Instagram, Facebook or Threads.
- The user asks what is scheduled, what went live, or why a post failed.
- The user wants a week of posts planned from files on disk or at URLs.
Do not use it to reply to comments, edit video, or connect accounts - Dropslate has no tools for those.
## Tools, in order
1. `dropslate_whoami` - the workspace, its time zone (`workspace.tz`), plan and what this credential may do. Call it first.
2. `dropslate_list_accounts` - the connected accounts and their ids. The only source of account ids. Skip accounts whose `status` is not `ok`.
3. Upload, if there is a file:
- on the user's machine: `dropslate_create_upload {filename, mime, size}` → `{mediaId, uploadUrl}`; then from a local shell `curl -X PUT "<uploadUrl>" -H "Content-Type: <mime>" --data-binary @<file>`; the URL is single-use, valid one hour, and `Content-Length` must equal `size`;
- at a public https URL: `dropslate_upload_from_url {url}`.
4. `dropslate_get_media {mediaId}` until `status` is `ready`. Reuse the same `mediaId` for every post that needs the file; never upload twice.
5. `dropslate_plan_post` - `targets` (`accountIds` or `groupId`), `mediaIds`, `text`, optional `title`, `tags`, `overrides` (a network's own text/title/tags), `perPlatform` (network settings), and `when`: `"now"`, `"draft"`, or `{"publishAt": "2026-09-29T18:00", "timezone": "Europe/Kiev"}` (local time in the workspace's zone). No side effects. Show the returned `table` to the user.
6. `dropslate_create_post` - the same arguments plus `confirm: true`, only after the user confirmed the plan. One post per account comes back, each `queued`.
7. `dropslate_get_post {postId}` - status, `externalUrl` when live, `error` when failed. Report from this.
Also: `dropslate_list_posts` (filter by status, network, account, dates, text), `dropslate_retry_post`, `dropslate_cancel_post`, `dropslate_reschedule_post` (all need `confirm: true`), `dropslate_list_groups`, `dropslate_list_media`, folders, `dropslate_analytics_overview`, `dropslate_analytics_posts`.
## Invariants
Never create, retry, cancel or delete without the user's explicit confirmation. Always call `dropslate_plan_post` and show its table before `dropslate_create_post`. Never guess account ids - take them from `dropslate_list_accounts`. Report results only after the tool returns success, with postId, account and absolute time in the workspace timezone. Reuse the mediaId from the previous upload; never re-upload.
## Reporting format
One line per post, the tool's `statusLine`:
```
Queued. YouTube · What We Made · 28 Sep, 18:00 (Kyiv).
Failed. Threads · @whatwemade · 18 Sep, 18:00 (Kyiv). Threads rejected the post: text exceeds 500 characters.
```
After a plan: the table, then "Nothing is created yet. Confirm?"
## What not to do
- Do not call `dropslate_create_post` without showing the plan and getting a yes; the server refuses without `confirm: true` anyway, but a yes obtained without the table is not consent.
- Do not invent account ids, media ids or times. Ask when the user did not say where or when.
- Do not ask the user to paste an API key into the chat. The key lives in the client's environment.
- Do not report a post as scheduled or published before the tool returned success.
- Do not retry a post whose `error.message` names the file or a field; propose a corrected post instead. Retry helps only after a token was reconnected or a limit passed.
- Do not promise TikTok, X, LinkedIn or Pinterest: they have no connector yet.
## Limits worth knowing
- Text limits per network are in the plan's checks; the docs table is https://docs.dropslate.top/start/media-requirements/. YouTube description 5,000 UTF-8 bytes; Threads 500 characters with emoji counted as bytes; Instagram and Facebook captions in characters.
- 60 `POST /posts` per hour per workspace, 600 requests per 10 minutes per address; a request with several targets counts once.
- On the Free plan and with a read-only key only the 11 read tools are visible; say so instead of trying a hidden tool.
  • When to use - the requests that mean “use Dropslate”, and the ones it cannot help with (no comments, no editing, no connecting accounts).
  • Tools, in order - the sequence every job follows: whoami → list accounts → upload → wait for ready → plan → create with confirm: true → get post.
  • Invariants - the paragraph every Dropslate tool description carries, verbatim, from Safety rules.
  • Reporting format - the status line the product itself uses, so a person reads the same sentence in the chat and in the dashboard.
  • What not to do - the mistakes that matter: creating without a shown plan, invented ids, keys in the chat, reporting before success.

The file is generated with these docs and changes when the tools do; an agent that fetches /skill.md at the start of a session has the current one. The full list of tools with inputs and outputs is the Tools reference; the facts about the product as a list are on What is Dropslate.