Skip to main content
Glama

Schedule note

schedule_note

Schedule a note to Substack, LinkedIn, X, Bluesky, Threads, or any combination. Creates a note draft when draftId is absent. Character limits: Bluesky 300, Threads 500, LinkedIn 3000, X 25000 (posted as a thread). Explicit platformVersions must fit their limits; otherwise overlong platform text is shortened at a sentence boundary, with adjustedPlatforms and warnings returned. Authorized team routing uses workspace and writer. Substack Notes publish from the verified connected profile, not a publication page.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mediaNoOptional media objects supporting image or video bytes as data URIs or base64.
titleNoUsed only when creating a new note draft.
writerNoAuthorized team writer name, handle, or id. "me" selects the linked team voice. Required when a team workspace has multiple writers.
contentNoUsed only when creating a new note draft.
draftIdNoOptional existing note draft id to schedule as-is.
timezoneNoIANA timezone the scheduledFor time above is expressed in (e.g. "Europe/London"). Default UTC.
imageUrlsNoOptional image URLs or image data URIs to attach to the scheduled note.
platformsYes
videoUrlsNoOptional video URLs or video data URIs to attach to the scheduled note.
workspaceNoAuthorized team workspace name or id for team scheduling. Absence selects the authenticated user’s personal account.
firstReplyNoOptional first reply for supported destinations. An invalid reply is omitted per platform without cancelling the root post.
publicationNoRequired when platforms includes Substack: publication name, handle, or URL selected by the user. Notes publish from the profile signed in to that connection, including publications sharing one login. Unverified or mismatched profile identity returns action_required without publishing.
scheduledForYesLocal wall-clock publishing date/time interpreted in timezone, including DST (e.g. "2026-07-01T14:30:00" means 2:30 PM). A Z or explicit UTC offset represents an absolute instant instead.
threadsTopicTagNoOptional Threads topic tag. Threads must be selected; maximum 50 characters.
platformVersionsNoOptional platform-specific text keyed by platform, e.g. { "BLUESKY": "..." }. Each supplied version must fit its limit (Bluesky 300, Threads 500, LinkedIn 3000, X 25000) or nothing is scheduled. Saved as the draft’s platform-specific version.
linkedInAccountIdNoOptional LinkedIn account id for a connected LinkedIn destination. Absence of both this field and linkedInOrganizationUrn selects the configured default.
substackConnectionIdNoLegacy internal Substack connection identifier retained for backward compatibility; publication is the public destination selector.
instagramDestinationsNoInstagram destinations with accountId from connected accounts and optional independent caption. Each account receives its own delivery receipt.
linkedInOrganizationUrnNoOptional LinkedIn Company Page URN for a connected LinkedIn destination. Requires linkedInAccountId.
confirmProfileDestinationNoDeprecated compatibility field. It is ignored and does not override Substack profile routing safety.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNo
countNo
notesNo
statusNo
contextNo
messageNo
nextStepNo
warningsNo
firstReplyNo
sideEffectsNo
createdDraftNo
actionMessageNo
preservedDraftNo
threadsTopicTagNo
connectedAccountNo
adjustedPlatformsNo
preservedScheduleNo
confirmationPromptNo
connectionWarningsNo
linkedinDestinationNo
proposedDestinationNo
substackPublicationNo
requestedPublicationNo
requiresConfirmationNo
substackNoteDestinationNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the annotations (which only declare non-readonly, open-world, non-idempotent, non-destructive) by disclosing character limits per platform, the sentence-boundary truncation behavior with adjustedPlatforms and warnings in the response, the all-or-nothing rule for explicit platformVersions, and Substack profile-routing safety that can return action_required without publishing. These are non-obvious side effects an agent must anticipate.

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 is front-loaded in the first sentence and the remainder is information-dense rather than padded. Some sentences are long and pack multiple constraints (character limits plus truncation plus routing rules) that would read better as a short list, but there is little actual waste.

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 20-parameter, nested-object tool with an output schema, the description covers the high-risk behaviors (draft-vs-draftId path, platform limits, truncation reporting, Substack identity failures) that the schema alone would not convey. It leaves media attachment and Instagram destination handling entirely to the schema, which is a minor remaining gap.

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 already 95%, so the baseline is 3, but the description adds genuine meaning: platform-specific limits tied to platformVersions, team routing via workspace/writer, and the Substack publication/profile requirement. It does not cover media, imageUrls/videoUrls, or instagramDestinations, so it is not exhaustive.

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

Purpose4/5

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

States a specific verb and resource ('Schedule a note') plus the exact set of target platforms, so the agent knows precisely what the tool does. It distinguishes implicitly from the sibling 'schedule_article' by using 'note', but never names or contrasts siblings explicitly, keeping it below a 5.

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

Usage Guidelines3/5

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

Gives useful conditional context — 'Creates a note draft when draftId is absent' and 'Authorized team routing uses workspace and writer' — which helps the agent pick the right call shape. However, it never states when to prefer this tool over siblings like schedule_article or create_draft, nor any explicit exclusions.

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