MotiBlog

The SEO research and publishing system for AI agents.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data

What it can do

  • Get Digest: One-call morning check-in for a project: article counts by lifecycle status, the REVIEW queue (what is waiting to be published, with word counts), posts published in the last 7 days, conte
  • List Projects: List every MotiBlog project owned by the authenticated account, with settings that matter to agents: requireApproval (REVIEW vs APPROVED after generation), autoPublish, factCheckStrict,
  • Create Project: Create a new blog project for the authenticated account. The website must be reachable and the account must have an available project slot. MotiBlog starts the initial analysis and con

What data it sees

Do you need an account

No: the server works without sign-in

The SEO research and publishing system for AI agents. MotiBlog crawls the site, maps existing content, researches competitors, keywords, live SERPs and YouTube, builds a content plan, generates internally linked articles, publishes to the user's CMS or Markdown, and closes the loop with Search Console. Users control read, edit and publish access through OAuth. One project and three articles are free.

How to connect

How to connect MotiBlog to Claude

The server address to paste into Claude settings:

https://motiblog--hamza-ca0l.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect MotiBlog to ChatGPT

The server address to paste into ChatGPT settings:

https://motiblog--hamza-ca0l.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect MotiBlog to Cursor

The server address to paste into Cursor settings:

https://motiblog--hamza-ca0l.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (60)

Raw names from tools/list. Only developers need these.

get_digestOne-call morning check-in for a project: article counts by lifecycle status, the REVIEW queue (what is waiting to be published, with word counts), posts published in the last 7 days, content plans due in the next 7 days, the latest published post, quota usage, and the project's current autonomy level (L1 = nothing ships without agent review; L2 = clean articles auto-publish). Start every check-in here.
list_projectsList every MotiBlog project owned by the authenticated account, with settings that matter to agents: requireApproval (REVIEW vs APPROVED after generation), autoPublish, factCheckStrict, selfHostedBlog, and article quota usage. Project credentials are never returned.
create_projectCreate a new blog project for the authenticated account. The website must be reachable and the account must have an available project slot. MotiBlog starts the initial analysis and content pipeline after creation.
get_projectGet one MotiBlog project in detail: pipeline settings (aiModel, language, internalLinks, banner), positioning inputs (businessProfile, productTruth, manualPositioning) and quota state.
update_projectUpdate operational settings for an existing project: name/status, approval and auto-publish policy, writing model/language, fact checking, positioning, internal links, self-hosting, and banner configuration. Omitted fields stay unchanged.
start_pipelineStart the autonomous pipeline for a project: site crawl/analysis → topic selection → article generation for scheduled plans. Returns immediately; poll get_pipeline_status or list_articles(status=GENERATING) to follow progress.
get_pipeline_statusGet current pipeline run state for a project: whether a run is active, its steps, and recent run history. Use after start_pipeline or generate_article.
retry_pipelineRetry a failed pipeline run by id. The API starts a fresh run for the same owned project and returns immediately.
suggest_topicsSuggest blog topics for a project by adding entries to its content plan (one call per topic). This is the agent-side 'propose' step: topics land as DRAFT plan entries — nothing is generated until you approve_content_plan + generate_article. Prefer specific, keyword-like topics.
list_content_plansList the content plan queue for a project with each entry status: DRAFT (proposed), APPROVED (cleared for generation), IN_PROGRESS, COMPLETED.
approve_content_planApprove a DRAFT content-plan entry so it becomes eligible for generation (generate_article or the scheduled pipeline).
regenerate_content_planAsk AI to rewrite a content-plan entry (new title/summary/target keyword) — use when a suggested topic misses the mark. Only works while no article has been generated from it.
reschedule_content_planMove a content-plan entry to a new ISO 8601 scheduled date.
generate_articleGenerate an article from an APPROVED content-plan entry via the full pipeline (research → outline → draft → fact-check → polish → scoring). Returns the article in GENERATING state; review later via get_article once status reaches REVIEW or APPROVED. If the free allowance is exhausted, returns payment_required with a dashboard URL: pause, ask the human account owner to upgrade, then retry the same call without replacing the project or reconnecting OAuth.
get_calendarGet scheduled content-plan entries (with slim article previews) between two ISO dates, e.g. start_date=2026-09-01 end_date=2026-09-30.
list_review_queueList articles awaiting attention, filtered by status. Lifecycle: DRAFT → GENERATING → REVIEW → APPROVED → PUBLISHING → PUBLISHED (also FAILED, SKIPPED). Default status=REVIEW (needs human/agent approval); pass APPROVED to see what is cleared for publishing.
get_articleGet the FULL article: markdown content plus quality signals — factCheckReport (verified/unverified claims with sources), topicGate verdict, seoScore/issues, publishedUrl. Set include_logs=true to append per-phase pipeline telemetry (tokens, cost, phase status). Use this during review before approving publication.
update_articleEdit an article: replace the markdown content, retitle, change metaDescription, or move status (e.g. fix flagged claims from factCheckReport then set status=APPROVED; or send back to DRAFT). Editing content is how agents answer fact-check flags when no external source exists.
approve_publicationApprove an article for publication through the governed approval gate. publish_now=true also triggers publishing immediately (to enabled integrations, or the self-hosted blog when selfHostedBlog=true). Otherwise the article sits in APPROVED until the scheduler/autoPublish picks it up or publish_to_integration is called.
schedule_publicationSet or clear a per-article scheduled publish time (ISO datetime). Pass null for clear_schedule=true to unschedule. Scheduled APPROVED articles are published automatically by the 15-minute scheduler when autoPublish is on.
regenerate_articleWipe an article and rerun the ENTIRE pipeline from scratch (research → draft …). Content-destructive: prefer update_article for targeted edits or regenerate_chapter for one section.
regenerate_chapterRegenerate ONE chapter (0-based chapter_index) of an article; all other sections stay byte-identical. Cheaper and safer than regenerate_article.
get_pipeline_logsPer-phase pipeline telemetry for one article: phase names, statuses, messages, token counts, and USD cost per phase. Diagnose FAILED articles or audit what the generator did.
list_refresh_suggestionsAcross ALL your projects: published articles whose Search Console stats suggest they are decaying and would benefit from a refresh. Feed these back into planning via suggest_topics or update_article.
dismiss_refresh_suggestionDismiss the active refresh recommendation for a published article.
generate_programmatic_articlesBulk-generate up to 500 articles from structured rows and a title template such as "Best {{product}} for {{location}}". Creates approved plans and enqueues generation; quota and payment-required handling are unchanged.
rewrite_textRewrite a selected passage using the same inline AI actions as the editor: improve, shorter, longer, grammar, active-voice, or add-example. Returns replacement text without modifying an article; apply it with update_article.
upload_article_bannerDownload a JPEG, PNG, or WebP from a public HTTPS URL (maximum 5MB), upload it to MotiBlog, and set it as an article banner. Replaces the current banner.
delete_article_bannerRemove the current banner image from an article.
upload_imageDownload a JPEG, PNG, or WebP from a public HTTPS URL (maximum 10MB) into MotiBlog storage and return its permanent URL for article content, author avatars, or banner references.
get_banner_previewGet the saved banner-style preview, prompt, and remaining lifetime preview allowance for a project.
suggest_banner_promptSuggest a short visual prompt for a banner preview using the project niche and optional style preset. This does not generate an image or consume preview allowance.
list_integrationsList configured publishing targets (integrations) for a project: WEBHOOK, WORDPRESS, GHOST, WEBFLOW, SHOPIFY, DEVTO, SANITY, CUSTOM_API — with enabled state.
get_integrationGet one publishing integration and its enabled/last-used state. Stored provider credentials and config values are redacted from tool output.
create_integrationCreate any supported publishing target: WEBHOOK, WORDPRESS, WEBFLOW, CUSTOM_API, GHOST, SHOPIFY, DEVTO, or SANITY. Pass the provider-specific config object; credentials are accepted but never echoed by MCP read tools.
update_integrationEdit a publishing target name, type, provider config/credentials, or enabled state. Omitted fields remain unchanged.
delete_integrationPermanently delete a publishing integration. Existing publish logs remain, but this target can no longer receive content.
create_webhook_integrationRegister a webhook publishing target: MotiBlog POSTs the published article JSON to your endpoint (signed with X-Signature: sha256=<HMAC(secret)> when secret is set). Config shape: { url, secret?, method? }. This is how an agent's own infrastructure receives content pushes.
test_integrationTest a publishing target connection. mode=ping (default) checks credentials/reachability only; mode=full may create and clean up a test item on the target.
publish_to_integrationPush an APPROVED article to one specific integration now (enqueues the publish job; transitions APPROVED → PUBLISHING → PUBLISHED). Check results via list_publish_logs.
retry_publishRetry a failed publish attempt for an article/integration pair.
mark_integration_syncedMark an article/integration pair as manually synced, creating an auditable synthetic success log. Use only after verifying the content already exists at the target.
list_publish_logsPublishing history: SUCCESS/FAILED attempts with publishedUrl, provider error text and timestamps. Pass article_id for one article, or omit for the whole project (limit defaults server-side).
list_keywordsList tracked keywords for a project (search volume, difficulty, intent, status). Keywords drive topic relevance in generation.
add_keywordTrack a new SEO keyword for a project so future topic suggestions/generation can target it. intent is one of INFORMATIONAL, NAVIGATIONAL, TRANSACTIONAL, COMMERCIAL.
update_keywordChange a tracked keyword lifecycle status: DISCOVERED, APPROVED, REJECTED, or USED.
delete_keywordPermanently remove a tracked keyword from the project.
list_competitorsList the competitor domains tracked for a project, including overlap and domain-authority signals when available.
add_competitorAdd a competitor domain to a project so competitive analysis and content-gap planning can use it.
delete_competitorPermanently remove a competitor from the project.
list_pillar_clustersList pillar clusters with their pillar keyword, member keywords, content plans, article status, published URLs, and completion percentage.
list_product_factsList the project proprietary facts — ground-truth statements about the product (features, pricing, integrations) injected into prompts and enforced by strict fact-checking.
get_product_factGet one proprietary product fact by id.
supply_product_factSupply a ground-truth fact about the customer's product (or update one via fact_id). Strict fact-checking uses these to verify claims; supply facts BEFORE generation for best results. Example: fact='Acme integrates natively with Shopify since v2.3', category=['integrations'].
delete_product_factPermanently remove a proprietary product fact from generation context.
get_brand_voiceGet the computed brand-voice profile for a project: tone, style, vocabulary, cadence, and extraction metrics.
get_brand_voice_previewPreview the exact brand-voice context that article generation would receive for a target keyword.
refresh_brand_voiceRe-extract the project brand voice asynchronously from current source content. Poll get_brand_voice for the updated profile.
list_authorsList every author profile available to a project.
get_authorGet one author profile with bio, avatar URL, and social links.