Skip to main content
Glama

Schedule article

schedule_article

Schedule an article to Substack, Medium, LinkedIn Articles, or X. Creates an article draft when draftId is absent. Supports cover and inline images, Substack-only inline video, and destination-specific SEO metadata. Substack supports native paywall and subscribe controls at explicit positions in contentHtml; ordinary links remain links. Audience and email delivery are controlled by the supplied fields. LinkedIn Articles requires a separate browser-session connection from regular posts; pending session sync saves new input as a draft without scheduling. Returns scheduling outcomes and advisories.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tag list for newly created drafts. Substack receives all supplied tags. Medium receives its supported first 5 topics and returns a warning when extras are omitted. The saved draft remains unchanged.
mediaNoOptional inline images or Substack article videos for a newly created draft. Replaces {{media:N}} placeholders in array order; leftovers are appended. kind defaults to image; video requires Substack as the sole platform. Supports public URLs, data URIs, and base64 bytes.
titleNoRequired when creating a new draft.
draftIdNoOptional existing article draft id to schedule as-is.
subtitleNoOptional article subtitle for newly created drafts. Substack omits subtitles over 250 characters and returns a warning without changing the saved draft.
timezoneNoIANA timezone the scheduledFor time(s) above are expressed in (e.g. "Europe/London"). Default UTC.
platformsYes
coverImageNoOptional cover image for a newly created draft, placed at the top of the published body. Supports public HTTPS URLs, data URIs, or base64 image bytes. URL ingestion depends on source-host access.
contentHtmlNoRequired when creating a new draft. Supports public <img> or <video> elements and {{media:N}} placeholders resolved from media entries. Video articles require Substack as the sole platform. Native Substack paywall markup is <hr data-type="paywall"> at the selected paragraph boundary, or a single {{NARRAREACH_PAYWALL}} token; paywallMarker supports custom tokens. Native subscribe block markup is <div data-type="button" data-kind="subscribeCaption" data-text="Subscribe" data-caption="Your caption"></div> with HTML-escaped attribute values. data-kind="subscribe" represents a button without caption. Ordinary links remain links.
publicationNoSubstack destination as a publication name, handle, or URL, for example "AI Newsroom", "@theainewsroom", or "https://theainewsroom.substack.com". Optional when exactly one active Substack publication is connected; Narrareach selects it automatically. Required when more than one active Substack publication is connected.
scheduledForNoShared local wall-clock publishing date/time interpreted in timezone, including DST. A Z or explicit UTC offset represents an absolute instant. LinkedIn articles require at least 20 minutes of lead time.
isPaidContentNoWhether the Substack article is paid-only. Default false.
paywallMarkerNoOptional custom marker in contentHtml where the selected free preview ends; must appear exactly once. The standard {{NARRAREACH_PAYWALL}} marker is recognized without this field. Creates a native paywall and enables paid access without changing sendToNewsletter.
sendToNewsletterNoSubstack email delivery setting. Default true.
addSearchMetadataNoGenerate SEO titles, descriptions, and a Substack slug for supported article destinations. Requires article SEO access. X does not expose separate article SEO settings.
linkedinAuthorUrnNoLinkedIn personal profile or Company Page author URN belonging to the connected LinkedIn Articles account.
platformSchedulesNoOptional per-platform overrides taking precedence over scheduledFor. Same wall-clock + timezone rule applies to each scheduledFor here; LinkedIn entries require at least 20 minutes of lead time.
mediumPublicationIdNoOptional authorized Medium publication id when platforms includes MEDIUM. Absent means the personal profile. Writer-only access submits for editorial review and leaves the story unscheduled until acceptance. Explicit publication rejection allows personal-profile delivery with a warning; ambiguous submissions remain unpublished for review. Draft-only delivery does not submit to a publication.
substackConnectionIdNoLegacy internal Substack connection identifier retained for backward compatibility; publication is the public destination selector.
linkedinNewsletterUrnNoLinkedIn newsletter URN belonging to the connected LinkedIn Articles account. Required when linkedinPublicationType is newsletter.
mediumNotifyFollowersNoWhether to email Medium subscribers about this story. Only valid when platforms includes MEDIUM. Defaults to false (no email). Best-effort: a failure to apply this setting never blocks the publish/schedule and is reported as a warning.
linkedinPublicationTypeNoLinkedIn destination type. Defaults to an individual article; newsletter represents a user-selected newsletter destination.
linkedinShareCommentaryNoOptional LinkedIn share text used when publishing a LinkedIn article.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
postsYes
warningsYes
advisoriesNo
createdDraftYes
connectedAccountNo
substackPublicationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, not idempotent, open world), and the description adds real behavioral context beyond them: draft creation vs. scheduling an existing draft, Substack-only paywall/subscribe markup behavior, and the LinkedIn session-sync fallback that silently saves as a draft. It does not discuss retry/rate semantics, hence not a 5.

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

Conciseness4/5

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

Purpose and primary mode selection are front-loaded, and each sentence carries distinct information (draft creation, media/paywall rules, LinkedIn caveat, return advisories). It is dense but not padded; a slightly tighter grouping of the Substack paywall sentences would earn a 5.

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

Completeness4/5

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

For a 23-parameter multi-destination tool, the description covers the cross-cutting behaviors an agent needs (draft-vs-schedule branch, destination constraints, degradation paths) and an output schema handles return values. It omits guidance on which sibling to use for amending or cancelling already-scheduled items, leaving a small gap.

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

Parameters3/5

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

Schema description coverage is 96%, so the schema already documents nearly every parameter in depth; the baseline is 3. The description's parameter-level statements (media/video requires Substack as sole platform, paywall markers create native paywalls, audience/email governed by supplied fields) largely restate schema text rather than adding new interpretation.

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?

Opens with a specific verb+resource+destination scope ('Schedule an article to Substack, Medium, LinkedIn Articles, or X') and immediately states the draft-creation behavior. An agent can distinguish it from schedule_note, create_draft, and reschedule_scheduled_item without opening the schema.

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

Usage Guidelines4/5

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

Gives clear situational context: draftId absent means a new draft is created, LinkedIn Articles needs a separate browser-session connection, and a pending session sync degrades to draft-without-scheduling. It does not name sibling alternatives (e.g. amend_scheduled_item, reschedule_scheduled_item) for when-not scenarios, so it stops short of a 5.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources