← SkryvoCONTENT HISTORY

Update to Skryvo

Snapshot Nov 10, 2026 · 07:25 UTC · version 2.1.0

Collection source: downloaded plugin package.

WHAT CHANGED

Instructions updated for social-publishing

Skill instructions — Now says: what the person wants, in their words, e.g. "warmer" or "bolder". `photo_id` builds it around one of the brand's own photos. - Where the person added their...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Skryvo and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Nov 9, 2026 · 01:25 UTC

the person's steer, e.g. "warmer" or "bolder". the time; `as_draft: true` sends it there as a draft instead. `repurpose_article` turns it into one post per platform for `schedule_post`. `article_results` shows how it does once publ...

After

Nov 10, 2026 · 07:25 UTC

what the person wants, in their words, e.g. "warmer" or "bolder". `photo_id` builds it around one of the brand's own photos. - Where the person added their own design for that format under the brand, the picture follows its layout and ...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -43,7 +43,10 @@
   to. It designs one picture in the brand's kept look and returns a copy sized for each platform
   (`image_url`, `width`, `height`), plus the Image Studio credits used and left. It takes about a minute.
 - The picture carries the post's opening line; pass `headline` (up to nine words) for other words, and
-  `direction` for the person's steer, e.g. "warmer" or "bolder".
+  `direction` for what the person wants, in their words, e.g. "warmer" or "bolder". `photo_id` builds it
+  around one of the brand's own photos.
+- Where the person added their own design for that format under the brand, the picture follows its layout and
+  style. Reference images for one piece are chosen in Skryvo under For this piece; don't promise them here.
 - Show every picture before scheduling. If it comes back refused (no credits, or no kept look yet), pass
   the reason on; a brand with no kept look gets one through `brand_design` and `change_look`, with the
   person's yes before `keep`.
@@ -106,8 +109,14 @@
    cites its sources (`geo_citations`) or rewrites only disputed sentences (`accuracy`), saved as a new
    version. The first improvement is free, each after costs one generation: ask first.
 5. `publish_article` to a channel of kind `blog`, only after the person approves the article, the blog and
-   the time; `as_draft: true` sends it there as a draft instead. `repurpose_article` turns it into one post
-   per platform for `schedule_post`. `article_results` shows how it does once published.
+   the time; `as_draft: true` sends it there as a draft instead. An article read from a live address goes to a
+   blog only as a draft or as an update of that post. `repurpose_article` turns it into one post per
+   platform for `schedule_post`. `article_results` shows how it does once published.
+
+The person's own article: `import_article` brings it in from text (markdown or HTML) or a public address,
+free within the plan's monthly limit, once they say it is theirs to publish (`is_mine`). Ask first. Every
+article tool then works on its id. A post the person wrote themselves needs no `write_post`: pass their words
+to `schedule_post` as they are.
 
 To turn a page, release note or transcript into a campaign, pass its address as a `plan_article` source,
 then write, repurpose and schedule as above.
Full technical diff · 1 changed fields

changed /skill_md_contents

BEFORE
"---\nname: social-publishing\ndescription: Plan a content calendar, write, picture, schedule, change and review social media posts, blog articles, marketing emails, ad copy and product listings with Skryvo. Use when the person asks to plan or write content for their brand, post or schedule to their connected social accounts or blogs, post their own video, move, change or cancel a scheduled post, approve a team post, or learn which posts, articles, channels and times perform best.\n---\n\n# Social publishing with Skryvo\n\nSkryvo writes in the person's own brand voice and publishes through the accounts they connected in\nSkryvo. Its tools come from the `skryvo` MCP server. The first call asks the person to sign in to\nSkryvo and approve access.\n\n## Start every task by reading the setup\n\n1. Call `list_brands`. With several brands, ask which one the post is for unless the request names it.\n   Use the brand marked default when the person says it doesn't matter.\n2. Call `list_channels`. Use only channels that serve the chosen brand (`brand_ids` empty means every\n   brand). A channel with `needs_reconnect: true` can't post: tell the person to reconnect it in Skryvo\n   under Settings › Connected Accounts. A channel of kind `blog` takes articles, not posts.\n3. Each channel's `can` says what it takes: its word limit, required media, video limits, thread length,\n   polls, comments, how a link appears, its own `options` and what the person `must_choose`. Rely on it\n   rather than on what you remember about a network.\n4. If the platform they want has no channel, call `list_platforms`. Where `can_connect` is true, point them\n   to Settings › Connected Accounts in Skryvo; otherwise say it isn't available yet. Don't schedule to\n   another platform instead.\n\n## Write\n\n- Call `write_post` with the topic (up to 200 characters: the news, the offer, who it is for) and the\n  platforms (up to four per call). The call uses one of the person's Skryvo generations for all of them.\n- Pass only what the person said (platforms, tone, language, audience, call_to_action, hashtags, link,\n  pictures). When platforms or pictures are left out, `write_post` first returns `status: \"confirm\"`:\n  every setting with where it came from, the cost in generations and image credits, and what is left this\n  month. Show it as one message, let the person turn anything on or off, then call again with their final\n  values and `confirmed: true`. With pictures on, each post comes back with its picture in the brand's look.\n- Show every draft in full, labelled by platform, before anything is scheduled. Edit on request; small\n  wording changes don't need a new `write_post` call.\n- If a platform comes back with an `error` (for example, the monthly limit), report it as it is and carry\n  on with the others.\n\n## Picture\n\n- When the person wants a picture, call `design_picture` with the approved text and the platforms it goes\n  to. It designs one picture in the brand's kept look and returns a copy sized for each platform\n  (`image_url`, `width`, `height`), plus the Image Studio credits used and left. It takes about a minute.\n- The picture carries the post's opening line; pass `headline` (up to nine words) for other words, and\n  `direction` for the person's steer, e.g. \"warmer\" or \"bolder\".\n- Show every picture before scheduling. If it comes back refused (no credits, or no kept look yet), pass\n  the reason on; a brand with no kept look gets one through `brand_design` and `change_look`, with the\n  person's yes before `keep`.\n\n## Schedule\n\n- Never schedule without the person's clear go-ahead on the exact text, channels and time.\n- Pass times as ISO 8601 with the person's time zone offset, e.g. `2026-10-14T09:00:00-04:00`. Without\n  `at`, the post goes out in about five minutes. Skryvo moves a time to its next quarter hour.\n- One `schedule_post` call covers every channel. Pass pictures as `images`, `{channel_id: image_url}`,\n  giving each channel the copy sized for its platform. `image_url` puts one picture on every channel.\n- `by_channel`, `{channel_id: {...}}`, gives a channel what is its own: `text`, `image_url`, `video_id`,\n  `title`, `options`, `thread` (the posts that follow), `numbered`, `poll`, `comments`, `tiktok`, `youtube`.\n  Send only what that channel's `can` lists. Anything it can't take is refused and nothing is scheduled.\n- On a channel whose link is a `destination`, `link` is where its button or pin points; `button` chooses\n  a Google Business Profile button.\n- Whatever `must_choose` names is the person's answer, never yours, such as a TikTok audience\n  (`tiktok_privacy`) or whether a YouTube video is made for kids.\n- Confirm afterwards with the returned date and time of each post.\n\n## The person's own video\n\nSkryvo never makes video; a post carries a clip the person already has. `list_videos` shows the ones ready.\nTo add one, `add_video` with its file name and size returns an `upload_url`; send the file there with an\nHTTP PUT, then call `finish_video`. An agent that can't send files asks the person to upload it in Skryvo.\nSchedule it with `by_channel.video_id`.\n\n## Check and change\n\n- `list_scheduled_posts` shows what is coming up and anything that failed to publish, with the reason.\n- `change_post` moves a post that hasn't gone out, changes its words, or both. Confirm first.\n- `cancel_post` removes a scheduled post. Confirm which post first; it can't be undone.\n- `review_post` records the person's own decision on a team post waiting for approval. Asking for changes\n  needs a note saying what should change. Never decide for them.\n- `find_content` finds earlier work by kind, with the ids the other tools take.\n\n## Plan a calendar\n\n`plan_calendar` plans a week or a month of topics for a brand and adds nothing; it uses one generation.\nShow the rows, let the person keep or change them, then `accept_plan` with those rows adds them to the\ncalendar as planned topics. Nothing is written or published by this.\n\n## Learn what works\n\n- `post_results` (7, 30 or 90 days, optionally one brand) gives reach, engagement and clicks per channel,\n  the best posting times and the top posts. Use it to suggest when to post and which angles to repeat,\n  and say how many days the numbers cover.\n- Results arrive about an hour after a post goes live, so a brand-new post shows no numbers yet.\n\n## Articles\n\n1. `plan_article` with the topic and only what the person said. It is free and takes about a minute:\n   headline options, the search phrase, the outline, sources and facts, the settings with where each came\n   from, the cost, and up to three questions only the person can answer. Show it all as one message.\n2. `write_article` with the plan id, the person's chosen headline and their answers in their own words.\n   It writes in the background in about four minutes; check `article_status` about once a minute. A\n   failed article is not charged.\n3. Show the finished article, its score and each checked claim with its verdict and sources.\n4. `article_seo` checks it for free. `improve_article` fixes what it found (goal `seo`), adds an FAQ that\n   cites its sources (`geo_citations`) or rewrites only disputed sentences (`accuracy`), saved as a new\n   version. The first improvement is free, each after costs one generation: ask first.\n5. `publish_article` to a channel of kind `blog`, only after the person approves the article, the blog and\n   the time; `as_draft: true` sends it there as a draft instead. `repurpose_article` turns it into one post\n   per platform for `schedule_post`. `article_results` shows how it does once published.\n\nTo turn a page, release note or transcript into a campaign, pass its address as a `plan_article` source,\nthen write, repurpose and schedule as above.\n\n## Emails, ad copy and product listings\n\n- `write_email` writes subject lines, a preheader, the body and a call to action. `write_listing` writes a\n  title, description and bullets shaped for the marketplace. `write_ad` writes copy shaped for each ad\n  platform. None of them sends, posts or runs anything.\n- Left without a type or marketplace, the first call to the email and listing tools returns\n  `status: \"confirm\"`; show it, then call again with the person's choices.\n\n## A new brand\n\n`add_brand` reads a brand's voice, kit and facts from its website in the background, using one of the\nmonth's voice trainings. Ask first; it appears in `list_brands` when it is added and improves over a few\nminutes.\n\n## Balance and defaults\n\n- `balance` says what this month still allows; check it before a large request.\n- When a summary shows `differs_from_brand`, offer once to keep those choices, and call `keep_defaults`\n  only after the person says yes.\n"
AFTER
"---\nname: social-publishing\ndescription: Plan a content calendar, write, picture, schedule, change and review social media posts, blog articles, marketing emails, ad copy and product listings with Skryvo. Use when the person asks to plan or write content for their brand, post or schedule to their connected social accounts or blogs, post their own video, move, change or cancel a scheduled post, approve a team post, or learn which posts, articles, channels and times perform best.\n---\n\n# Social publishing with Skryvo\n\nSkryvo writes in the person's own brand voice and publishes through the accounts they connected in\nSkryvo. Its tools come from the `skryvo` MCP server. The first call asks the person to sign in to\nSkryvo and approve access.\n\n## Start every task by reading the setup\n\n1. Call `list_brands`. With several brands, ask which one the post is for unless the request names it.\n   Use the brand marked default when the person says it doesn't matter.\n2. Call `list_channels`. Use only channels that serve the chosen brand (`brand_ids` empty means every\n   brand). A channel with `needs_reconnect: true` can't post: tell the person to reconnect it in Skryvo\n   under Settings › Connected Accounts. A channel of kind `blog` takes articles, not posts.\n3. Each channel's `can` says what it takes: its word limit, required media, video limits, thread length,\n   polls, comments, how a link appears, its own `options` and what the person `must_choose`. Rely on it\n   rather than on what you remember about a network.\n4. If the platform they want has no channel, call `list_platforms`. Where `can_connect` is true, point them\n   to Settings › Connected Accounts in Skryvo; otherwise say it isn't available yet. Don't schedule to\n   another platform instead.\n\n## Write\n\n- Call `write_post` with the topic (up to 200 characters: the news, the offer, who it is for) and the\n  platforms (up to four per call). The call uses one of the person's Skryvo generations for all of them.\n- Pass only what the person said (platforms, tone, language, audience, call_to_action, hashtags, link,\n  pictures). When platforms or pictures are left out, `write_post` first returns `status: \"confirm\"`:\n  every setting with where it came from, the cost in generations and image credits, and what is left this\n  month. Show it as one message, let the person turn anything on or off, then call again with their final\n  values and `confirmed: true`. With pictures on, each post comes back with its picture in the brand's look.\n- Show every draft in full, labelled by platform, before anything is scheduled. Edit on request; small\n  wording changes don't need a new `write_post` call.\n- If a platform comes back with an `error` (for example, the monthly limit), report it as it is and carry\n  on with the others.\n\n## Picture\n\n- When the person wants a picture, call `design_picture` with the approved text and the platforms it goes\n  to. It designs one picture in the brand's kept look and returns a copy sized for each platform\n  (`image_url`, `width`, `height`), plus the Image Studio credits used and left. It takes about a minute.\n- The picture carries the post's opening line; pass `headline` (up to nine words) for other words, and\n  `direction` for what the person wants, in their words, e.g. \"warmer\" or \"bolder\". `photo_id` builds it\n  around one of the brand's own photos.\n- Where the person added their own design for that format under the brand, the picture follows its layout and\n  style. Reference images for one piece are chosen in Skryvo under For this piece; don't promise them here.\n- Show every picture before scheduling. If it comes back refused (no credits, or no kept look yet), pass\n  the reason on; a brand with no kept look gets one through `brand_design` and `change_look`, with the\n  person's yes before `keep`.\n\n## Schedule\n\n- Never schedule without the person's clear go-ahead on the exact text, channels and time.\n- Pass times as ISO 8601 with the person's time zone offset, e.g. `2026-10-14T09:00:00-04:00`. Without\n  `at`, the post goes out in about five minutes. Skryvo moves a time to its next quarter hour.\n- One `schedule_post` call covers every channel. Pass pictures as `images`, `{channel_id: image_url}`,\n  giving each channel the copy sized for its platform. `image_url` puts one picture on every channel.\n- `by_channel`, `{channel_id: {...}}`, gives a channel what is its own: `text`, `image_url`, `video_id`,\n  `title`, `options`, `thread` (the posts that follow), `numbered`, `poll`, `comments`, `tiktok`, `youtube`.\n  Send only what that channel's `can` lists. Anything it can't take is refused and nothing is scheduled.\n- On a channel whose link is a `destination`, `link` is where its button or pin points; `button` chooses\n  a Google Business Profile button.\n- Whatever `must_choose` names is the person's answer, never yours, such as a TikTok audience\n  (`tiktok_privacy`) or whether a YouTube video is made for kids.\n- Confirm afterwards with the returned date and time of each post.\n\n## The person's own video\n\nSkryvo never makes video; a post carries a clip the person already has. `list_videos` shows the ones ready.\nTo add one, `add_video` with its file name and size returns an `upload_url`; send the file there with an\nHTTP PUT, then call `finish_video`. An agent that can't send files asks the person to upload it in Skryvo.\nSchedule it with `by_channel.video_id`.\n\n## Check and change\n\n- `list_scheduled_posts` shows what is coming up and anything that failed to publish, with the reason.\n- `change_post` moves a post that hasn't gone out, changes its words, or both. Confirm first.\n- `cancel_post` removes a scheduled post. Confirm which post first; it can't be undone.\n- `review_post` records the person's own decision on a team post waiting for approval. Asking for changes\n  needs a note saying what should change. Never decide for them.\n- `find_content` finds earlier work by kind, with the ids the other tools take.\n\n## Plan a calendar\n\n`plan_calendar` plans a week or a month of topics for a brand and adds nothing; it uses one generation.\nShow the rows, let the person keep or change them, then `accept_plan` with those rows adds them to the\ncalendar as planned topics. Nothing is written or published by this.\n\n## Learn what works\n\n- `post_results` (7, 30 or 90 days, optionally one brand) gives reach, engagement and clicks per channel,\n  the best posting times and the top posts. Use it to suggest when to post and which angles to repeat,\n  and say how many days the numbers cover.\n- Results arrive about an hour after a post goes live, so a brand-new post shows no numbers yet.\n\n## Articles\n\n1. `plan_article` with the topic and only what the person said. It is free and takes about a minute:\n   headline options, the search phrase, the outline, sources and facts, the settings with where each came\n   from, the cost, and up to three questions only the person can answer. Show it all as one message.\n2. `write_article` with the plan id, the person's chosen headline and their answers in their own words.\n   It writes in the background in about four minutes; check `article_status` about once a minute. A\n   failed article is not charged.\n3. Show the finished article, its score and each checked claim with its verdict and sources.\n4. `article_seo` checks it for free. `improve_article` fixes what it found (goal `seo`), adds an FAQ that\n   cites its sources (`geo_citations`) or rewrites only disputed sentences (`accuracy`), saved as a new\n   version. The first improvement is free, each after costs one generation: ask first.\n5. `publish_article` to a channel of kind `blog`, only after the person approves the article, the blog and\n   the time; `as_draft: true` sends it there as a draft instead. An article read from a live address goes to a\n   blog only as a draft or as an update of that post. `repurpose_article` turns it into one post per\n   platform for `schedule_post`. `article_results` shows how it does once published.\n\nThe person's own article: `import_article` brings it in from text (markdown or HTML) or a public address,\nfree within the plan's monthly limit, once they say it is theirs to publish (`is_mine`). Ask first. Every\narticle tool then works on its id. A post the person wrote themselves needs no `write_post`: pass their words\nto `schedule_post` as they are.\n\nTo turn a page, release note or transcript into a campaign, pass its address as a `plan_article` source,\nthen write, repurpose and schedule as above.\n\n## Emails, ad copy and product listings\n\n- `write_email` writes subject lines, a preheader, the body and a call to action. `write_listing` writes a\n  title, description and bullets shaped for the marketplace. `write_ad` writes copy shaped for each ad\n  platform. None of them sends, posts or runs anything.\n- Left without a type or marketplace, the first call to the email and listing tools returns\n  `status: \"confirm\"`; show it, then call again with the person's choices.\n\n## A new brand\n\n`add_brand` reads a brand's voice, kit and facts from its website in the background, using one of the\nmonth's voice trainings. Ask first; it appears in `list_brands` when it is added and improves over a few\nminutes.\n\n## Balance and defaults\n\n- `balance` says what this month still allows; check it before a large request.\n- When a summary shows `differs_from_brand`, offer once to keep those choices, and call `keep_defaults`\n  only after the person says yes.\n"
Full snapshot data
{
  "description": "Plan a content calendar, write, picture, schedule, change and review social media posts, blog articles, marketing emails, ad copy and product listings with Skryvo. Use when the person asks to plan or write content for their brand, post or schedule to their connected social accounts or blogs, post their own video, move, change or cancel a scheduled post, approve a team post, or learn which posts, articles, channels and times perform best.",
  "included_files": [],
  "name": "social-publishing",
  "skill_md_contents": "---\nname: social-publishing\ndescription: Plan a content calendar, write, picture, schedule, change and review social media posts, blog articles, marketing emails, ad copy and product listings with Skryvo. Use when the person asks to plan or write content for their brand, post or schedule to their connected social accounts or blogs, post their own video, move, change or cancel a scheduled post, approve a team post, or learn which posts, articles, channels and times perform best.\n---\n\n# Social publishing with Skryvo\n\nSkryvo writes in the person's own brand voice and publishes through the accounts they connected in\nSkryvo. Its tools come from the `skryvo` MCP server. The first call asks the person to sign in to\nSkryvo and approve access.\n\n## Start every task by reading the setup\n\n1. Call `list_brands`. With several brands, ask which one the post is for unless the request names it.\n   Use the brand marked default when the person says it doesn't matter.\n2. Call `list_channels`. Use only channels that serve the chosen brand (`brand_ids` empty means every\n   brand). A channel with `needs_reconnect: true` can't post: tell the person to reconnect it in Skryvo\n   under Settings › Connected Accounts. A channel of kind `blog` takes articles, not posts.\n3. Each channel's `can` says what it takes: its word limit, required media, video limits, thread length,\n   polls, comments, how a link appears, its own `options` and what the person `must_choose`. Rely on it\n   rather than on what you remember about a network.\n4. If the platform they want has no channel, call `list_platforms`. Where `can_connect` is true, point them\n   to Settings › Connected Accounts in Skryvo; otherwise say it isn't available yet. Don't schedule to\n   another platform instead.\n\n## Write\n\n- Call `write_post` with the topic (up to 200 characters: the news, the offer, who it is for) and the\n  platforms (up to four per call). The call uses one of the person's Skryvo generations for all of them.\n- Pass only what the person said (platforms, tone, language, audience, call_to_action, hashtags, link,\n  pictures). When platforms or pictures are left out, `write_post` first returns `status: \"confirm\"`:\n  every setting with where it came from, the cost in generations and image credits, and what is left this\n  month. Show it as one message, let the person turn anything on or off, then call again with their final\n  values and `confirmed: true`. With pictures on, each post comes back with its picture in the brand's look.\n- Show every draft in full, labelled by platform, before anything is scheduled. Edit on request; small\n  wording changes don't need a new `write_post` call.\n- If a platform comes back with an `error` (for example, the monthly limit), report it as it is and carry\n  on with the others.\n\n## Picture\n\n- When the person wants a picture, call `design_picture` with the approved text and the platforms it goes\n  to. It designs one picture in the brand's kept look and returns a copy sized for each platform\n  (`image_url`, `width`, `height`), plus the Image Studio credits used and left. It takes about a minute.\n- The picture carries the post's opening line; pass `headline` (up to nine words) for other words, and\n  `direction` for what the person wants, in their words, e.g. \"warmer\" or \"bolder\". `photo_id` builds it\n  around one of the brand's own photos.\n- Where the person added their own design for that format under the brand, the picture follows its layout and\n  style. Reference images for one piece are chosen in Skryvo under For this piece; don't promise them here.\n- Show every picture before scheduling. If it comes back refused (no credits, or no kept look yet), pass\n  the reason on; a brand with no kept look gets one through `brand_design` and `change_look`, with the\n  person's yes before `keep`.\n\n## Schedule\n\n- Never schedule without the person's clear go-ahead on the exact text, channels and time.\n- Pass times as ISO 8601 with the person's time zone offset, e.g. `2026-10-14T09:00:00-04:00`. Without\n  `at`, the post goes out in about five minutes. Skryvo moves a time to its next quarter hour.\n- One `schedule_post` call covers every channel. Pass pictures as `images`, `{channel_id: image_url}`,\n  giving each channel the copy sized for its platform. `image_url` puts one picture on every channel.\n- `by_channel`, `{channel_id: {...}}`, gives a channel what is its own: `text`, `image_url`, `video_id`,\n  `title`, `options`, `thread` (the posts that follow), `numbered`, `poll`, `comments`, `tiktok`, `youtube`.\n  Send only what that channel's `can` lists. Anything it can't take is refused and nothing is scheduled.\n- On a channel whose link is a `destination`, `link` is where its button or pin points; `button` chooses\n  a Google Business Profile button.\n- Whatever `must_choose` names is the person's answer, never yours, such as a TikTok audience\n  (`tiktok_privacy`) or whether a YouTube video is made for kids.\n- Confirm afterwards with the returned date and time of each post.\n\n## The person's own video\n\nSkryvo never makes video; a post carries a clip the person already has. `list_videos` shows the ones ready.\nTo add one, `add_video` with its file name and size returns an `upload_url`; send the file there with an\nHTTP PUT, then call `finish_video`. An agent that can't send files asks the person to upload it in Skryvo.\nSchedule it with `by_channel.video_id`.\n\n## Check and change\n\n- `list_scheduled_posts` shows what is coming up and anything that failed to publish, with the reason.\n- `change_post` moves a post that hasn't gone out, changes its words, or both. Confirm first.\n- `cancel_post` removes a scheduled post. Confirm which post first; it can't be undone.\n- `review_post` records the person's own decision on a team post waiting for approval. Asking for changes\n  needs a note saying what should change. Never decide for them.\n- `find_content` finds earlier work by kind, with the ids the other tools take.\n\n## Plan a calendar\n\n`plan_calendar` plans a week or a month of topics for a brand and adds nothing; it uses one generation.\nShow the rows, let the person keep or change them, then `accept_plan` with those rows adds them to the\ncalendar as planned topics. Nothing is written or published by this.\n\n## Learn what works\n\n- `post_results` (7, 30 or 90 days, optionally one brand) gives reach, engagement and clicks per channel,\n  the best posting times and the top posts. Use it to suggest when to post and which angles to repeat,\n  and say how many days the numbers cover.\n- Results arrive about an hour after a post goes live, so a brand-new post shows no numbers yet.\n\n## Articles\n\n1. `plan_article` with the topic and only what the person said. It is free and takes about a minute:\n   headline options, the search phrase, the outline, sources and facts, the settings with where each came\n   from, the cost, and up to three questions only the person can answer. Show it all as one message.\n2. `write_article` with the plan id, the person's chosen headline and their answers in their own words.\n   It writes in the background in about four minutes; check `article_status` about once a minute. A\n   failed article is not charged.\n3. Show the finished article, its score and each checked claim with its verdict and sources.\n4. `article_seo` checks it for free. `improve_article` fixes what it found (goal `seo`), adds an FAQ that\n   cites its sources (`geo_citations`) or rewrites only disputed sentences (`accuracy`), saved as a new\n   version. The first improvement is free, each after costs one generation: ask first.\n5. `publish_article` to a channel of kind `blog`, only after the person approves the article, the blog and\n   the time; `as_draft: true` sends it there as a draft instead. An article read from a live address goes to a\n   blog only as a draft or as an update of that post. `repurpose_article` turns it into one post per\n   platform for `schedule_post`. `article_results` shows how it does once published.\n\nThe person's own article: `import_article` brings it in from text (markdown or HTML) or a public address,\nfree within the plan's monthly limit, once they say it is theirs to publish (`is_mine`). Ask first. Every\narticle tool then works on its id. A post the person wrote themselves needs no `write_post`: pass their words\nto `schedule_post` as they are.\n\nTo turn a page, release note or transcript into a campaign, pass its address as a `plan_article` source,\nthen write, repurpose and schedule as above.\n\n## Emails, ad copy and product listings\n\n- `write_email` writes subject lines, a preheader, the body and a call to action. `write_listing` writes a\n  title, description and bullets shaped for the marketplace. `write_ad` writes copy shaped for each ad\n  platform. None of them sends, posts or runs anything.\n- Left without a type or marketplace, the first call to the email and listing tools returns\n  `status: \"confirm\"`; show it, then call again with the person's choices.\n\n## A new brand\n\n`add_brand` reads a brand's voice, kit and facts from its website in the background, using one of the\nmonth's voice trainings. Ask first; it appears in `list_brands` when it is added and improves over a few\nminutes.\n\n## Balance and defaults\n\n- `balance` says what this month still allows; check it before a large request.\n- When a summary shows `differs_from_brand`, offer once to keep those choices, and call `keep_defaults`\n  only after the person says yes.\n"
}

SHA-256 of public snapshot: 0d94a19abec02dd957b19f75d3af9cd4c53fd6a94a4222965f593ee0233ab1f8