Skip to main content
Glama
hermoso-ai

Hermoso

Official

Set up, change or pause autopilot posting

set_post_refill
DestructiveIdempotent

Autopilot posting control: turn it on, adjust daily posts, channels, review/auto mode, or pause it. Pass only changes; new posts are made from your brief.

Instructions

Turn AUTOPILOT POSTING (autoposting, the posting refill) on, change it or pause it: "post 2 times a day on Instagram and Bluesky about …, let me review first", "make it 1 a day", "switch to auto-publish", "pause autopilot". PASS ONLY WHAT CHANGES. It always makes NEW posts (a fresh image, carousel or video for each) and never re-posts the Library. WHERE: every connected channel by default (channels narrows it); HOW OFTEN: the brand’s posting times, and channelPostsPerDay sets fewer on a channel (e.g. {"x":1}). There are no credit limits to set — get_post_refill shows roughly what it costs a day. Switching it on is refused when no channel is connected or nothing a day would be made. SWITCHING IT ON ASKS THE BRIEF ONCE: a goal (followers / sales / launch / other) is required; content pillars (get_post_refill suggests some from the brand), formats (mix / video / carousel / image) and an avoid list are optional. Posts are written from the brief, the brand profile, what has worked on each channel (compared only within a channel), the brand’s skills and playbooks and the ads it saved. Ask the user for anything missing (goal, mode, channels) rather than guessing. mode picks what happens to each batch: "review" (the default) keeps the fresh posts as drafts until a human approves them (run_post_refill approve), "auto" schedules them straight away. enabled:false is the PAUSE — it removes the recurring job outright, and posts already queued are left alone (cancel those with cancel_scheduled). Three posting times means up to three posts a day; postsPerDay sets fewer, and to post MORE per day pass postingTimes (one time per post a day) — e.g. "2 a day" on a brand with 3 posting times is postsPerDay:2, "4 a day" needs four postingTimes.

Input Schema

NameRequiredDescriptionDefault
goalNoTHE BRIEF: what the posts are for — grow followers, drive sales, promote a launch, or other (say what in goalNote). Required to switch it on.
modeNo"review" (default): each batch of fresh posts waits as drafts for approval. "auto": fresh posts are scheduled to publish automatically.
avoidNoTHE BRIEF: never mention or show these — topics, claims, competitors, faces.
chatIdNoTELEGRAM — which chat, group or channel posts go to (@username or numeric id). Without one, telegram is skipped: there is no default chat and posting to the wrong one is a public mistake.
pageIdNoFACEBOOK / INSTAGRAM / THREADS — which connected Page to publish from (list_meta_pages). Omit for the brand’s only Page.
boardIdNoPINTEREST — which board Pins go on (list_pinterest_boards). Without one, Pinterest is skipped: a Pin on the wrong board is a public mistake, so it is never guessed.
enabledNoon/off. true needs a connected channel and a goal (refused otherwise). false PAUSES it: the recurring job is deleted and nothing new is made. Already-queued posts are untouched.
formatsNoTHE BRIEF: what to make — mix (images with a short video now and then, the default), video (short videos only), carousel (3 new images per post), image.
pillarsNoTHE BRIEF: content pillars / topics, up to 8 short lines. Every post belongs to one. get_post_refill suggests some from the brand profile.
channelsNorestrict it to these channels. Omit (or send an empty list) to use every connected channel that can carry each post.
goalNoteNoTHE BRIEF: a line about the goal (e.g. the launch date and what is launching).
timezoneNoIANA timezone the posting times are in, e.g. "America/New_York" (default: the brand's, else UTC)
daysAheadNohow far ahead to keep the queue full, 1–30 (default 7)
learningsNonotes learned from reviews; REPLACES the list
postsPerDayNoposts a day, up to the number of posting times ("2 times a day" = 2). 0 (default) = one per posting time. To post MORE per day than there are posting times, also pass postingTimes.
postingTimesNothe brand's daily posting times, 24-hour "HH:MM" (e.g. ["09:00","13:00","18:00"]); REPLACES the list. Autopilot makes one post per posting time, and scheduled posts use the same times. get_post_refill shows the current ones.
channelPostsPerDayNoper channel, how many posts a day (the first N of the posting times), e.g. {"x":1,"instagram":3}. 0 turns a channel off; null resets it to every posting time. Merged into what is saved.
forgetCaptionEditsNo
linkedinOrganizationIdNoLINKEDIN — which company Page to post as (list_linkedin_pages). A single shared Page is used automatically; a Page that is not shared with this profile is ignored rather than failing the whole post.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changedv0.1.398
    • removedInput schema / properties / assetCooldownDays
      Removed value: -{
      -  "description": "how long before a Library render may be posted again (default 30). It never repeats one inside this window — it queues fewer posts and says so.",
      -  "type": "number"
      -}
    • addedInput schema / properties / avoid
      Added value: +{
      +  "description": "THE BRIEF: never mention or show these — topics, claims, competitors, faces.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / channelPostsPerDay
      Added value: +{
      +  "additionalProperties": {
      +    "type": "number"
      +  },
      +  "description": "per channel, how many posts a day (the first N of the posting times), e.g. {\"x\":1,\"instagram\":3}. 0 turns a channel off; null resets it to every posting time. Merged into what is saved.",
      +  "propertyNames": {
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / dryRun
      Removed value: -{
      -  "description": "true (the default) = plan and preview only, queue nothing. Set false ONLY after a human has read a preview.",
      -  "type": "boolean"
      -}
    • changedInput schema / properties / enabled / description
      Previous value: -"on/off. false PAUSES it: the recurring job is deleted and nothing new is queued. Already-queued posts are untouched."New value: +"on/off. true needs a connected channel and a goal (refused otherwise). false PAUSES it: the recurring job is deleted and nothing new is made. Already-queued posts are untouched."
    • addedInput schema / properties / forgetCaptionEdits
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / formats
      Added value: +{
      +  "description": "THE BRIEF: what to make — mix (images with a short video now and then, the default), video (short videos only), carousel (3 new images per post), image.",
      +  "enum": [
      +    "mix",
      +    "video",
      +    "carousel",
      +    "image"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / goal
      Added value: +{
      +  "description": "THE BRIEF: what the posts are for — grow followers, drive sales, promote a launch, or other (say what in goalNote). Required to switch it on.",
      +  "enum": [
      +    "followers",
      +    "sales",
      +    "launch",
      +    "other"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / goalNote
      Added value: +{
      +  "description": "THE BRIEF: a line about the goal (e.g. the launch date and what is launching).",
      +  "type": "string"
      +}
    • addedInput schema / properties / learnings
      Added value: +{
      +  "description": "notes learned from reviews; REPLACES the list",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • removedInput schema / properties / maxCreditsPerDay
      Removed value: -{
      -  "description": "a hard credit ceiling per day, checked BEFORE any render starts. It binds independently of the counts above.",
      -  "type": "number"
      -}
    • removedInput schema / properties / maxImagesPerDay
      Removed value: -{
      -  "description": "how many NEW images a day it may render when the Library runs dry. 0 (default) = none, spend nothing.",
      -  "type": "number"
      -}
    • removedInput schema / properties / maxVideosPerDay
      Removed value: -{
      -  "description": "how many NEW videos a day it may render. 0 (default) = none. Video is the expensive one — hundreds of credits each.",
      -  "type": "number"
      -}
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "\"review\" (default): each batch of fresh posts waits as drafts for approval. \"auto\": fresh posts are scheduled to publish automatically.",
      +  "enum": [
      +    "review",
      +    "auto"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / pillars
      Added value: +{
      +  "description": "THE BRIEF: content pillars / topics, up to 8 short lines. Every post belongs to one. get_post_refill suggests some from the brand profile.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / postingTimes
      Added value: +{
      +  "description": "the brand's daily posting times, 24-hour \"HH:MM\" (e.g. [\"09:00\",\"13:00\",\"18:00\"]); REPLACES the list. Autopilot makes one post per posting time, and scheduled posts use the same times. get_post_refill shows the current ones.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / postsPerDay / description
      Previous value: -"cap the posts per day BELOW the number of posting times. 0 (default) = use every posting time, which is where \"3 a day\" comes from. To post MORE per day, add posting times instead."New value: +"posts a day, up to the number of posting times (\"2 times a day\" = 2). 0 (default) = one per posting time. To post MORE per day than there are posting times, also pass postingTimes."
    • addedInput schema / properties / timezone
      Added value: +{
      +  "description": "IANA timezone the posting times are in, e.g. \"America/New_York\" (default: the brand's, else UTC)",
      +  "type": "string"
      +}
  2. Changed1 schema field changedv0.1.374
    • changedInput schema / properties / linkedinOrganizationId / description
      Previous value: -"LINKEDIN — which company Page to post as (list_linkedin_pages). A single shared Page is used automatically; a Page that is not shared with this brand is ignored rather than failing the whole post."New value: +"LINKEDIN — which company Page to post as (list_linkedin_pages). A single shared Page is used automatically; a Page that is not shared with this profile is ignored rather than failing the whole post."
  3. Addedv0.1.161

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnly=false, destructive=true, idempotent=true, openWorld=true) by disclosing what the pause actually destroys (the recurring job is deleted), what is left untouched (queued posts), and that switching on always creates NEW assets and never re-posts the Library. Refusal preconditions and the once-only brief requirement are behavior an agent could not infer from 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.

Conciseness4/5

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

Front-loaded with the core action and example phrasings, and most sentences earn their place given 19 parameters. It is dense and repeats the postsPerDay/postingTimes relationship that the schema already spells out, which costs some crispness.

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

Completeness5/5

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

No output schema exists, and for a 19-parameter, nested-object mutation tool the description covers defaults, refusal conditions, pause semantics and cross-parameter interactions thoroughly. An agent has enough to invoke it correctly without external context.

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

Parameters4/5

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

Schema description coverage is 95%, so the baseline is 3, but the description adds real meaning on top: the interaction between postsPerDay, postingTimes and channelPostsPerDay (e.g. "4 a day" requires four postingTimes) and the PASS ONLY WHAT CHANGES convention. It stops short of documenting a few params (e.g. forgetCaptionEdits, daysAhead defaults) in prose.

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

Purpose5/5

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

States a specific verb set (turn on / change / pause) and the exact resource (autopilot posting, the posting refill), and immediately distinguishes itself from siblings get_post_refill, run_post_refill and cancel_scheduled. An agent can tell what this does and what it is not without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes to alternatives: get_post_refill for cost/current times, run_post_refill to approve drafts, cancel_scheduled for already-queued posts. It also states refusal conditions (no channel connected, nothing a day would be made) and instructs the agent to ask the user for missing goal/mode/channels rather than guessing.

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

Deploy Server

Other Tools