Update to Skryvo
Snapshot Nov 9, 2026 · 01:25 UTC · version 2.0.0
Collection source: downloaded plugin package.
Instructions updated for social-publishing
Full description — Now says: Plan a content calendar, write, picture, schedule, change and review social media posts, blog articles, marketing emails, ad copy and product listings with...
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 3 plugins free · no card required.
All fields and original values.
Full description
Nov 7, 2026 · 18:09 UTC
Plan, write, schedule and review social media posts with Skryvo. Use when the person asks to write or schedule posts for their brand, post to LinkedIn, X, Bluesky, Threads, Mastodon, Pinterest, Telegram, Discord, Slack or other connected...
Nov 9, 2026 · 01:25 UTC
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 o...
Skill instructions
Nov 7, 2026 · 18:09 UTC
Plan, write, schedule and review social media posts with Skryvo. Use when the person asks to write or schedule posts for their brand, post to LinkedIn, X, Bluesky, Threads, Mastodon, Pinterest, Telegram, Discord, Slack or other connected...
Nov 9, 2026 · 01:25 UTC
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 o...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -1,6 +1,6 @@ --- name: social-publishing -description: Plan, write, schedule and review social media posts with Skryvo. Use when the person asks to write or schedule posts for their brand, post to LinkedIn, X, Bluesky, Threads, Mastodon, Pinterest, Telegram, Discord, Slack or other connected accounts, see what is scheduled, cancel a post, or learn which posts, channels and times perform best. +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. --- # Social publishing with Skryvo @@ -16,32 +16,75 @@ 2. Call `list_channels`. Use only channels that serve the chosen brand (`brand_ids` empty means every brand). A channel with `needs_reconnect: true` can't post: tell the person to reconnect it in Skryvo under Settings › Connected Accounts. A channel of kind `blog` takes articles, not posts. -3. If the platform they want has no channel, say so and point them to Settings › Connected Accounts in - Skryvo, which connects it in a minute. Don't schedule to another platform instead. +3. Each channel's `can` says what it takes: its word limit, required media, video limits, thread length, + polls, comments, how a link appears, its own `options` and what the person `must_choose`. Rely on it + rather than on what you remember about a network. +4. If the platform they want has no channel, call `list_platforms`. Where `can_connect` is true, point them + to Settings › Connected Accounts in Skryvo; otherwise say it isn't available yet. Don't schedule to + another platform instead. ## Write -- Call `write_post` with the topic and the platforms (up to four per call). Each platform uses one of the - person's Skryvo generations, so write only for the platforms they asked for. +- Call `write_post` with the topic (up to 200 characters: the news, the offer, who it is for) and the + platforms (up to four per call). The call uses one of the person's Skryvo generations for all of them. +- Pass only what the person said (platforms, tone, language, audience, call_to_action, hashtags, link, + pictures). When platforms or pictures are left out, `write_post` first returns `status: "confirm"`: + every setting with where it came from, the cost in generations and image credits, and what is left this + month. Show it as one message, let the person turn anything on or off, then call again with their final + values and `confirmed: true`. With pictures on, each post comes back with its picture in the brand's look. - Show every draft in full, labelled by platform, before anything is scheduled. Edit on request; small wording changes don't need a new `write_post` call. - If a platform comes back with an `error` (for example, the monthly limit), report it as it is and carry on with the others. +## Picture + +- When the person wants a picture, call `design_picture` with the approved text and the platforms it goes + 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". +- 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`. + ## Schedule - Never schedule without the person's clear go-ahead on the exact text, channels and time. - Pass times as ISO 8601 with the person's time zone offset, e.g. `2026-10-14T09:00:00-04:00`. Without `at`, the post goes out in about five minutes. Skryvo moves a time to its next quarter hour. -- One `schedule_post` call takes one text for several channels. Different text per platform means one - call per platform. -- TikTok needs the audience the person chooses (`tiktok_privacy`); always ask, never pick one. +- One `schedule_post` call covers every channel. Pass pictures as `images`, `{channel_id: image_url}`, + giving each channel the copy sized for its platform. `image_url` puts one picture on every channel. +- `by_channel`, `{channel_id: {...}}`, gives a channel what is its own: `text`, `image_url`, `video_id`, + `title`, `options`, `thread` (the posts that follow), `numbered`, `poll`, `comments`, `tiktok`, `youtube`. + Send only what that channel's `can` lists. Anything it can't take is refused and nothing is scheduled. +- On a channel whose link is a `destination`, `link` is where its button or pin points; `button` chooses + a Google Business Profile button. +- Whatever `must_choose` names is the person's answer, never yours, such as a TikTok audience + (`tiktok_privacy`) or whether a YouTube video is made for kids. - Confirm afterwards with the returned date and time of each post. +## The person's own video + +Skryvo never makes video; a post carries a clip the person already has. `list_videos` shows the ones ready. +To add one, `add_video` with its file name and size returns an `upload_url`; send the file there with an +HTTP PUT, then call `finish_video`. An agent that can't send files asks the person to upload it in Skryvo. +Schedule it with `by_channel.video_id`. + ## Check and change - `list_scheduled_posts` shows what is coming up and anything that failed to publish, with the reason. +- `change_post` moves a post that hasn't gone out, changes its words, or both. Confirm first. - `cancel_post` removes a scheduled post. Confirm which post first; it can't be undone. +- `review_post` records the person's own decision on a team post waiting for approval. Asking for changes + needs a note saying what should change. Never decide for them. +- `find_content` finds earlier work by kind, with the ids the other tools take. + +## Plan a calendar + +`plan_calendar` plans a week or a month of topics for a brand and adds nothing; it uses one generation. +Show the rows, let the person keep or change them, then `accept_plan` with those rows adds them to the +calendar as planned topics. Nothing is written or published by this. ## Learn what works @@ -49,3 +92,42 @@ the best posting times and the top posts. Use it to suggest when to post and which angles to repeat, and say how many days the numbers cover. - Results arrive about an hour after a post goes live, so a brand-new post shows no numbers yet. + +## Articles + +1. `plan_article` with the topic and only what the person said. It is free and takes about a minute: + headline options, the search phrase, the outline, sources and facts, the settings with where each came + from, the cost, and up to three questions only the person can answer. Show it all as one message. +2. `write_article` with the plan id, the person's chosen headline and their answers in their own words. + It writes in the background in about four minutes; check `article_status` about once a minute. A + failed article is not charged. +3. Show the finished article, its score and each checked claim with its verdict and sources. +4. `article_seo` checks it for free. `improve_article` fixes what it found (goal `seo`), adds an FAQ that + 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. + +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. + +## Emails, ad copy and product listings + +- `write_email` writes subject lines, a preheader, the body and a call to action. `write_listing` writes a + title, description and bullets shaped for the marketplace. `write_ad` writes copy shaped for each ad + platform. None of them sends, posts or runs anything. +- Left without a type or marketplace, the first call to the email and listing tools returns + `status: "confirm"`; show it, then call again with the person's choices. + +## A new brand + +`add_brand` reads a brand's voice, kit and facts from its website in the background, using one of the +month's voice trainings. Ask first; it appears in `list_brands` when it is added and improves over a few +minutes. + +## Balance and defaults + +- `balance` says what this month still allows; check it before a large request. +- When a summary shows `differs_from_brand`, offer once to keep those choices, and call `keep_defaults` + only after the person says yes.
Full technical diff · 2 changed fields
changed /description
"Plan, write, schedule and review social media posts with Skryvo. Use when the person asks to write or schedule posts for their brand, post to LinkedIn, X, Bluesky, Threads, Mastodon, Pinterest, Telegram, Discord, Slack or other connected accounts, see what is scheduled, cancel a post, or learn which posts, channels and times perform best."
"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."
changed /skill_md_contents
"---\nname: social-publishing\ndescription: Plan, write, schedule and review social media posts with Skryvo. Use when the person asks to write or schedule posts for their brand, post to LinkedIn, X, Bluesky, Threads, Mastodon, Pinterest, Telegram, Discord, Slack or other connected accounts, see what is scheduled, cancel a post, or learn which posts, 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. If the platform they want has no channel, say so and point them to Settings › Connected Accounts in\n Skryvo, which connects it in a minute. Don't schedule to another platform instead.\n\n## Write\n\n- Call `write_post` with the topic and the platforms (up to four per call). Each platform uses one of the\n person's Skryvo generations, so write only for the platforms they asked for.\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## 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 takes one text for several channels. Different text per platform means one\n call per platform.\n- TikTok needs the audience the person chooses (`tiktok_privacy`); always ask, never pick one.\n- Confirm afterwards with the returned date and time of each post.\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- `cancel_post` removes a scheduled post. Confirm which post first; it can't be undone.\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"
"---\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"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 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"
}SHA-256 of public snapshot: 5b35d39b1b28f8a78e660ca30aa7adb4166667965dab25dbd2ee3a7bafc4bc14