SEO: Apply proposal
seo_apply_proposalPut a cluster's proposal on the workspace's site. target='page' writes the SEO title and meta description of an existing site page (the cluster's mapped page, or page_id); target='post' does the same for a blog post (post_id or the mapped one); target='new_draft' creates an unpublished blog draft from the proposal. target='new_draft' with generate=true has AI write the FULL article (keywords, H2 outline, competitor insights) into the blog as a draft at the blog's AI-article price shown in the confirmation; it is never published automatically. The URL never changes; the H1 is returned as a recommendation. title/meta override the proposal. A page change goes live with the site's next publish. Undo with seo_undo_apply. CONFIRMATION: this tool is PROPOSED, never performed directly. You get status='confirmation_required' with an action_id and a plan_token, and the write happens only after confirm_action.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"cluster_id": "<cluster_id>",
"target": "<target>"
},
"name": "seo_apply_proposal"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| meta | No | ||
| slug | No | new_draft only: the draft's slug. | |
| title | No | ||
| length | No | generate only: article length (default: matches the competitors ranking for the cluster). | |
| target | Yes | ||
| page_id | No | ||
| post_id | No | ||
| generate | No | new_draft only: AI writes the full article (costs AI credits). | |
| cluster_id | Yes | Cluster id as returned by seo_list_clusters or seo_growth_points. |