Check Draft
check_draftRuns Mark's content checks on draft text without saving it (six on every channel, plus two on a competitor_page): exclusion (phrases this workspace blocks or warns on), char_limit, required_meta, ai_fluff (generic AI-sounding words), unsourced_number (percentages, money and multipliers no active claim states), and placeholder (a marker left for the writer, such as [needs source], [TBD] or a bare TODO, ignored inside code, link targets and URLs; it fails). A competitor_page also gets table (a markdown table; it fails, use headings and lists) and open_placeholder (a [confirm: …] fact left to confirm; it fails), and its unsourced_number fails instead of warning. Each result is pass, warn or fail with the matched text, field and position; exclusion matches carry the rule's reason. A fail is what submit_post refuses on a draft; warnings never block. For an X thread, pass assetIds to check each post's media too. Uses this workspace's active exclusions and claims. Writes nothing. Related: save_post, get_channel_rules, get_brand_context, list_claims.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Draft body / caption. | |
| meta | No | Channel-specific fields from get_channel_rules. | |
| channel | Yes | Channel id such as linkedin or blog. | |
| assetIds | No | X threads: the asset ids save_post would get, so required_meta checks each post's media (4 images, or 1 video, or 1 GIF) with meta.threadMedia. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| checks | Yes | Mark's content checks on the saved content: exclusion, char_limit, required_meta, ai_fluff, unsourced_number, placeholder, and on a competitor_page also table and open_placeholder. On a draft, a fail stops submit_post; warn never does. |