Skip to main content
Glama

sprkly-mcp

Schedule a post

sprkly_schedule_post

Queue a post for publishing, in ONE call. Attach media by passing the user's link straight to media_urls: sprkly downloads it into storage itself for the platforms that need that, so no upload tool has to run first. Runs the same quota, duplicate-content and platform pre-flight checks as the sprkly app. Instagram and TikTok require media at submission time; YouTube and TikTok require a title, and TikTok also requires platform_meta.tiktok.privacyLevel — just send the level the user asked for and this tool names the allowed values if it is not one of them. It reads the real bytes of the media and the response says what will actually publish on each platform (a Reel, a 3-slide carousel, a photo set, a Page feed video) plus anything worth passing on: relay that to the user. Confirm the date, time and target accounts with the user first. If a target platform has more than one connected account and profile_ids is not given, the tool returns needsAccountChoice with the options instead of scheduling — put that choice to the user, then re-call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleNoPost title. Required for YouTube (max 100 characters) and TikTok (max 150 characters).
captionNoPost caption, max 2200 characters.
categoryNoOptional content category, e.g. "fitness".
media_idNoId of a single media file already uploaded to sprkly. Shorthand for a one-item media_ids.
media_idsNoIds of media files already uploaded to sprkly, in slide order. Array order is the published order. Use these when the user already has media in sprkly, or when one file is going on several posts; for a link the user just gave you, media_urls is fewer steps. Every photo in a set must be the SAME shape or the call is refused: export them all at 1080x1920 (9:16), 1080x1440 (3:4), 1080x1350 (4:5) or 1080x1080 (1:1). Instagram takes at most 10 slides; TikTok photo sets take up to 35.
platformsNoPlatforms to publish to. A platform with exactly one connected account is targeted directly; one with several makes the tool answer needsAccountChoice so the user can pick.
media_urlsNoPublicly reachable image or video URLs to attach, in slide order. Pass links through for ANY platform. Instagram and Threads fetch them directly; for TikTok, YouTube and Facebook sprkly downloads the file into its own storage while scheduling, so a link works there too and any problem with it is reported now, in this call. Google Drive and Dropbox share links are converted automatically. JPEG, PNG, WebP, GIF, MP4, MOV and WebM only: AVIF and HEIC (the iPhone camera default) are refused with re-export instructions, because sprkly cannot convert them. Each file must be publicly reachable and under 50 MB.
profile_idsNoSpecific accounts to publish to, from sprkly_list_profiles. When given, this list IS the target set — platforms are not fanned out.
all_accountsNoExplicitly post to EVERY connected account on every listed platform, skipping the needsAccountChoice question. Only pass true when the user has said they want all accounts.
platform_metaNoPlatform-specific publishing options, keyed by platform.
scheduled_timeNoISO 8601 timestamp to publish at. Must be in the future. If omitted the post goes out on the next publisher run, about a minute from now — there is no smart slot-picking, so pass an explicit time unless the user wants it published immediately. sprkly_get_analytics can suggest one.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations (readOnlyHint=false, openWorldHint=true, idemPotentHint=false, destructiveFint=false) already communicate mutation and open-world behavior, yet the description goes far beyond them: it reveals that the tool performs srprkly's own quota, duplicate-content, and platform pre-flight checks; that it reads the real bytes of media and reports the actual published outcome; that it can answer with a needsAccountChoice sentinel instead of scheduling when profile_ids is omitted; and that refusal messages list allowed values for bad privacyLevels, with 're-export instructions' for unsupported media formats. No annotation contradiction found and the behavioral disclosure is unusually rich for this tool-complexity.

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?

This is a very long description for a very large parameter surface (11 parameters, nested platform_metas objects, no required fields). It is trielsectionally front-loaded: the one-paragraph, your-priority sentence 'Queue a post for publishing, in ONECALL' then ordering by the intrinsic rule statements: industry/media strategies, checks, then platform requirements, then user-confirmation, then the needs-recall case. A few redundancies exist (the same 'required except YouTube/TikTok' and the Instagram/TikTok media-at-submission rule are said in both the top-level description and schema param text), but nothing is padded.

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?

This is a high-complexity tool (11 params, 0 required, 5 platforms, nested platform_meta, no output schema), and description copes with the absence of an output schema by explaining the exceptional result itself: it manifests what actual form each platform will publish, whether media_urls are picked up as a trick, and especially the needsAccountChoice path that instructs the agent to put the option to the user and re-call. It protects against bad calls by telling the agent to confirm date/time/target accounts and to respect user-given title and privacyLevel. There is no next-necessary information about scheduling this non-obvious branch is meaningfully disclosed.

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?

The schema already documents 100% of the parameters in detail, so the baseline is 3. This description adds genuine strategy on top: it tells the agent to prefer a user-supplied link over media_ids and explains why storage/upload is a pre-ocrateme, it instructs that a reqUrl for a Google Drive/Dropbox link be converted automatically to sidestep, that th e allowed media formats are JPEG/PNG/WePB/GIF/MP4/MOV/WeBM, and that the presentation rules require asking the user face-firstiTime vs i-Story on Instagram, otherwise It would fall on a simple lists—which is precisely what adds decision guidance the parameters alone do not convey explicitly.

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 pair and the key differentiator: 'Queue a post for publishing, in ONE call.' The 'in ONE call' phrasing immediately separates it from multi-step publish flows, and the body makes it clear this is the final scheduling action, not a draft, a validation, or a deletion. A reader can distinguish it from siblings like sprkly_draft_post, sprkly_validate_post_policy, and sprkly_delete_scheduled_post 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 concrete when-to-use routing: pass the user's link straight to media_urls instead of running an upload tool; use media_ids when media is already in sprkly or reused across posts; never let the tool guess a Story vs Reel; pass an explicit time instead of relying on auto-publishing, and use sprkly_get_analytics to suggest one; fetch allowed TikTok privacy levels via sprkly_get_tiktok_posting_options. This is strongly actionable. It does not explicitly say 'use draft_post instead for pre-publish planning' or 'use validate_post_policy for a non-committal check,' but the guidance that exists leaves little ambiguity about when this tool fires.

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.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools target distinct resources and actions, and detailed descriptions make subtle differences clear. Minor ambiguity exists between sprkly_list_profiles and sprkly_list_connected_social_accounts, and between sprkly_get_post_status and sprkly_get_post_approval_status, but the descriptions provide enough context to disambiguate.

Naming Consistency5/5

All tools share the sprkly_ prefix and use a snake_case verb_noun pattern. Read operations are consistently split between get_ for singular/detail and list_ for plural collections, with action verbs like schedule, draft, delete, request, and validate following the same clear style.

Tool Count4/5

18 tools is on the heavier side, but the server covers a broad social media workflow spanning scheduling, approvals, analytics, billing, and automation templates. A few tools are explicitly optional, like sprkly_add_media_from_url and sprkly_get_tiktok_posting_options, so the set could be tightened slightly, but the count remains defensible for the scope.

Completeness4/5

The core post lifecycle is well covered: draft, validate, schedule, update, delete, get status, and approval flow. Minor gaps exist around draft/media library management and automation template listing/deletion, but agents can accomplish the main scheduling tasks without dead ends.

Resources