balzac-mcp

Balzac MCP server gives AI assistants native tool access to the Balzac content platform — manage workspaces, keywords, suggestions, articles, integrations, and more through structured MCP tool calls instead of CLI commands.

Setup

Configure your MCP host to run balzac-mcp with your API key:

{
  "mcpServers": {
    "balzac": {
      "command": "npx",
      "args": ["-y", "balzac-mcp"],
      "env": {
        "BALZAC_API_KEY": "bz_your_key_here"
      }
    }
  }
}

npm release: https://www.npmjs.com/package/balzac-mcp github: https://github.com/hirebalzac/mcp api docs: https://developer.hirebalzac.ai official website: https://hirebalzac.ai


PropertyValue
namebalzac-mcp
descriptionMCP server for managing Balzac workspaces, keywords, suggestions, and articles
transportstdio (JSON-RPC over stdin/stdout)
authBALZAC_API_KEY environment variable

Core Workflow

  1. Create workspace from a domain (Balzac auto-analyzes the site)
  2. Manage keywords (add, enable/disable)
  3. Generate content (generate suggestions, accept them, or create briefings)
  4. Manage articles (list, export, rewrite, publish to integrations)

Tool Reference

Workspaces

ToolParametersDescription
list_workspacesstatus?, page?, per_page?List all workspaces
get_workspaceworkspace_idGet workspace details
create_workspacedomain, name?, description?, language?, auto_accept_keywords?, auto_accept_suggestions?, pictures_style?, max_articles_per_period?, max_articles_period?Create workspace from domain
update_workspaceworkspace_id, name?, description?, language?, pictures_style?, max_articles_per_period?, max_articles_period?Update workspace
delete_workspaceworkspace_idDelete workspace

Keywords

ToolParametersDescription
list_keywordsworkspace_id, status?, page?, per_page?List keywords
get_keywordworkspace_id, keyword_idGet keyword details (incl. difficulty and GSC metrics)
create_keywordworkspace_id, nameAdd a keyword
enable_keywordworkspace_id, keyword_idEnable keyword
disable_keywordworkspace_id, keyword_idDisable keyword
delete_keywordworkspace_id, keyword_idDelete keyword
generate_keywordsworkspace_idGenerate new keywords with AI (async)

Suggestions

ToolParametersDescription
list_suggestionsworkspace_id, status?, page?, per_page?List suggestions
get_suggestionworkspace_id, suggestion_idGet suggestion details
generate_suggestionsworkspace_idGenerate 10 new suggestions (1 credit, async)
accept_suggestionworkspace_id, suggestion_idAccept and start writing (5 credits)
reject_suggestionworkspace_id, suggestion_idReject suggestion

Briefings

ToolParametersDescription
list_briefingsworkspace_id, status?, page?, per_page?List briefings
get_briefingworkspace_id, briefing_idGet briefing details
create_briefingworkspace_id, topic, title?, type_of?, length?, language?, focus_keywords?, briefing?, tone_of_voice_id?Create briefing and write article (5 credits)

Articles

ToolParametersDescription
list_articlesworkspace_id, status?, published?, page?, per_page?List articles
get_articleworkspace_id, article_idGet article details + content
update_articleworkspace_id, article_id, title?, slug?, description?, language?, tone_of_voice_id?Update metadata
delete_articleworkspace_id, article_idDelete article
rewrite_articleworkspace_id, article_id, length?, language?, tone_of_voice_id?, additional_instructions?Rewrite (3 credits, async)
regenerate_article_pictureworkspace_id, article_id, pictures_style?, additional_instructions?Regenerate picture (1 credit, async)
publish_articleworkspace_id, article_id, integration_idPublish to integration
schedule_articleworkspace_id, article_id, integration_id, scheduled_forSchedule publication
export_articleworkspace_id, article_id, format?Export as html/markdown/xml

Competitors

ToolParametersDescription
list_competitorsworkspace_id, page?, per_page?List competitors
create_competitorworkspace_id, name, domainAdd competitor
delete_competitorworkspace_id, competitor_idRemove competitor

Links

ToolParametersDescription
list_linksworkspace_id, page?, per_page?List reference links
create_linkworkspace_id, urlAdd reference link
delete_linkworkspace_id, link_idRemove link

Settings

ToolParametersDescription
get_settingsworkspace_idGet workspace settings
update_settingsworkspace_id, language?, article_length?, pictures_style?, max_articles_per_period?, max_articles_period?, prefered_tone_of_voice_id?, auto_accept_suggestions?, use_title_cases_in_headings?, prefer_active_voice?, write_in_first_person?Update settings

Tones of Voice

ToolParametersDescription
list_tones(none)List available tones
get_tonetone_idGet tone details

Integrations

ToolParametersDescription
list_integrationsworkspace_id, page?, per_page?List integrations
get_integrationworkspace_id, integration_idGet integration details
create_integrationworkspace_id, service, name, auto_publish?, + service-specific fieldsCreate integration
update_integrationworkspace_id, integration_id, name?, auto_publish?, + service-specific fieldsUpdate integration
delete_integrationworkspace_id, integration_idDelete integration
reconnect_integrationworkspace_id, integration_idRe-test connection

Service-specific fields for create/update_integration:

  • wordpress: wordpress_url, wordpress_username, wordpress_application_password
  • webflow: webflow_api_token, webflow_site_id, webflow_collection_id, webflow_publication_status
  • wix: wix_api_key, wix_site_id, wix_member_id
  • gohighlevel: gohighlevel_api_token, gohighlevel_location_id, gohighlevel_blog_id, gohighlevel_author_id, gohighlevel_category_id, gohighlevel_publication_status
  • webhook: webhook_url, webhook_bearer_token

Credit Costs

ActionCredits
Write article (accept_suggestion / create_briefing)5
Generate 10 new suggestions1
Rewrite article3
Regenerate picture1

Insufficient credits returns an error with required and available counts.


Async Operations

These tools start background jobs and return immediately:

  • generate_keywords -- poll list_keywords for new results
  • generate_suggestions -- poll list_suggestions for new results
  • create_briefing / accept_suggestion -- poll list_articles or get_article for status
  • rewrite_article -- poll get_article for completion
  • regenerate_article_picture -- poll get_article for new main_picture_url
  • reconnect_integration -- poll get_integration for status change

Typical polling interval: 5-10 seconds. Article writing takes 2-5 minutes.


Example Patterns

Full content pipeline

1. create_workspace { domain: "myblog.com" }
2. (wait for status "ready")
3. list_keywords { workspace_id }
4. generate_suggestions { workspace_id }
5. (wait ~30s)
6. list_suggestions { workspace_id, status: "proposed" }
7. accept_suggestion { workspace_id, suggestion_id }
8. (wait 2-5 min)
9. get_article { workspace_id, article_id }
10. publish_article { workspace_id, article_id, integration_id }

Direct article writing

1. create_briefing { workspace_id, topic: "How to improve SEO rankings" }
2. (wait 2-5 min)
3. list_articles { workspace_id, status: "done" }
4. export_article { workspace_id, article_id, format: "markdown" }

Set up webhook integration

1. create_integration {
     workspace_id,
     service: "webhook",
     name: "My App",
     webhook_url: "https://example.com/balzac-hook",
     webhook_bearer_token: "secret",
     auto_publish: true
   }
2. get_integration { workspace_id, integration_id }  -- check status

For AI Agents

Agent skill (Claude Code, Cursor, OpenClaw, etc.):

npx skills add hirebalzac/mcp