Skip to content

AI assistant with approval

The assistant pattern: a person describes what should go out, an agent does the work of uploading, planning and scheduling, and nothing is created until the person approves. In Dropslate the approval is not a convention the agent is asked to follow; dropslate_create_post refuses without confirm: true, and dropslate_plan_post has no side effects, so the agent can plan as often as it likes and create only what was approved. This recipe is the sequence as it happens in a chat.

  • A paid plan (on Free the agent can read, not publish) and an MCP client: Claude.ai or ChatGPT over sign-in, Claude Code or Cursor with an API key - Connect an AI agent.
  • The files: on your computer (Claude Code, Claude Cowork - the agent uploads them from a shell) or at public URLs (any client).
  • Connected accounts; the agent reads them with dropslate_list_accounts.
  1. You: describe the week - files, networks, days, times, tone.
  2. Agent: dropslate_whoami (workspace, time zone, plan), dropslate_list_accounts (real ids).
  3. Agent: uploads each file - dropslate_create_upload then a PUT from your shell, or dropslate_upload_from_url - and polls dropslate_get_media to ready.
  4. Agent: dropslate_plan_post per slot; shows you each table.
  5. You: approve, change a slot, or drop one.
  6. Agent: dropslate_create_post with confirm: true for the approved slots only.
  7. Agent: dropslate_get_post and reports the status line of each.

The conversation, with the calls behind it:

You: Schedule ~/exports/monday.mp4 and ~/exports/friday.mp4 to YouTube and Threads, Monday and Friday at 18:00 Kyiv. Keep the captions short.

The agent calls dropslate_whoami and dropslate_list_accounts, then for each file:

{ "tool": "dropslate_create_upload", "arguments": { "filename": "monday.mp4", "mime": "video/mp4", "size": 48213011 } }

and runs the returned upload from your shell (curl -X PUT "<uploadUrl>" -H "Content-Type: video/mp4" --data-binary @monday.mp4), polling dropslate_get_media until ready. Then:

{
"tool": "dropslate_plan_post",
"arguments": {
"targets": { "accountIds": ["acc_youtube_01", "acc_threads_01"] },
"mediaIds": ["med_8f2a"],
"title": "Monday: the plan for the week",
"text": "The plan for the week, in ninety seconds.",
"when": { "publishAt": "2026-09-28T18:00", "timezone": "Europe/Kiev" },
"overrides": { "threads": { "text": "The plan for the week, in ninety seconds. New video." } },
"perPlatform": { "youtube": { "visibility": "public" }, "threads": { "topicTag": "Planning" } }
}
}

Agent: Plan for Monday:

account network time check
What We Made youtube 28 Sep, 18:00 (Kyiv) ok
@whatwemade threads 28 Sep, 18:00 (Kyiv) ok

Plan for Friday: (the same table for 2 Oct). Nothing is created yet. Confirm both?

You: Yes, but move Friday to 17:00.

The agent re-plans Friday at 17:00, shows the table, and after your yes calls:

{ "tool": "dropslate_create_post", "arguments": { "...same body as the plan...": "", "confirm": true } }

Agent: Queued. YouTube · What We Made · 28 Sep, 18:00 (Kyiv). Queued. Threads · @whatwemade · 28 Sep, 18:00 (Kyiv). Queued. YouTube · What We Made · 2 Oct, 17:00 (Kyiv). Queued. Threads · @whatwemade · 2 Oct, 17:00 (Kyiv).

The report comes after the tool returned success, with the post id, the account and the absolute time in the workspace’s zone - the format every tool description asks for.

Open Queue: four posts, createdVia: mcp in each drawer. Settings → MCP → Last calls lists every tool the agent used, with the result, and mcp.call rows are in the action log. If the agent had called dropslate_create_post without your confirmation, the tool would have answered confirm_required and created nothing; if it had called it with confirm: true without showing you a plan, the posts would exist - which is why the plan-then-confirm rule is in every tool’s description and why a client that lets you see tool calls is worth using.

  • Read-only review. On the Free plan, or with a read key, the agent can list accounts, plan and answer “what is scheduled next week” - nothing else; tools/list shows only the 11 read tools.
  • Correcting a failed post. “Why did Tuesday fail?” - the agent calls dropslate_get_post, reads the network’s message, and proposes dropslate_retry_post (again behind confirm: true) or a corrected re-plan.
  • A pipeline that asks a human. In n8n, the same shape without an LLM: the plan’s table goes to Slack or email, an approval link continues the flow to POST /posts.