sprkly
Server Details
Schedule, publish and track social posts across TikTok, Instagram, Threads and YouTube Shorts.
- Status
- Healthy
- Uptime
- 100.0% over 64 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 31 tools
Most tools target clearly distinct resources and actions (schedule vs. draft vs. update vs. delete, list vs. get vs. reply for inbox), and the descriptions go out of their way to say when NOT to use a tool (add_media_from_url, get_tiktok_posting_options, validate_post_policy). The residual overlap is the three ways to get media in (add_media_from_url, upload_media, and inline media_urls on schedule_post) and the two paths to approval (request_post_approval vs. requires_approval on schedule_post), which are explained but still leave a judgment call.
Every tool is prefixed with sprkly_ and follows a consistent snake_case verb_noun pattern (list_, get_, create_, update_, delete_, reply_to_, request_). No camelCase or mixed styles; even the longer names like sprkly_import_automation_template and sprkly_get_post_approval_status read predictably.
31 tools is on the heavy side for a single integration surface, and a few of them are self-described as rarely needed (add_media_from_url, get_tiktok_posting_options, validate_post_policy). The breadth is partly justified because the domain genuinely spans posting, automations, inbox, leads, analytics and billing, but it sits at the upper limit before agents start losing track of the surface.
Strong lifecycle coverage: draft → validate → schedule → update → delete → status, plus approval request/status and full automation lifecycle (templates, create, import/export, pause/resume, usage) and inbox read/reply. Minor gaps remain — no way to cancel a pending approval request, no unpublish or edit of published posts, and no inbox mark-read/mute — but these are edge cases rather than dead ends.
Available Tools
31 toolssprkly_add_media_from_urlAdd media from a URLAIdempotentInspect
Download an image or video from a public link into sprkly and get a media_id back, for reuse across several posts. You usually do NOT need this: sprkly_schedule_post accepts a link directly in media_urls and pulls it into storage itself whenever the target platform requires that. Reach for this tool only when the user wants one media_id to attach to more than one post. Google Drive and Dropbox share links are converted automatically; the file must be shared publicly. Limit 50 MB.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Direct https link to the image or video file. Must be publicly reachable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavioral details: files are downloaded into storage, Google Drive and Dropbox share links are converted automatically, the file must be publicly shared, and there is a 50 MB limit. These are useful execution traits not expressed in the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: it opens with the primary action and output, then provides a clear when-not-to-use note, then adds the key constraints. Every sentence carries useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool, the description is complete: it explains the returned media_id, the reuse purpose, the relationship to schedule_post, supported link conversion, public-access requirement, and size limit. Even with no output schema, the agent knows what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the url parameter well, including that it must be a direct https link and publicly reachable. The description adds extra semantic context—conversion of Google Drive/Dropbox share links and the 50 MB size restriction—which helps the agent choose appropriate input values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—'Download an image or video from a public link into sprkly and get a media_id back'—and clearly distinguishes it from the sibling sprkly_schedule_post, which accepts media URLs directly. This makes the tool's unique role immediately clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when the tool is not needed ('You usually do NOT need this'), identifies the alternative tool, and gives the exact condition for using this tool: when the user needs one media_id reused across more than one post. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_create_automation_from_templateSet up an automationAInspect
Set up one ready-made automation on one Instagram account and turn it on. This is the same as Go live in the app. It starts replying to real people right away, so show the user the template, the account, the word and the link first. Pass template_id from sprkly_list_automation_templates and profile_id from sprkly_list_profiles. If asks_for has post, pass post_id: a published Instagram post on that account. If it does not, leave post_id out. If asks_for has link, pass a full https link. keyword is optional and defaults to the template's word. message is optional and replaces the DM, or the public reply on a template that only replies in the comments. On first-comment-on-post, message is required: the comment sprkly adds under each new Instagram post it publishes on that account (up to 2,200 characters). That one is on Creator and Power, and an account can have one live. The coupon template is refused until message holds the real code instead of YOUR-CODE. If asks_for has faq, pass faq: 1 to 10 { keyword, answer } pairs. Each pair becomes its own automation that answers a DM of that word. fallback is optional there and becomes the account's default reply, for a DM with none of the words. It replaces any default reply already on that account, and turns it on if it was off, so tell the user first. A word another live automation already answers is refused. Calling again with the same list skips the words already live. Use sprkly_pause_automation to stop it.
| Name | Required | Description | Default |
|---|---|---|---|
| faq | No | Only when asks_for has faq. The words people DM you and the answer each one gets. | |
| link | No | The https link the DM sends. Only when the template asks for a link. | |
| keyword | No | The word people comment or send. Defaults to the template's word. | |
| message | No | Your own words for the DM, for the public reply on a reply-only template, or for the comment on first-comment-on-post. | |
| post_id | No | The published Instagram post to watch. Only when the template asks for a post. | |
| fallback | No | Only with faq. The reply to a DM with none of the words. It replaces any default reply on the account and turns it on. | |
| profile_id | Yes | The Instagram account to set it up on. | |
| template_id | Yes | The template id from sprkly_list_automation_templates. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations: discloses it goes live immediately and replies to real people, warns of destructive-ish overwrite (fallback replaces any default reply and turns it on, so tell the user first), documents plan gating (Creator/Power, one live per account), refusal conditions (coupon template, already-live word), and re-call behavior (same list skips already-live words).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the confirmation step, and every sentence carries information. It is dense and run-on in places (faq/fallback clauses), costing a bit of parseability, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation tool with no output schema, the description covers activation effects, conditional parameter rules, plan limits, refusal/skip behavior, and the stop-tool handoff. Nothing an agent needs to invoke it safely is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage the baseline is 3, but the description adds genuine conditional semantics: post_id only when asks_for has post, link must be https, keyword defaults to the template's word, message required and highlighted on first-comment-on-post, faq triggers one automation per {keyword,answer} pair, fallback behavior. This is meaning the schema alone doesn't convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set up one ready-made automation on one Instagram account and turn it on') and clearly differentiates from siblings by naming sprkly_list_automation_templates, sprkly_list_profiles, and sprkly_pause_automation. An agent can tell exactly what this does versus list-templates or pause-automation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the prerequisites (template_id from sprkly_list_automation_templates, profile_id from sprkly_list_profiles), says to show the user the template/account/word/link first, gives conditional branching on asks_for (post/link/faq), and names sprkly_pause_automation as the stop path. This is a full when/how/alternatives map.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_delete_scheduled_postDelete a scheduled postADestructiveIdempotentInspect
Remove a post from the queue. This is a soft delete. The user can restore it from the Deleted tab for 30 days. Posts that have already published cannot be deleted this way. Always confirm with the user before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | The scheduled post id to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructiveHint: true), the description reveals critical behavioral traits: this is a soft delete with a 30-day recovery window, restorable from the Deleted tab. This tells the agent the action is reversible and explains the irreversible boundary ('Posts that have already published cannot be deleted this way'). The confirmation requirement is an additional behavioral context that no annotation captures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five concise sentences, each adding distinct value: purpose, delete type, recovery detail, limitation, and safety instruction. The text is front-loaded with the core action and contains zero fluff or redundant restatement of the title or annotations. Perfectly sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 1 parameter, no output schema, and rich metadata annotations, the description is complete: it covers the purpose, soft-delete behavior, recovery period, edge-case limitation (published posts), and safety requirement. Without an output schema specified, the description need not explain return values. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 100% (the single post_id parameter is fully documented in the schema) and only 1 parameter, the description doesn't need to add much parameter-level detail. The description does not elaborate on the id format or how to obtain it, but does reinforce the parameter's meaning by referencing 'a post' being removed from the queue. Baseline of 3 is appropriate since the schema already handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Remove a post from the queue', a direct verb+resource statement that clearly conveys the tool's purpose. The title 'Delete a scheduled post' and the description together unambiguously distinguish this from sibling tools like 'sprkly_update_scheduled_post' and 'sprkly_draft_post', leaving no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it states when to use this tool ('Remove a post from the queue') and when not to ('Posts that have already published cannot be deleted this way'). Crucially, it includes a mandatory human-safety guardrail: 'Always confirm with the user before calling.' These exclusions and instructions go well beyond a generic usage note, offering clear when-to and when-not-to guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_draft_postDraft a postAInspect
Compose a caption from a content hint and save it as a draft in sprkly, shaped to the tightest caption limit among the target platforms. Returns a draft id; the draft appears under /drafts for the user to review.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional label for the draft. | |
| tone | No | Voice for the draft. | casual |
| platforms | No | Intended platforms, used to pick the caption length ceiling. | |
| profile_ids | No | Optional accounts to pre-select on the draft. From sprkly_list_profiles. | |
| content_hint | Yes | What the post should be about: a topic, phrase, or key message. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the safe/non-destructive profile, but the description adds real behavior beyond them: the caption is truncated to the tightest limit among the target platforms, a draft id is returned, and the draft surfaces under /drafts for review. It omits that the call is non-idempotent (repeated calls create separate drafts) and says nothing about auth or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the action and the most non-obvious behavior (tightest caption limit) front-loaded and the return/review consequence trailing. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create tool with no output schema, the description covers the action, the shaping rule, and the return value (a draft id) and where the artifact lands. It stops short of stating any prerequisite account/profile context, which is a minor gap against a 5-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all five parameters and the enum values. The description adds only the conceptual framing that platforms drive the caption length ceiling, which the platform param description already states, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('compose a caption ... save it as a draft in sprkly') plus the scope of the computation ('shaped to the tightest caption limit among the target platforms'). It is distinguishable from sprkly_schedule_post by the draft-not-scheduled outcome, but it never names that sibling or any alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'save it as a draft ... for the user to review' suggests this is the pre-publication step before scheduling, but there is no explicit when-to-use statement, no condition that selects this over sprkly_schedule_post, and no prerequisites (e.g. whether a connected account or profile is required).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_export_automation_templateExport an auto reply templateARead-onlyInspect
Download one Instagram auto reply as a shareable template. The file holds the trigger, the keyword and the message, and never a post id, a profile id or any account details, so it is safe to send to someone else. An auto reply that is still a draft has nothing published to export. Needs a connected Instagram account.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The automation id to export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is partly covered. The description goes further and discloses the export's contents (trigger, keyword, message), the guarantee that no post id, profile id or account details are included, and the draft-automation failure case – useful context not present in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, each carrying distinct information (what is exported, what is excluded, and the draft/account constraints). No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, but the description compensates by describing what the produced template file holds and what it deliberately excludes. Combined with the read-only annotation and the single required parameter, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter is self-explanatory. The description implies the id refers to one Instagram auto reply but adds no syntax or format detail beyond the schema, matching the baseline for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope: 'Download one Instagram auto reply as a shareable template.' It is unambiguous and clearly distinguishable from siblings such as import_automation_template, list_automation_templates and create_automation_from_template, which move templates in the opposite direction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a precondition ('Needs a connected Instagram account') and an implied when-not case ('An auto reply that is still a draft has nothing published to export'), which tells the agent to expect failure for draft automations. It stops short of naming an alternative tool, so it is clear context rather than a full when/when-not/alternatives statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_account_summaryGet account summaryARead-onlyInspect
Plan tier, trial state, connected account count, scheduled post counts by status, and the next three upcoming posts. Never returns tokens or secrets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds a meaningful behavioral guarantee: 'Never returns tokens or secrets.' This security-related disclosure goes beyond the annotations and is valuable for safe invocation, though it does not cover other potential behaviors like caching or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the returned data elements and ends with a security note. Every word contributes value, with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description carries the full burden of explaining what the tool returns. It covers the main data categories sufficiently for a summary tool, though it omits details like exact field names or status values. Overall, it is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline for this dimension is 4. The description correctly avoids mentioning parameters, and nothing more is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly enumerates what the tool returns: plan tier, trial state, connected account count, scheduled post counts by status, and next three upcoming posts. This makes the resource and scope unambiguous and distinguishes it from siblings like sprkly_get_billing_summary and sprkly_get_analytics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or sibling tools for comparison, leaving the agent to infer usage context from the data content alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_analyticsGet post performanceRead-onlyInspect
How the user's published posts actually performed: total views and engagement, week-on-week / month-on-month / year-on-year change, their best posting hour, weekday and content category, and the top posts behind those numbers. Every recommendation carries a samples count: say how thin the evidence is rather than presenting a one-post pattern as a finding. Every period-on-period percentage carries the post counts and raw totals it came from: quote those, because a big percentage off a tiny base is not a big change. topPosts is grouped by platform and ranked only inside each group; relativeToPlatformBest compares a post with others on its OWN platform and never across platforms, so use the absolute value and its metric label to weigh one platform against another. Instagram contributes reach, saves, shares and views only for accounts connected or reconnected with the insights permission, and likes and comments only for the rest. X contributes views, likes, replies, reposts and bookmarks for the newest 10 X posts from the last 2 weeks, updated once a day. Bluesky contributes likes, replies and reposts, never views. Threads and Facebook produce no metrics at all. Read coverage before comparing platforms, and never rank platforms on a metric one of them lacks.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back to analyse. Default 30. Free plans read at most 30 days; paid plans read up to 730. | |
| profile_ids | No | Limit to these accounts. Omit for every account this connection can see. |
sprkly_get_automation_usageGet automation usageARead-onlyInspect
For each Instagram account: how many people automations have messaged this month, the plan's monthly limit for that account, and when the count resets. ready is false when Instagram has not given the messaging permission yet.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real behavioral value on top by defining the `ready` flag and its cause (Instagram has not yet granted messaging permission) and by scoping the counts to a monthly window with a stated reset. It stops short of describing throttling, auth requirements, or partial-failure behavior across accounts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler; the core payload (what is counted, the limit, the reset) leads, and the `ready` caveat follows. The first sentence is dense but each clause carries distinct information, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only tool with no output schema, the description does the heavy lifting of describing the return shape (count, limit, reset, ready) and is therefore close to complete. Minor gaps remain around error/empty states (e.g. accounts with no automations) and whether results are paginated, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter meaning is lost.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (automation usage) and enumerates exactly what is returned: per-Instagram-account message counts, the plan's monthly limit, and the reset date. This clearly separates it from sprkly_list_automations (which lists automations) and sprkly_get_billing_summary, though it never explicitly contrasts with those quota-adjacent siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit 'use this when...' statement or named alternative. The use case (checking messaging quota headroom before enabling an automation) is inferable from the enumerated return values, but the agent has to derive it — implied usage rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_billing_summaryGet billing summaryARead-onlyInspect
Subscription status, current plan, period end, purchased handles and the last few billing events. No payment method details; the Stripe customer id is truncated.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description adds transparency by disclosing that payment method details are omitted and that the Stripe customer ID is truncated, which are important limitations an agent should know. This enhances understanding of what the tool returns and does not return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly packed sentence that clearly lists contents and exclusions. It is front-loaded with the primary content and has zero wasted words, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only summary tool with no parameters and no output schema, the description provides a comprehensive overview of what will be returned (subscription status, plan, period end, purchased handles, billing events) and what will not (payment details, full Stripe ID). This is sufficient for the agent to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly does not need to explain parameters, and the schema already confirms no inputs. No additional parameter information is necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves billing summary information, listing specific components (subscription status, plan, period end, purchased handles, billing events) and explicitly notes what is excluded (payment method details, truncated Stripe ID). This distinguishes it from sibling tools like get_account_summary and get_analytics by focusing on billing specifics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when billing-related information is needed, but it does not explicitly state when to use it versus alternatives or provide exclusions. It lacks guidance on when not to use this tool, such as when full payment details are required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_engagement_summaryGet engagement summaryARead-onlyInspect
For each connected account over the last days (default 7): comments received, public replies and automated DMs sent, new contacts and emails captured, each against the window before, plus its top 3 posts. Views and engagement change covers all accounts together. Quote the current and prior numbers beside every percentage, and caveat any marked thin.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back. Default 7, up to 90. | |
| profile_ids | No | Limit to these accounts. Omit for every account this connection can see. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: comparisons against the prior window, a per-account vs all-accounts split, top-3 post inclusion, and a 'thin' data flag that changes how results should be reported.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but every clause carries information about output content or reporting rules; little is wasted. The structure is a bit run-on and the output-handling instructions (quote numbers, caveat thin data) are appended rather than separated, but it remains readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining returns and does so thoroughly: per-account metrics, prior-window deltas, top posts, and account-wide aggregates. Only the thin/no-explicit-sibling boundary and any pagination or latency behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both `days` (default 7, max 90) and `profile_ids` (omit for all) are already fully documented in the schema. The description restates the default and scope but adds no format or semantic detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool returns per account (comments, replies, DMs, contacts, emails, prior-window comparisons, top 3 posts) plus account-wide view/engagement changes, which is far more specific than the name. It does not explicitly distinguish itself from siblings like sprkly_get_analytics or sprkly_get_account_summary, leaving that differentiation to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the presence of a `days` window and per-account breakdown suggests it is the engagement report, but there is no explicit when-to-use versus get_analytics/get_account_summary. The instructions about quoting current/prior numbers and caveating thin data are output-presentation guidance, not invocation guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_inbox_threadRead an inbox conversationARead-onlyInspect
One conversation, oldest message first: their DMs and comments, your replies, and what automations sent. Each comment people left carries the comment_id that sprkly_reply_to_comment answers under. dm_window says whether a DM answer is still allowed: Instagram only allows one within 24 hours of their last message. Needs inbox access.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | No | Only when the conversation has no person_id: their handle. | |
| person_id | No | The person, from sprkly_list_inbox_threads. | |
| profile_id | Yes | The connected account, from sprkly_list_inbox_threads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds genuine domain behavior: messages are returned oldest-first, comment_id is embedded for replies, and dm_window encodes Instagram's 24-hour DM reply rule. That last point is real operational context an agent needs before attempting a reply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core resource and ordering, then two dense sentences of useful behavioral detail. No filler, though the dm_window rule is slightly tangential to the read operation itself.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing return content and does so well (DMs, comments, replies, automations, comment_id, dm_window). The one gap is that pagination or thread-size behavior is not mentioned, but the core contract is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description discusses return artifacts (comment_id, dm_window) rather than adding format or syntax detail for profile_id, person_id, or handle, so it does not meaningfully extend the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (one inbox conversation) and enumerates the contents returned (their DMs and comments, your replies, automations sent), which distinguishes it from sprkly_list_inbox_threads. The verb is only implied by the name/title ('get'/'Read'), but the scope is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite ('Needs inbox access') and points at sprkly_reply_to_comment as the consumer of comment_id, giving implied follow-up context. However, it never says explicitly when to call this vs. list_inbox_threads or when a thread should be retrieved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_post_approval_statusGet approval statusARead-onlyInspect
Whether a post is awaiting the owner's approval, approved or rejected, with the reviewer's notes, who asked, and timestamps. A rejected post is a draft again: fix it, then request approval again.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | The scheduled post id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=false), so the bar is lower, yet the description still adds substantive behavior: the exact return contents (reviewer notes, requester, timestamps) and the non-obvious state transition where a rejected post reverts to a draft. No output schema exists, so this return-shape disclosure is genuinely load-bearing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The state enumeration is front-loaded, and the follow-up workflow note is appended only after the core answer, which is the right ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-parameter tool with no output schema, the description covers what comes back and the lifecycle semantics. The only unaddressed case is what is returned when no approval request has ever been made for the post, a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter, post_id, and schema description coverage is 100%, so the schema already carries the full burden. The description adds no syntax, format, or sourcing detail for post_id, which is the expected baseline when the schema is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (a post's approval) and enumerates the three states it reports (awaiting approval, approved, rejected), plus the ancillary data returned. That is far more specific than the title alone. It does not explicitly distinguish itself from the nearby sibling sprkly_get_post_status, which is the one ambiguity an agent could hit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: you call this to check approval state, and the second sentence gives a post-rejection workflow that points toward sprkly_request_post_approval. There is no explicit 'use this instead of X' or when-not-to-call guidance, and no statement of the prerequisite that an approval request must already exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_post_statusGet post statusARead-onlyInspect
Full detail for one post: status, targets, scheduled and published times, permalink, and the failure reason if it did not publish. Media comes back as mediaIds in slide order, not as links. Ids and profile ids are plumbing: talk to the user about accounts by handle and about posts by their caption, and do not read ids out unless they ask for one.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | The scheduled post id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint is already true, but the description adds valuable behavioral detail: media comes back as mediaIds, not links, and failure reason is included if not published. It also advises not to read ids out loud—beyond the annotation's scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, tightly packed with all necessary details. The first sentence states what data comes back; the second adds crucial format and interaction notes. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description covers the return values explicitly (status, targets, times, permalink, failure reason, mediaIds). It also handles potential edge cases (e.g., failed publication). The id handling guidance further completes the context for real usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for post_id, so baseline is 3. The description adds extra context about how to handle ids (plumbing, talk by caption/handle), which goes beyond the schema's simple 'The scheduled post id' and informs the parameter's usage in conversation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves full detail for one post, listing specific fields (status, targets, times, permalink, failure reason). This distinguishes it from sibling tools like sprkly_list_scheduled_posts (which lists) and sprkly_get_post_approval_status (which is approval-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly implies usage for retrieving details of a single specific post, as opposed to listing or approval. There's no explicit 'when not to use', but the context is clear. It also provides guidance on how to interact with ids, which is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_get_tiktok_posting_optionsGet TikTok posting optionsARead-onlyInspect
This creator's allowed TikTok privacy levels and interaction settings, fetched live from TikTok. You usually do NOT need this before scheduling: sprkly_schedule_post checks privacyLevel against this same list itself and, when it is wrong, returns the levels that would work. Call this only when the user asks what their options are, or you want to offer them a choice.
| Name | Required | Description | Default |
|---|---|---|---|
| profile_id | Yes | The TikTok profile id to query, from sprkly_list_profiles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, and the description adds that data is fetched live and that schedule_post will check it itself. This adds useful context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences cover purpose and usage, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the readOnly annotation and simple parameter, the description is complete: it explains the purpose, when to use it, and clarifies that scheduling does not require it. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes the single parameter profile_id. The description repeats this information but adds no additional nuance beyond referencing sprkly_list_profiles as the source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches allowed TikTok privacy levels and interaction settings, distinguishing it from sibling tools like scheduling or listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use (user asks for options or offering a choice) and when not (usually not needed for scheduling, as schedule_post handles it). This is actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_import_automation_templateImport an auto reply templateAInspect
Read an auto reply template, and optionally set it up. With no profile_id NOTHING is written: the template is checked and handed back, which is the safe first call. With a profile_id the automation is created, and it goes live when the trigger can be satisfied. A trigger that watches one post (a keyword on a post, or every comment on a post) needs post_id as well. Without one it saves as a draft that sends nothing until a post is chosen. A keyword on any post and a Profile DM need no post_id. A template that DMs every commenter on the whole account is turned off and is refused. Needs a connected Instagram account.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | No | The published post to watch. Only for a trigger that watches one post. Leave it out for a keyword on any post or a Profile DM. | |
| template | Yes | The template, as an object or as the file text. | |
| profile_id | No | The Instagram account to set it up on. Leave this out to only check the template. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Far beyond the annotations, the description discloses what actually gets written, the draft-vs-live state transition, that certain account-wide DM templates are refused, and that a connected Instagram account is required. This is exactly the mutation/authorization/rate behavior an agent needs and annotations alone would not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The two-mode behavior is front-loaded ('With no profile_id NOTHING is written'), and each subsequent sentence handles a distinct trigger case. It is dense but every sentence carries a rule; only slight tightening would help.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining that the check-only path hands the template back, and it covers the draft/live states and refusal case. For a nested-object, mutating tool, the coverage of behavior and prerequisites is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds genuine conditional meaning: it explains when post_id is required (single-post triggers) versus optional (keyword on any post, Profile DM), and clarifies profile_id as the write-enabling switch. It goes beyond restating the schema fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (import/read) and resource (auto reply template), and lays out the two modes (check-only vs create). It does not name or contrast with the nearby siblings sprkly_create_automation_from_template or sprkly_export_automation_template, so the agent must infer the distinction, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit conditional guidance: omitting profile_id is framed as 'the safe first call', and the post_id requirement is spelled out per trigger type. It stops short of naming alternative tools to reach for, but the when-to-use conditions are clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_automationsList automationsARead-onlyInspect
Every Instagram automation on this account that is not archived. Each row has its name, its state (On, Paused or Draft), the Instagram account it runs on, what starts it, and how many DMs and public replies it has sent. One automation on several accounts shows one row per account, all with the same group_id.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds real value on top by disclosing the non-archived filter, the available states (On, Paused, Draft), and the non-obvious row-multiplication behavior (one row per account sharing a group_id). It doesn't discuss ordering, size limits, or empty-account behavior, which keeps it out of 5 territory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the scope constraint ('not archived'), then the row shape, then the edge case that would otherwise confuse an agent. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns, and it does so field-by-field plus the group_id grouping rule. What's missing is minor: ordering, result-size expectations, and whether an empty result is indistinguishable from no automations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4; there is no parameter semantics to document or misdocument. No corrective information is needed here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource ('Every Instagram automation on this account that is not archived') and enumerates the fields returned per row, so the agent knows exactly what this produces. It does not explicitly differentiate itself from the sibling list_automation_templates, which is the one plausible confusion point, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the agent can infer this is the way to enumerate existing (non-archived) automations, and the archived exclusion narrows the scope. There is no explicit when-to-use statement, no condition distinguishing it from list_automation_templates, and no mention of what to do next (get_automation_usage, pause_automation).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_automation_templatesList automation templatesARead-onlyInspect
The ready-made Instagram automations, the same ones as the template gallery in the app. For example: send a link when people comment a word, answer story replies, ask for a follow first, or collect emails. Each one has an id, a name, a goal, what starts it, and the message it sends. asks_for says what sprkly_create_automation_from_template needs besides the template id and the account: a post, a keyword, a link, or faq (a list of words and answers). Every plan has automations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: the shape of each returned record (id, name, goal, trigger, message) and the availability note 'Every plan has automations', which preempts an empty-result question. It does not discuss ordering or pagination, but for a small read-only catalog that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence front-loads the identity of the tool and the gallery analogy, and the subsequent sentences each contribute something (examples, record fields, asks_for semantics, plan availability). It is slightly longer than a zero-parameter list tool strictly needs, but nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating the fields on each template and explaining the asks_for field that governs downstream creation. Combined with the availability note, an agent has enough to call it and interpret the result. Only the absence of ordering/size expectations keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no parameter ambiguity to resolve. The description's discussion of asks_for describes the fields inside the response rather than input parameters, which is helpful but sits in the behavioral bucket rather than adding parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists ready-made Instagram automation templates, explicitly anchored to the in-app template gallery, which distinguishes it from sibling sprkly_list_automations (the user's own automations). It goes on to enumerate the use cases the templates cover (comment-to-link, story replies, follow-gate, email capture), so an agent knows exactly what this returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is clearly implied and partially explicit: the description names sprkly_create_automation_from_template and explains that asks_for tells you what that tool additionally requires, which effectively routes the agent from listing to creation. It stops short of a direct 'call this first, then call X' instruction and does not explicitly contrast with sprkly_list_automations, so it falls just below the full when/when-not bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_connected_social_accountsList connected accountsARead-onlyInspect
Every ACTIVE social account linked to this sprkly account: platform, handle, follower count, and whether it needs reconnecting. Disconnected/inactive accounts are never listed, so any profileId returned here is a valid posting target. Never returns access tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true, which is consistent with the description's non-mutating nature. The description adds valuable behavioral context beyond annotations: it filters out disconnected/inactive accounts (so only valid posting targets are returned) and explicitly states that access tokens are never returned, addressing security expectations. This is more than many read-only tools provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly stating the core function and key constraints. It is front-loaded with the most important information (what accounts are returned) and adds a crucial note about profileId validity. Every word serves a purpose, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description fully covers what an agent needs to know: the exact fields returned, the filtering behavior, the guarantee that returned IDs are valid posting targets, and the absence of access tokens. It is complete for a tool of this complexity, especially with readOnlyHint already declared.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. According to the rubric, a baseline of 4 applies when there are no parameters. The description adds no parameter-specific information because none exist, but it effectively communicates the tool's fixed behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing every ACTIVE social account linked to the sprkly account. It specifies the fields returned (platform, handle, follower count, reconnection status) and distinguishes itself from siblings like sprkly_list_profiles by emphasizing that only active, connected accounts are included and that profileId values are valid posting targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need a list of active, connected social accounts for posting or management. It notes that disconnected/inactive accounts are never listed, which helps prevent misuse, but it does not explicitly name alternative tools or state when not to use it. Still, the context is clear enough for an agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_inbox_threadsList inbox conversationsARead-onlyInspect
The most recent conversations in the sprkly inbox, newest first. One row per person per connected account, with their handle, how many of their messages are unread, and the last thing said. Pass unread_only to see only conversations waiting for an answer. Use profile_id and person_id from a row with sprkly_get_inbox_thread to read it. Needs inbox access, which the user allows on its own: a key made with inbox access ticked, or a connection that allowed it.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many conversations. Default 20. | |
| profile_id | No | Only this connected account. | |
| unread_only | No | Only conversations with unread messages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them: the return shape (one row per person per connected account with handle, unread count, last message) and the auth requirement (inbox access via a key or an allowed connection).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose (recent conversations, newest first), then row shape, then usage, then auth. Each sentence earns its place, though the final access sentence is slightly dense. Overall well-sized for a 3-param list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description compensates by describing the returned row contents, and it covers ordering, default filtering behavior, and the auth prerequisite. An agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 adds meaning: unread_only is framed as 'conversations waiting for an answer' and profile_id is tied to the per-connected-account row concept. It goes beyond the terse schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (list) and resource (inbox conversations/threads) with scope ('most recent... newest first') and describes the row shape. It names the sibling sprkly_get_inbox_thread and clarifies the relationship, so an agent can distinguish it from the read-one tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: pass unread_only to see conversations waiting for an answer, and use profile_id/person_id from a row with sprkly_get_inbox_thread to read a thread. This routes the agent to the right sibling. It lacks an explicit 'do not use when...' exclusion, so it falls just 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.
sprkly_list_leadsList leadsARead-onlyInspect
People an automation answered in the last days (default 7), newest first: their handle, the keyword they used, the post they asked under, and the email they gave, if any. Filter by account, keyword or has_email. opted_out is true when the person sent STOP; never contact them. Never message a lead unless the user asks. Needs inbox access.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back. Default 7, up to 90. | |
| limit | No | How many people. Default 50, up to 200. | |
| keyword | No | Only people who used this keyword, like LINK. | |
| has_email | No | true: only people who gave an email. false: only people who did not. | |
| profile_id | No | Only this connected account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds substance beyond that: the newest-first ordering, the opted_out semantics (true when the person sent STOP), the hard constraint never to contact them, and the prerequisite 'Needs inbox access.' Those are behavioral facts an agent cannot derive from structured fields and are critical for safe downstream action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with what the tool returns and immediately followed by filters and safety constraints. The only dead weight is the near-duplication between 'never contact them' and 'Never message a lead unless the user asks.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description responsibly enumerates the returned fields and the default window, and it covers filters, ordering, auth prerequisite and consent safety. It does not state what happens with the limit parameter or whether results are truncated beyond 200, which would matter for exhaustiveness-sensitive use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with defaults, ranges (1-90 days, 1-200 limit) and examples already documented. The description maps concepts to parameters ('filter by account, keyword or has_email') and clarifies what 'the email they gave' means for has_email, but adds little syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (people an automation answered), the default time window, sort order (newest first), and exactly which fields come back (handle, keyword, post, email). This distinguishes it clearly from siblings like sprkly_list_inbox_threads, which list conversations rather than automation-answered leads.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete selection criteria (filter by account, keyword, has_email) and an explicit prohibition (never contact them; never message unless the user asks). It stops short of naming the sibling tool an agent should prefer when it actually wants to reply to a lead, so routing to reply_to_dm is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_profilesList posting targetsARead-onlyInspect
The profile ids needed to target a post, with each one's platform and handle. Call this before sprkly_schedule_post.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds useful context by specifying that the tool returns profile IDs, platforms, and handles needed for targeting. It does not contradict annotations and provides meaningful behavioral detail beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two succinct sentences: the first defines the tool's output, and the second gives a clear usage directive. Every word contributes to understanding, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, read-only, no output schema), the description adequately covers its purpose, returned content, and usage timing. It could be slightly richer by explicitly stating that it returns a list of all available posting targets, but it is complete enough for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is an empty object with 100% coverage. There are no parameter semantics to explain. The baseline for zero-parameter tools is 4, and the description adds relevant context about the returned data instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists posting targets, specifically the profile IDs needed to target a post, along with each platform and handle. The title 'List posting targets' aligns with the description and distinguishes it from sibling tools like sprkly_list_connected_social_accounts by focusing on post targeting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage instruction: 'Call this before sprkly_schedule_post.' This gives clear context on when to use the tool. However, it does not mention when not to use it or name alternative sibling tools, so it stops short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_list_scheduled_postsList scheduled postsARead-onlyInspect
The post queue, newest first, with a caption preview, targets, status and failure reason. Supports a status filter and cursor pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum posts to return. | |
| cursor | No | Pagination cursor. Pass the nextCursor value from a previous response. | |
| status | No | Filter by status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral details beyond the readOnlyHint annotation: it specifies sorting (newest first), returned fields, support for a status filter, and cursor pagination. This gives the agent a clear picture of the tool's behavior and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded, with two sentences that efficiently convey the core purpose and key features. Every word adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 optional params, no output schema) and the readOnly annotation, the description covers all essential aspects: what is returned, sorting, filtering, and pagination. It is complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description mentions 'status filter' and 'cursor pagination' but these are already captured in the schema parameter descriptions. No significant extra meaning is added beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it lists the post queue (scheduled posts) sorted newest first, with specific fields like caption preview, targets, status, and failure reason. This distinguishes it from sibling tools like sprkly_get_post_status (single post) and sprkly_list_profiles (accounts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this tool shows the post queue, implying use for viewing scheduled posts. However, it does not explicitly mention when not to use it or suggest alternatives, so it falls short of a 5 but is still informative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_pause_automationPause an automationAIdempotentInspect
Stop an automation from replying, on every account it runs on. Nothing is deleted. sprkly_resume_automation turns it back on. Any account that could not be changed is named in failed.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The automation_id from sprkly_list_automations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes beyond the annotations by disclosing two things they cannot express: the change applies to every account the automation runs on, and partial failures are surfaced by name in a 'failed' field. This is exactly the multi-account scope and partial-success behavior an agent needs before calling a cross-account mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and effect scope, with no filler. The trailing note about 'failed' is slightly terse and reads like a fragment, but it still carries useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with no output schema, the description covers the action, the blast radius, the reversibility path, and the partial-failure signal. Nothing material is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one parameter at 100% schema description coverage, the schema already documents automation_id and even points to sprkly_list_automations as its source. The description adds no format, sourcing, or validation detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (stop/pause) and resource (an automation) plus the effect scope ('from replying, on every account it runs on'), which no sibling duplicates. An agent can distinguish it from sprkly_delete_scheduled_post or sprkly_resume_automation without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the counterpart tool explicitly ('sprkly_resume_automation turns it back on') and clarifies the non-destructive intent ('Nothing is deleted'), which gives clear context for choosing pause over deletion. It stops short of stating the conditions under which pausing is preferable, so it is strong context rather than a full when/when-not rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_reply_to_commentReply to a commentAInspect
Post one public reply under an Instagram comment, from the account that got the comment. Everyone can see it and it cannot be taken back, so show the user the words first. Take comment_id from sprkly_get_inbox_thread. If the answer says Instagram did not confirm, do not send it again: tell the user to check the post. Needs inbox access.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The reply. Up to 1000 characters. | |
| comment_id | Yes | The comment to answer, from sprkly_get_inbox_thread. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag it as a non-readOnly, open-world, non-idempotent write, and the description layers on rich context the annotations don't carry: the reply is publicly visible, irreversible ('cannot be taken back'), requires a user-confirmation step before sending, and needs inbox access. The retry caveat about unconfirmed sends is genuinely useful behavioral guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and its public/irreversible nature, then practical workflow rules, then the precondition. Every sentence carries distinct operational value with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing the observable outcome behavior ('if the answer says Instagram did not confirm...'), the visibility/reversibility profile, and the access requirement. An agent has everything it needs to call this correctly and handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters (text length limit, comment_id source) are already documented in the schema. The description reinforces the comment_id source but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Post one public reply under an Instagram comment') plus the account scope ('from the account that got the comment'). This clearly separates it from sprkly_reply_to_dm, which handles private messages rather than public comment replies, without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance: take comment_id from sprkly_get_inbox_thread, show the words to the user first, and a specific failure rule (if Instagram did not confirm, don't resend). It also states the prerequisite ('Needs inbox access'). It stops short of explicitly naming the alternative sibling (sprkly_reply_to_dm) and the condition that would select it instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_reply_to_dmReply to a DMAInspect
Send one Instagram DM to a person who messaged this account, from the account owner. It cannot be taken back, so show the user the words first. Instagram only allows it within 24 hours of their last message. Replying pauses automations for this person for 5 minutes, like replying in the app. If the answer says Instagram did not confirm, do not send it again: tell the user to check the chat. Needs inbox access.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The message. Up to 1000 characters. | |
| person_id | Yes | The person to answer, from sprkly_list_inbox_threads. | |
| profile_id | Yes | The connected Instagram account, from sprkly_list_inbox_threads. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only mark it non-read-only, non-idempotent and open-world. The description adds substantial behavioral context beyond that: irreversibility ('cannot be taken back'), the 24-hour Instagram window, the side effect of pausing automations for 5 minutes, and explicit recovery guidance on an unconfirmed send.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five tight sentences, each carrying distinct information (action, irreversibility, time window, side effect, failure handling, auth). Purpose is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining the failure-return case and the correct agent response. Combined with the auth and timing constraints, an agent has everything needed to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters are documented there, including the 1000-character limit and the cross-reference to sprkly_list_inbox_threads. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (send/reply) and resource (one Instagram DM to a person who messaged this account, on behalf of the account owner). This clearly distinguishes it from the sibling sprkly_reply_to_comment, which targets a different surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage conditions: only within 24 hours of the person's last message, requires inbox access, and the human-in-the-loop step 'show the user the words first.' It also tells the agent what to do on an unconfirmed send. It stops short of explicitly naming alternative tools for other reply channels, so 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_request_post_approvalRequest human approvalAInspect
Hold a draft or scheduled post for the owner's approval. Moves it to pending_approval, where it never publishes on its own, emails the owner an Approve link, and returns an approval id to poll with sprkly_get_post_approval_status. Asking again for a post that is already waiting returns the same request. Approved posts go back to scheduled (a post past its time goes out in about 2 minutes); rejected posts become drafts with the owner's notes. To hold a NEW post, pass requires_approval to sprkly_schedule_post instead. Power plan only: other plans get upgrade_required.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional note to the owner, shown in the approval email. | |
| post_id | Yes | The draft or scheduled post id to hold for approval. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply the generic safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=false). The description adds substantial behavior on top: the exact state transition to pending_approval, that it never auto-publishes, the owner email side effect, the returned approval id, the approve/reject lifecycle (approved → scheduled, past-time → out in ~2 minutes; rejected → draft with notes), and the Power-plan restriction with upgrade_required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and resulting state are front-loaded in the first sentence, followed by side effects, the sibling tool for polling, lifecycle outcomes, the alternative for new posts, and the plan gate. Every clause carries distinct, actionable information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by explaining what is returned (an approval id to poll) and the terminal states after approval or rejection. Combined with the plan gating and the new-post alternative, an agent has everything needed to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (post_id, note) are already documented in the schema. The description reinforces that post_id must be an existing draft or scheduled post and that note appears in the approval email, but adds no format, syntax, or constraint detail beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Hold a draft or scheduled post for the owner's approval') and spells out the resulting state ('moves it to pending_approval'). It also distinguishes itself from siblings by naming sprkly_schedule_post (for new posts) and sprkly_get_post_approval_status (for polling), so an agent can route correctly without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('hold a draft or scheduled post'), when-not and the alternative ('To hold a NEW post, pass requires_approval to sprkly_schedule_post instead'), plus the plan gate that blocks other plans. The repeated-call case is also addressed ('Asking again for a post that is already waiting returns the same request').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_resume_automationResume an automationAIdempotentInspect
Turn a paused automation back on, on every account it runs on. It starts replying to real people again. A draft has to be finished in sprkly first. An automation that hit its "stop after this many people" limit stays off.
| Name | Required | Description | Default |
|---|---|---|---|
| automation_id | Yes | The automation_id from sprkly_list_automations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, idempotent=true, non-destructive), so the description correctly spends its words elsewhere: cross-account scope, the real-world side effect of replying to people again, and the preconditions/exclusions that would make the call a no-op or invalid. It stops short of describing what happens on failure or how the resumed state is confirmed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the action, and each sentence carries distinct information (effect, scope, precondition, exclusion). Slightly colloquial phrasing ('replying to real people again') makes the last clause feel oblique, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with annotations already declaring idempotency and non-destructiveness, and no output schema, the description supplies everything an agent needs: scope, side effect, precondition, and the case where the call will not take effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter, and the description adds nothing about automation_id beyond what the schema already states (the value comes from sprkly_list_automations). The implicit point that no account parameter is needed because resume applies to all accounts is mild added meaning; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A specific verb plus resource — turn a paused automation back on — that an agent can distinguish from the sibling sprkly_pause_automation without opening either schema. It also states the operational scope ('on every account it runs on'), which clarifies what 'resume' actually affects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a precondition ('A draft has to be finished in sprkly first') and an explicit exclusion ('An automation that hit its "stop after this many people" limit stays off'), which is real when-to-use guidance. It does not, however, name the sibling tool it pairs with or the inverse operation (sprkly_pause_automation), so routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_schedule_postSchedule a postInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Post title. Required for YouTube (max 100 characters) and TikTok (max 150 characters). | |
| caption | No | Post caption, max 2200 characters. | |
| category | No | Optional content category, e.g. "fitness". | |
| media_id | No | Id of a single media file already uploaded to sprkly. Shorthand for a one-item media_ids. | |
| media_ids | No | Ids 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. | |
| platforms | No | Platforms 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_urls | No | Publicly 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_ids | No | Specific accounts to publish to, from sprkly_list_profiles. When given, this list IS the target set — platforms are not fanned out. | |
| all_accounts | No | Explicitly 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. | |
| approval_note | No | Optional note to the owner, shown in the approval email. Only used with requires_approval. | |
| first_comment | No | Instagram only. Optional text sprkly posts as the first comment under the post right after it publishes, e.g. "Comment GUIDE and I will send you the link." Up to 2,200 characters. Ignored for other platforms. Refused on a story (surface story): stories take no comments. Creator and Power only: Free gets upgrade_required. | |
| platform_meta | No | Platform-specific publishing options, keyed by platform. | |
| scheduled_time | No | ISO 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. | |
| requires_approval | No | Hold the post until the owner approves it. It is saved as pending_approval and never publishes on its own; the owner gets an email with an Approve link and can also approve or reject in the sprkly calendar. Poll sprkly_get_post_approval_status for the answer. Power plan only: other plans get upgrade_required. |
sprkly_update_scheduled_postReschedule or edit a postAIdempotentInspect
Change the caption, publish time, target accounts or attached media on a post that has not published yet. Posts with status "scheduled", "pending_approval" or "draft" can be edited, and the status never changes here: editing a post that waits for approval does not approve it, and a rejected post stays a draft until you request approval again. A post waiting for approval can only target one account.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Replacement caption, max 2200 characters. | |
| post_id | Yes | The scheduled post id. | |
| media_id | No | Replacement sprkly media file id. Shorthand for a one-item media_ids. | |
| media_ids | No | Replacement media, in slide order. Replaces the whole set, it does not append — pass every slide you want the post to keep. | |
| profile_ids | No | Replacement target accounts. Platforms are re-derived from them. | |
| scheduled_time | No | New ISO 8601 publish time. Must be in the future. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious behavior beyond that: the status is invariant across edits, approval is not granted as a side effect, a rejected post remains a draft, and a pending-approval post may only target one account. It omits side effects such as whether edits re-trigger notifications or reset approvals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the editable surface and followed by the status constraints. No filler, and the most decision-relevant constraint (status never changes) is stated early.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter mutation tool with no output schema and annotations that already carry the safety profile, the description covers eligibility, field scope and key invariants well. What an agent gets back after a successful edit is left entirely implicit, though no output schema exists to offset that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 and the schema already documents every field, including the replace-not-append semantics of media_ids. The description adds meaning on top: the one-account ceiling for posts awaiting approval constrains profile_ids in a way no schema field states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (change) plus the resource (a post that has not published yet) and enumerates the editable fields: caption, publish time, target accounts, attached media. It also pins the eligible statuses (scheduled, pending_approval, draft), which separates it cleanly from sprkly_schedule_post, sprkly_delete_scheduled_post and sprkly_request_post_approval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear eligibility conditions and explicitly distinguishes the edit path from the approval path ('editing a post that waits for approval does not approve it'), which is real routing guidance. It never names a sibling tool directly and gives no explicit when-not-to-use beyond the 'not published yet' gate, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_upload_mediaUpload a file as mediaAIdempotentInspect
Upload files the user has on their machine (slides, photos, a short video) into sprkly and get a media_id for each. LINK MODE is the way to send a file from disk. Send files, one entry per file with its filename, sha256 and size_bytes. You get back one uploadUrl per file. PUT the bytes to it: curl -sS -X PUT --data-binary @01.jpg "". Each PUT answers JSON with mediaId. Links last 15 minutes. Up to 50 MB per file and 35 files per call. The bytes never pass through you, so a whole carousel costs a few hundred tokens. INLINE MODE is for tiny files only (a few KB): data_base64 plus filename, 25 MB at most. base64 costs about one token per character, so never inline a real slide. When files is sent, data_base64 and filename are ignored. For a public link use media_urls on sprkly_schedule_post instead. The same bytes sent twice return the same media_id.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | LINK MODE. One entry per file, in slide order. Get the values in Bash: sha256sum 01.jpg (first 64 characters) and stat -c %s 01.jpg. 1 to 35 entries. | |
| filename | No | INLINE MODE. The file name, for example 01.jpg. Used in the response and in error messages. The bytes decide the real type. Ignored when files is sent. | |
| data_base64 | No | INLINE MODE, tiny files only. The file contents, base64 encoded. Standard or URL-safe alphabet, with or without a data: prefix. Ignored when files is sent. | |
| content_type | No | INLINE MODE. Optional MIME hint such as image/jpeg. sprkly sniffs the bytes and that wins. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the idempotentHint annotation, the description adds rich behavioral context: presigned upload URLs, 15-minute link expiry, 50 MB and 35-file limits, the PUT flow, and that identical bytes yield the same media_id. It also explains that bytes never pass through the agent, which is valuable for cost and architecture understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every section earns its place: mode selection, limits, workflow, and exclusion criteria. It is front-loaded with the core purpose, though a bit dense; minor tightening could make it even easier to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description fully covers what an agent needs: how to get upload URLs, how to upload bytes, what the response contains, limits, idempotency, and which sibling to use for public links. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema already covers all parameters, the description adds meaning beyond it: it distinguishes the two modes, clarifies that files takes precedence over inline params, explains when data_base64 is appropriate, and provides concrete bash commands for computing sha256 and size_bytes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: upload local files into sprkly and receive a media_id per file. It clearly distinguishes this from URL-based or public-link workflows, including naming the schedule_post alternative for public links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to use LINK MODE versus INLINE MODE, including file size thresholds, and directs users to sprkly_schedule_post for public links. This gives an agent actionable routing guidance beyond just naming the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sprkly_validate_post_policyValidate against platform rulesARead-onlyInspect
Check a caption against each target platform's posting rules before scheduling: caption length, media requirements, hashtag ceilings, whether links are clickable, required YouTube titles, and PII or prohibited-content warnings. Pure analysis. Writes nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Post title. Required for YouTube, max 100 characters. | |
| caption | Yes | The caption to check. | |
| hashtags | No | Hashtags posted alongside the caption, if they are not already in it. | |
| platforms | Yes | Target platforms to check against. | |
| platformMeta | No | Platform-specific publishing options, keyed by platform. | |
| mediaUrlsCount | No | How many images or videos will be attached. Instagram and TikTok require at least one. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so 'Pure analysis. Writes nothing.' reinforces rather than reveals. The real added value is the enumeration of what is actually checked (length, media requirements, hashtag ceilings, link clickability, YouTube titles, PII/prohibited content), which goes well beyond the annotation surface; missing are error behavior or whether results are per-platform verdicts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the concrete list of checks and closed by the read-only guarantee. Every clause carries information; no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does important work by naming the checks, which implies what the result covers, and it resolves the ambiguity of a nested platformMeta object by scoping the tool to a caption-level check. It could go further by indicating whether results are returned per platform with pass/fail detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with title, mediaUrlsCount, hashtags and platforms all documented in the schema itself. The description's mentions of YouTube titles and media requirements map directly onto those existing schema descriptions, adding little beyond them; the nested platformMeta object remains unexplained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Check') and resource (a caption against each target platform's posting rules) and enumerates the exact rule categories checked. It is clearly distinguishable from the write-oriented siblings like sprkly_schedule_post or sprkly_draft_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'before scheduling' gives a clear usage moment, and the scope ('each target platform') tells the agent this is a pre-flight check rather than a one-shot lint. However, it never explicitly names alternatives (e.g., use schedule_post once validation passes) or states when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- Changed
sprkly_create_automation_from_template3 fields changed- added
Input schema / properties / fallbackAdded value: +{ + "description": "Only with faq. The reply to a DM with none of the words. It replaces any default reply on the account and turns it on.", + "type": "string" +} - added
Input schema / properties / faqAdded value: +{ + "description": "Only when asks_for has faq. The words people DM you and the answer each one gets.", + "items": { + "properties": { + "answer": { + "description": "The DM that goes back.", + "type": "string" + }, + "keyword": { + "description": "The word they DM you.", + "type": "string" + } + }, + "required": [ + "keyword", + "answer" + ], + "type": "object" + }, + "maxItems": 10, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / message / descriptionPrevious value: -"Your own words for the DM, or for the public reply on a reply-only template."New value: +"Your own words for the DM, for the public reply on a reply-only template, or for the comment on first-comment-on-post."
- Added
sprkly_get_engagement_summary - Added
sprkly_list_leads - Changed
sprkly_schedule_post1 field changed- changed
Input schema / properties / first_comment / descriptionPrevious value: -"Instagram only. Optional text sprkly posts as the first comment under the post right after it publishes, e.g. \"Comment GUIDE and I will send you the link.\" Up to 2,200 characters. Ignored for other platforms. Refused on a story (surface story): stories take no comments."New value: +"Instagram only. Optional text sprkly posts as the first comment under the post right after it publishes, e.g. \"Comment GUIDE and I will send you the link.\" Up to 2,200 characters. Ignored for other platforms. Refused on a story (surface story): stories take no comments. Creator and Power only: Free gets upgrade_required."
13 tool updates
- Added
sprkly_create_automation_from_template - Changed
sprkly_draft_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
- Added
sprkly_get_automation_usage - Added
sprkly_get_inbox_thread - Added
sprkly_list_automation_templates - Added
sprkly_list_automations - Added
sprkly_list_inbox_threads - Added
sprkly_pause_automation - Added
sprkly_reply_to_comment - Added
sprkly_reply_to_dm - Added
sprkly_resume_automation - Changed
sprkly_schedule_post2 fields changed- added
Input schema / properties / first_commentAdded value: +{ + "description": "Instagram only. Optional text sprkly posts as the first comment under the post right after it publishes, e.g. \"Comment GUIDE and I will send you the link.\" Up to 2,200 characters. Ignored for other platforms. Refused on a story (surface story): stories take no comments.", + "type": "string" +} - changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
- Changed
sprkly_validate_post_policy1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
3 tool updates
- Changed
sprkly_draft_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky", - "x" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook" +]
- Changed
sprkly_schedule_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky", - "x" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook" +]
- Changed
sprkly_validate_post_policy1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky", - "x" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook" +]
3 tool updates
- Changed
sprkly_draft_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
- Changed
sprkly_schedule_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
- Changed
sprkly_validate_post_policy1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook", - "bluesky" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky", + "x" +]
3 tool updates
- Changed
sprkly_draft_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky" +]
- Changed
sprkly_schedule_post1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky" +]
- Changed
sprkly_validate_post_policy1 field changed- changed
Input schema / properties / platforms / items / enumPrevious value: -[ - "instagram", - "tiktok", - "youtube", - "threads", - "facebook" -]New value: +[ + "instagram", + "tiktok", + "youtube", + "threads", + "facebook", + "bluesky" +]
3 tool updates
- Changed
sprkly_get_analytics2 fields changed- changed
Input schema / properties / days / descriptionPrevious value: -"How many days back to analyse. Default 30."New value: +"How many days back to analyse. Default 30. Free plans read at most 30 days; paid plans read up to 730." - changed
Input schema / properties / days / maximumPrevious value: -365New value: +730
- Changed
sprkly_request_post_approval2 fields changed- changed
Input schema / properties / note / descriptionPrevious value: -"Optional context for the reviewer."New value: +"Optional note to the owner, shown in the approval email." - changed
Input schema / properties / post_id / descriptionPrevious value: -"The draft post id to submit."New value: +"The draft or scheduled post id to hold for approval."
- Changed
sprkly_schedule_post2 fields changed- added
Input schema / properties / approval_noteAdded value: +{ + "description": "Optional note to the owner, shown in the approval email. Only used with requires_approval.", + "type": "string" +} - added
Input schema / properties / requires_approvalAdded value: +{ + "default": false, + "description": "Hold the post until the owner approves it. It is saved as pending_approval and never publishes on its own; the owner gets an email with an Approve link and can also approve or reject in the sprkly calendar. Poll sprkly_get_post_approval_status for the answer. Power plan only: other plans get upgrade_required.", + "type": "boolean" +}
1 tool update
- Changed
sprkly_import_automation_template1 field changed- changed
Input schema / properties / post_id / descriptionPrevious value: -"The published post to watch. Needed for a keyword or every-comment trigger."New value: +"The published post to watch. Only for a trigger that watches one post. Leave it out for a keyword on any post or a Profile DM."
1 tool update
- Changed
sprkly_upload_media5 fields changed- changed
Input schema / properties / content_type / descriptionPrevious value: -"Optional MIME hint such as image/jpeg. sprkly sniffs the bytes and that wins."New value: +"INLINE MODE. Optional MIME hint such as image/jpeg. sprkly sniffs the bytes and that wins." - changed
Input schema / properties / data_base64 / descriptionPrevious value: -"The file contents, base64 encoded. Standard or URL-safe alphabet, with or without a data: prefix."New value: +"INLINE MODE, tiny files only. The file contents, base64 encoded. Standard or URL-safe alphabet, with or without a data: prefix. Ignored when files is sent." - changed
Input schema / properties / filename / descriptionPrevious value: -"The file name, for example 01.jpg. Used in the response and in error messages. The bytes decide the real type."New value: +"INLINE MODE. The file name, for example 01.jpg. Used in the response and in error messages. The bytes decide the real type. Ignored when files is sent." - added
Input schema / properties / filesAdded value: +{ + "description": "LINK MODE. One entry per file, in slide order. Get the values in Bash: sha256sum 01.jpg (first 64 characters) and stat -c %s 01.jpg. 1 to 35 entries.", + "items": { + "properties": { + "filename": { + "description": "The file name, for example 01.jpg.", + "type": "string" + }, + "sha256": { + "description": "SHA-256 of the file, 64 hex characters.", + "type": "string" + }, + "size_bytes": { + "description": "Exact file size in bytes.", + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "filename", + "sha256", + "size_bytes" + ], + "type": "object" + }, + "maxItems": 35, + "minItems": 1, + "type": "array" +} - changed
Input schema / requiredPrevious value: -[ - "data_base64", - "filename" -]New value: +[]
1 tool update
- Added
sprkly_upload_media
2 tool updates
- Added
sprkly_export_automation_template - Added
sprkly_import_automation_template
1 tool update
- Changed
sprkly_schedule_post1 field changed- added
Input schema / properties / platform_meta / properties / instagramAdded value: +{ + "description": "Instagram publishing options.", + "properties": { + "surface": { + "description": "Where to publish. 'story' posts to the account's Story instead of the feed: it disappears after 24 hours, takes exactly ONE photo or video, and sends no caption — Instagram Stories have no caption field. Omit for a normal feed post or Reel. The media cannot decide this: a 9:16 video is a Reel or a Story, so ask the user which they want rather than guessing.", + "enum": [ + "feed", + "story" + ], + "type": "string" + } + }, + "type": "object" +}
16 tool updates
- First observed
sprkly_add_media_from_url - First observed
sprkly_delete_scheduled_post - First observed
sprkly_draft_post - First observed
sprkly_get_account_summary - First observed
sprkly_get_analytics - First observed
sprkly_get_billing_summary - First observed
sprkly_get_post_approval_status - First observed
sprkly_get_post_status - First observed
sprkly_get_tiktok_posting_options - First observed
sprkly_list_connected_social_accounts - First observed
sprkly_list_profiles - First observed
sprkly_list_scheduled_posts - First observed
sprkly_request_post_approval - First observed
sprkly_schedule_post - First observed
sprkly_update_scheduled_post - First observed
sprkly_validate_post_policy
Related MCP Connectors
Schedule, publish, and analyze social posts on TikTok, Instagram, YouTube, X, Threads, LinkedIn.
Schedule, publish, and analyze social posts across TikTok, Instagram, YouTube, X, LinkedIn + 5 more.
Schedule, publish and track posts on X, Instagram, LinkedIn, TikTok, YouTube, Threads and Bluesky.
Schedule and publish social posts to Instagram, TikTok, X, LinkedIn, YouTube and five more networks.
Related MCP Servers
AlicenseAqualityBmaintenanceSchedule, publish, and measure social posts on Facebook, Instagram, TikTok, LinkedIn, Threads, Pinterest, and X for one brand or many.34MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to publish and schedule short-form vertical videos across multiple social platforms, validate and normalize video files, generate platform-optimized metadata, and retrieve performance analytics.1MIT

AdaptlyPostofficial
AlicenseAqualityAmaintenanceGives AI agents the ability to schedule and publish social media posts to Instagram, TikTok, YouTube, X, LinkedIn, Facebook, Pinterest, Threads, and Bluesky. Create, schedule, and bulk-plan posts with per-platform captions, then check per-platform results and retry failures.12MIT- AlicenseAqualityBmaintenanceOfficial MCP server for PostEverywhere (posteverywhere.ai/social-media-scheduler). Let Claude, ChatGPT, Cursor or any MCP client schedule and publish posts to 13 platforms: Instagram, TikTok, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Bluesky, Telegram, Discord, WordPress and Google Business Profile. 40 tools: best-time scheduling, threads, cross-posting, campaigns, analytics.3378 npm5MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.