Skip to main content
Glama

set_post

Write or revise a session's LinkedIn, X, YouTube, or vertical post, including threads, titles, captions, media, variants, and first comments. Fix selected-text comments; keep old versions in history.

Instructions

Write the session's post for LinkedIn (default, posts/linkedin.md) or X (platform=x, posts/x.md). One session holds one post per platform, so the LinkedIn post and its X version sit together. LinkedIn: the app shows a real LinkedIn feed post with the video, cut after three lines with '…more', so put the hook in the first two lines. Max 3000 characters. X: the app shows a real X post, or a thread when you pass several tweets (tweets=[...], or text with a line holding only '---' between tweets). The media goes on the first tweet. The timeline cuts a tweet over 280 characters with 'Show more' (the user has Premium, so longer is allowed). The user edits the post in the app and comments on selected text; fix those comments with set_post. YouTube (platform=youtube): the long wide video. Pass title (max 100) and the description as text (chapters as '0:00 Intro' lines). Vertical (platform=vertical, also for tiktok/reels/shorts): one caption for TikTok, Instagram Reels and YouTube Shorts with the 9:16 edit; hook in the first line, max 2200 characters, at most 5 hashtags; title is the Shorts title, on picks the places. The old text stays in history. get_session returns them as 'post', 'x_post', 'youtube_post', 'vertical_post'. Posts are plain text only: they show no markdown. No video? The post works without one (text only, or pass an image). For other versions use create_post_variants; for opening options set_post_hooks. With variant= it edits that variant instead of the main post.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
onNovertical only: where it goes. Default all three.
nameNoWith variant: rename it.
noteNoWhat changed, e.g. 'Shorter hook'.
textNoThe whole post, as it will appear.
mediaNoOptional: the video or image to show, e.g. 'edits/hook-v3.mp4'. Default: the newest edit.
titleNoyoutube: the video title. vertical: the Shorts title (empty: YouTube uses the caption's first line). Max 100 characters.
tweetsNoX only, instead of text: the tweets of a thread in order (one item = one tweet).
sessionYesSession as 'Project/folder', an absolute path, or its id (from get_session). An old path still works after a rename or move.
variantNoOptional: edit this post variant (slug) instead of the main post.
platformNoWhich post of the session: linkedin (default, posts/linkedin.md), x (posts/x.md), youtube (the long wide video: title + description, posts/youtube.md) or vertical (one vertical video and caption for TikTok, Instagram Reels and YouTube Shorts, posts/vertical.md).
first_commentNoLinkedIn only. Optional: the first comment the user posts under it (links, resources, a question). The app shows it under the post as the user's comment. One per session, shared by the variants. Empty string removes it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare it is a write (readOnlyHint=false) and non-destructive. The description adds substantial context the annotations cannot: per-platform character limits, the '---' thread separator, media placement on the first tweet, plain-text-only behavior, old text preserved in history, and how get_session surfaces each post. It does not detail auth or rate limits, keeping it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the primary verb and targets, but it is dense and overlong for a single tool, packing platform-specific rules and edge cases into one paragraph. Each platform block earns its place, yet the size hurts scannability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, multi-platform write tool with no output schema, the description covers platform selection, text/media/title/tweets usage, history behavior, comment-fixing workflow, and the no-video case. Nothing essential to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description meaningfully enriches it: max 3000 chars (LinkedIn), 280/Premium note (X), 2200 chars with at most 5 hashtags (vertical), title max 100, and the '0:00 Intro' chapter syntax for YouTube text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Write) and resource (the session's post per platform), and clearly distinguishes the four platform targets, listing the file each one writes to (posts/linkedin.md, posts/x.md, etc.). An agent can tell this apart from create_post_variants, set_post_hooks, and set_post_status without opening other schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes to alternatives: 'For other versions use create_post_variants; for opening options set_post_hooks.' It also tells the agent when to re-invoke set_post (to fix app comments) and how variants relate via variant=<slug>.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.