gen_publish_action
shallowio.github.poweredbyGEN/gen-mcp-server · Verify this server
Step 5 (Export & Publish): Ship posts to social platforms — schedule, publish, update, or remove posts. One call carries one or more typed actions: schedule_post_<platform> (media_url and that platform's fields; schedule_type 'now' or 'specific_time' with scheduled_time; a field of another platform is rejected) | publish_content (platform + media_url + description + schedule_type) | update_scheduled_post (post_id + fields) | delete_scheduled_post (post_id) | update_published_post (post_id + at least one of title/description/tags/category_id) | delete_published_post (post_id; removes a post that is ALREADY LIVE and is two-phase — resend with confirm_token) | disconnect_social (platform; disconnects that account and is two-phase — resend with confirm_token). Reconnecting or refreshing an account is gen_discover publish.connect_url only — never disconnect_social first; connecting again replaces the old token. Publishing is irreversible: confirm destination and content with the user first. Do NOT edit videos here — the vidsheet action owns the canvas, and it is never the ship path. publish_content / schedule_post_<platform> / disconnect_social is the first call for those verbs, even when the user says 'all connected socials' or has not attached the post content yet — publishing resolves the connected accounts and the action names any missing media_url/description; 'disconnect my <platform>' is disconnect_social here, never a publish.connections read. Setting which platforms the agent posts to — 'make me post on YouTube and TikTok' with no content or schedule to ship — is gen_agent_action set_profile target_platforms, not schedule_post here. Read gen_discover publish.connections or publish.rules only when the user asks what is connected or what a rule is, not before publishing or disconnecting. Publishing is asynchronous even for 'now' — poll the gen_discover publish.post_status view with the returned post_id. The legacy publish tool names are retired; use this dispatcher. platform: tiktok | instagram | facebook | youtube | x | linkedin. Per-platform scheduling rules (also the gen_discover publish.rules view): tiktok: media required, video/image, 1 item, text <= 2200 chars; requires tiktok_privacy_level, tiktok_disable_comment, tiktok_disable_duet, tiktok_disable_stitch instagram: media required, video/image, up to 10 items, text <= 2200 chars; options via instagram_music (mode, track_url) facebook: media required, video, 1 item, text <= 63206 chars; title <= 255 chars youtube: media required, video, 1 item, text <= 5000 chars; title <= 100 chars; requires title; options via youtube_options (category_id, made_for_kids, notify_subscribers, shorts, tags, visibility) x: text or media, video/image, up to 4 items, text <= 280 chars linkedin: text or media, video/image/document, up to 9 items, text <= 3000 chars; title <= 400 chars; options via linkedin_options (alt_text, carousel, visibility) Update a post that is ALREADY LIVE via update_published_post — fix a typo, retitle, change tags or category. What each platform can still change once published: tiktok: no post-publication edit instagram: no post-publication edit facebook: no post-publication edit youtube: title, description, tags, category_id x: no post-publication edit linkedin: description Sparse: send only the fields you want changed and every other field on the live post is preserved. The reply carries one result per platform: `updated` (with the readback), `unsupported_after_publish` (the network has no edit path — nothing was touched), `reauthorization_required` (the user must reconnect that account) or `failed` with the platform's reason. Delete a post that is ALREADY LIVE via delete_published_post — it is two-phase: the first call previews and returns a CONFIRMATION_REQUIRED confirm_token, and only the exact retry presenting that token deletes. The reply carries one result per platform: `deleted`, `already_deleted` (GEN already removed it), `unsupported_after_publish` (the network has no delete path — nothing was touched), `reauthorization_required` (the user must reconnect that account) or `failed` with the platform's reason. timezone_offset on schedule_post_<platform> is the local UTC offset in hours (e.g. -7 for LA daylight); on publish_content it is minutes.
1 trials · measured 1 day ago
gen_publish_action scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against io.github.poweredbyGEN/gen-mcp-server, measured 6 Oct 2026 under methodology v0.2.0. Every measured component scored 100.
Component breakdown
| Component | Weight | Value |
|---|---|---|
| Reliability | 35% | not applicable |
| Schema integrity | 25% | 100.0 |
| Failure behaviour | 15% | not applicable |
| Latency | 15% | not applicable |
| Concurrency | 10% | not applicable |
Tool details
- Transport
- remote
- Credential class
- gated
- Input schema
- not declared
- Output schema
- not declared
- Side-effect classification
- unclassified
Score history
| Day | Score | Tier | Methodology |
|---|---|---|---|
| 2026-10-06 | 100.0 | shallow | v0.2.0 |
Probe evidence
| Probe | Outcomes |
|---|---|
| schema_integrity | pass: 1 |
Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.
Embed this score
Available for every tool, scored or not — not a verification perk. Always links back to this page.
[](https://vouch.tools/tools/489a7f68-09bd-4a0f-8ddf-c694c1493b3f)