Drafts, Previews and Cancels: The LinkedIn Workflow Inside a Chat
create_draft to save, update_draft to refine, publish_post to preview and approve, and cancel_scheduled_post or delete_post to undo.Most people meet a LinkedIn tool at the wrong moment. They arrive with a finished thought, publish it, and never touch the tool again for a fortnight. The daily reality is messier: an idea turns up in the middle of something else, it is half a sentence long, and it needs to sit somewhere until you have time for it.
That is what drafts are for. This article walks through the whole loop end to end — capture, refine, preview, approve, undo — and names the tool doing each job, so you can picture what using it every day actually feels like.
What is a draft in a LinkedIn MCP server?
A draft is a post saved on the server, not on LinkedIn. LinkedIn has its own drafts feature inside its app, but that is a separate place; nothing here writes to it. A draft in Kalovio lives in Kalovio’s own database, tied to your account, and it does nothing at all until you ask for it again.
MCP — the Model Context Protocol, an open standard for connecting AI assistants like Claude or ChatGPT to outside tools — is what carries these requests. The assistant does not know how to save a draft. It calls a named tool on the server, and the server does the work. That distinction matters later, when we get to previews.
Four tools cover the draft lifecycle, and one more removes it:
| Tool | What it does |
|---|---|
create_draft | Saves text as a new draft and returns its id |
list_drafts | Shows what you have saved, so you can pick one |
get_draft | Pulls back the full text of one draft |
update_draft | Replaces the text of an existing draft |
delete_draft | Removes a draft you no longer want |
None of these touch LinkedIn. Creating, editing and deleting drafts is entirely local to the server, which is why it is the low-stakes half of the workflow. You can be messy here.
How do I capture an idea before it disappears?
You say it out loud in the chat. Something like “save this as a draft: three things I got wrong about pricing this year”. The assistant calls create_draft, the server stores it, and you get an id back — a short reference you or the assistant can use to find it again.
The point is that capture costs nothing. There is no editor to open, no scheduling decision to make, no image to choose. A one-line idea is a perfectly good draft. Most of the value of a drafts system is that it lowers the price of writing something down when it occurs to you.
The 3000 character limit applies to drafts too. LinkedIn caps post text at 3000 characters, and Kalovio enforces the same ceiling when you save a draft rather than letting you find out at publish time. If a long draft is refused, that is the reason — trim it and save again.
How do I find a draft again and change it?
Ask what you have saved. list_drafts returns your drafts so you can recognise the one you want; get_draft brings back its full text so you and the assistant are both looking at the same words.
This is where the chat interface earns its keep. Once the draft text is in front of the model, editing is a conversation: make the opening blunter, cut the last paragraph, turn the middle into three short lines. When you are happy, update_draft writes the new version over the old one under the same id.
Worth knowing: update_draft replaces the text rather than keeping a history of versions. If a particular phrasing matters to you, keep it in the conversation or save a second draft before you overwrite the first.
Drafts you decide against are removed with delete_draft. Since a draft never reached LinkedIn, deleting one has no public consequence at all — there is nothing out there to clean up.
Why does nothing publish on the first call?
Here is the part that surprises people, and the part that is most deliberate.
When you say “publish it”, the assistant calls publish_post — and nothing goes out. Instead the server returns a preview of the exact post it is prepared to send, plus a preview token: a signed string that acts as a fingerprint of that exact content. The post only publishes when a second call arrives carrying a confirmation and a matching token.
Two things follow from that design, and both are worth having.
You always see the real text before it goes out. Not the model’s summary of what it plans to post — the actual content the server is holding, including the caption, any attached image or document, any tagged company, and any link. If the model quietly rewrote your closing line, you find out at the preview and not on your feed.
Hidden instructions cannot publish for you. The real hazard with AI assistants is prompt injection: instructions buried in a web page, an email or a document that the model reads and treats as a request. A tool that publishes on its first call is one bad page away from posting something you never wrote. Because the token is signed over the exact content, a swapped or altered post fails the check, and an injected instruction has no way to produce your approval.
The same two-step gate covers schedule_post, queue_posts and delete_post. Anything that changes the outside world asks twice.
What does the preview actually show?
The preview is meant to be read, not skimmed past. It sets out the caption as it will appear, what is attached, when it will go out, and where any tracked link points. If a caption is empty because you are posting an image or a PDF on its own, the preview says so plainly rather than pretending there is text.
Approving is one message: yes, publish that. The confirmation and token go back to the server, the server posts to LinkedIn through the official API, and you get the result. If you say no, nothing has happened at all — the preview call did not reserve anything or half-create anything.
What if I want it out on Tuesday instead of now?
Swap publish_post for schedule_post. The flow is identical: preview first, token, approve. The difference is that the server stores the post and publishes it at the time you named, up to a year ahead.
list_scheduled_posts shows what is queued and when. This is the view worth checking once a week, because scheduled work is the kind that quietly drifts out of date — an announcement that already happened, a link that moved, a tone that no longer fits.
I changed my mind. How do I undo it?
There are two different undos, and the difference between them matters.
Before it publishes, use cancel_scheduled_post. The queued post is removed and never reaches LinkedIn. Nothing was public, so there is nothing to explain.
After it publishes, use delete_post. This removes a live post from LinkedIn, and like every acting tool it is two-step: you get a preview of exactly which post is about to be removed, and it only goes when you confirm. That preview is the difference between deleting the post you meant and deleting the one above it.
What can delete_post not do?
It only reaches posts Kalovio published. If you wrote a post in the LinkedIn app, or through another tool, Kalovio cannot delete it — and cannot see it either. The permission that would let a self-serve app read your wider post history, r_member_social, is closed by LinkedIn and not available. So list_published_posts shows what went out through Kalovio, and delete_post works on that same set. For anything else, use LinkedIn directly.
That limit is worth stating plainly because some tools blur it. It is a LinkedIn permission boundary, not a missing feature, and no self-serve app gets around it.
What does the loop look like in a normal week?
Put together, the rhythm is fairly plain:
- During the week, ideas land as one-line drafts through
create_draft. No decisions attached. - When you have half an hour,
list_draftsthenget_draftto pull one back, a few rounds of editing in the chat,update_draftto save the better version. - When one is ready,
publish_postorschedule_post, read the preview properly, approve. - Once a week,
list_scheduled_poststo see what is still coming andcancel_scheduled_postfor anything that has gone stale. - Rarely,
delete_postfor something that went out and should not have — as long as it went out through Kalovio.
What makes this workable is not that the assistant is clever. It is that the risky steps are gated and the cheap steps are free. Saving a draft costs nothing, so you save more of them. Publishing asks for your approval of the exact wording, so you keep control of the one thing that is genuinely public.
Questions people ask
Do LinkedIn MCP drafts show up in LinkedIn's own drafts?
No. A draft created with create_draft is stored on the Kalovio server against your account, not written into LinkedIn. LinkedIn’s drafts feature inside its own app is separate, and the two do not sync in either direction. Only a confirmed publish_post or a scheduled post reaches LinkedIn.
Can the AI publish a draft without asking me?
No. publish_post, schedule_post, queue_posts and delete_post are all two-step. The first call returns a preview plus a token signed over the exact content, and nothing is sent until a second call arrives with your confirmation and a matching token. That gate exists specifically so hidden instructions in content the model reads cannot post on your behalf.
How long can a LinkedIn draft be?
Up to 3000 characters, the same limit LinkedIn applies to post text. The limit is checked when the draft is saved rather than at publish time, so a long draft is refused early instead of failing later. Trim it and save again.
Can I delete a LinkedIn post I made by hand?
Not through Kalovio. delete_post only works on posts that Kalovio published, because LinkedIn does not let self-serve apps read a member’s wider post history — the permission for that, r_member_social, is closed. Delete anything posted elsewhere from the LinkedIn app or website directly.
What is the difference between cancelling and deleting a post?
cancel_scheduled_post removes a post that has not published yet, so it never becomes public. delete_post removes one that is already live on LinkedIn. Cancelling is invisible to everyone else; deleting is not, because the post existed for a while.
Can I edit a draft after saving it?
Yes. Use get_draft to pull the current text back into the conversation, edit it there, and update_draft to save the new version under the same id. Note that the update replaces the text rather than keeping past versions, so save a second draft first if a particular phrasing is worth keeping.
Sources
Try Kalovio free
Run your LinkedIn from a chat with Claude or ChatGPT. Add this as a custom connector — free while in beta, and you approve every post before it goes live.
https://kalovio.com/mcpHow to connect