list_blog_posts
Lists all blog posts in your account. You can filter by the prompt they were generated from or by their current status.Optional prompt ID to return only posts generated from a specific prompt.
Optional status filter. Accepted values:
GENERATING, DRAFT, PUBLISHED, FAILED.get_blog_post
Returns full content and metadata for a single blog post, including the generated body, title, and associated prompt information.The ID of the blog post to retrieve.
Unique identifier for the blog post.
The post title.
The full post body in TipTap JSON format.
Current status:
GENERATING, DRAFT, PUBLISHED, or FAILED.get_blog_publish_status
Returns the CMS publish records for a blog post, showing the publish status per connected CMS integration.The ID of the blog post to check publish status for.
Array of publish records, one per CMS connection, each showing the connection name, status, and published URL if available.
generate_blog_post
Triggers asynchronous generation of a new blog post. You must choose a generation mode, and some modes require additional parameters.The domain to generate the post for.
Generation mode. Accepted values:
FROM_SUGGESTIONS— generates from an answer gap suggestion identified by a prompt runFROM_GSC_KEYWORD— generates targeting a keyword from your Google Search Console dataFROM_COMPETITOR— generates from a competitor URL for gap or comparison content
Required when
mode is FROM_SUGGESTIONS. The ID of the prompt whose suggestions to use.Optional specific run ID to pull suggestions from when using
FROM_SUGGESTIONS mode.Required when
mode is FROM_GSC_KEYWORD. The GSC keyword to target.Required when
mode is FROM_COMPETITOR. The competitor page URL to generate content from.Optional custom title. If omitted, a title is generated automatically.
The ID of the newly created blog post. Poll
get_blog_post until status changes from GENERATING to DRAFT or FAILED.get_blog_gsc_metrics
Returns Google Search Console performance metrics for a published blog post, including clicks, impressions, CTR, and average position.The ID of the blog post to retrieve GSC metrics for.
Lookback window in days. Defaults to
28.Total organic clicks over the selected period.
Total search impressions over the selected period.
Average click-through rate as a decimal (e.g.
0.042 for 4.2%).Average search ranking position over the selected period.
update_blog_post
Updates the title and/or content of a blog post. Only posts inDRAFT status can be edited.
The ID of the blog post to update.
Updated post title.
Updated post body as a JSON string in TipTap format.
delete_blog_post
Permanently deletes a blog post and all associated CMS publish records. This action cannot be undone.The ID of the blog post to delete.
publish_blog_post
Publishes a blog post to a connected CMS. You must supply both the post ID and the CMS connection ID. Uselist_cms_connections to retrieve available connection IDs.
The ID of the blog post to publish.
The ID of the CMS connection to publish to.
list_cms_connections
Lists all connected CMS integrations for your account. Use the returned connection IDs withpublish_blog_post.
This tool takes no input parameters.
Array of CMS connections, each with an ID, name, and connection type (e.g. WordPress, Webflow).
get_content_settings
Returns the content generation settings for a domain, including tone of voice, target audience, value proposition, blocked words, and internal link configuration.Optional domain ID. Defaults to the first domain in your organisation if omitted.
update_content_settings
Updates content generation settings for a domain. Only the fields you provide are changed — all fields are optional exceptdomainId.
Optional domain ID. Defaults to the first domain in your organisation if omitted.
Value proposition describing what makes the brand unique.
Description of the target audience for generated content.
Writing tone. Accepted values:
PROFESSIONAL, CASUAL, AUTHORITATIVE, FRIENDLY, EDUCATIONAL.Language code for content generation (e.g.
en, fr, de).JSON array string of words to exclude from generated content (e.g.
'["spam","cheap"]').JSON array string of internal URLs to include in generated content (e.g.
'["https://example.com/pricing"]').JSON array string of competitor domain URLs to use for content differentiation (e.g.
'["competitor.com"]').get_persona
Returns the audience persona configured for a domain. The persona shapes the reading level, terminology, and examples used in generated content.Optional domain ID. Defaults to the first domain in your organisation if omitted.
The persona’s name (e.g. “Growth-Stage Founder”).
A description of the target audience.
Minimum age in the target range.
Maximum age in the target range.
Highest education level:
HIGH_SCHOOL, BACHELORS, MASTERS, PHD, or SELF_TAUGHT.upsert_persona
Creates or updates the audience persona for a domain. If a persona already exists for the domain, it is overwritten.The persona’s name (e.g. “Growth-Stage Founder”).
A description of the target reader, their goals, and their pain points.
Optional domain ID. Defaults to the first domain in your organisation if omitted.
Minimum age in the target demographic.
Maximum age in the target demographic.
Highest education level of the target reader. Accepted values:
HIGH_SCHOOL, BACHELORS, MASTERS, PHD, SELF_TAUGHT.