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.
---name: dropslatedescription: 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.What is in it
Section titled “What is in it”- 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.
Keeping it current
Section titled “Keeping it current”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.