DailyBlogPost Docs

MCP server — drive DailyBlogPost from your AI agent

Connect Claude, Cursor or any MCP-compatible agent to DailyBlogPost and automate the full SEO loop — measure, decide, create, generate, publish — with your organization's guardrails enforced.

MCP server

DailyBlogPost exposes a remote MCP server (Model Context Protocol) so your own AI agent — Claude, Cursor, or any MCP-compatible client — can drive your blog end to end: read your measured SEO signals, decide what to write, create topics, launch generations and publish, all through the same guardrails as the app.

Nothing to install. It is a remote server:

https://dailyblogpost.app/api/mcp

Authentication is your organization API token, sent as a Bearer token.

Quick start

  1. In Settings → API, create an API token. Read-only scopes are pre-selected — tick the write scopes (topics:write, generate:write, publish:write) only if you want your agent to act, not just observe.
  2. Add the server to your MCP client.

Claude Code

claude mcp add --transport http dailyblogpost \
  https://dailyblogpost.app/api/mcp \
  --header "Authorization: Bearer $DBP_API_TOKEN"

Claude (claude.ai / Desktop) — add a custom connector with the URL above and your token as the Bearer/authorization value.

Cursor — add to .cursor/mcp.json:

{
  "mcpServers": {
    "dailyblogpost": {
      "url": "https://dailyblogpost.app/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_DBP_API_TOKEN"
      }
    }
  }
}
  1. Ask your agent something like: "Look at my DailyBlogPost SEO signals and propose the three articles with the best chance of ranking."

Scopes

Each tool requires a scope carried by your token. The organization is always derived from the token — no tool ever takes an organization parameter.

ScopeGrants
signals:readMeasured SEO signals and Search Console visibility
topics:readList editorial topics
articles:readList and read articles (content, SEO metadata, citations)
topics:writeSuggest (AI) and create topics
generate:writeLaunch article generation
publish:writePublish articles

Write scopes are never pre-selected when creating a token: giving your agent the power to act is an explicit choice. You can revoke a token at any time in Settings → API — revocation is immediate.

Tools

Read — the measure half of the loop

ToolWhat it returns
get_seo_signalsThe measured opportunities and problems of your site over the last 28 days: real queries with demand but no article yet (untargeted), queries at striking distance (position 8–30), queries seen but never clicked, articles losing traffic, open cannibalizations (two articles competing on one query), articles the editorial linter flags as improvable. This is the raw material for deciding what to write next.
get_visibilityClicks, impressions and positions from Search Console, in honest windows (full weeks, shifted for Google's reporting lag), with top queries per article.
list_topicsYour editorial topics with status, search intent and format. A topic in idea status is ready to generate.
list_articlesYour article inventory: statuses, publication dates, targeted keywords.
get_articleOne article in full: HTML content, SEO metadata, cited sources.

Write — the act half of the loop

ToolWhat it does
suggest_topicGenerates one AI topic suggestion anchored on your site's real data (keyword universe, existing articles, trends). Orientable with a keyword, a brief or a format. Counts toward your topic quota.
create_topicCreates a topic your agent decided on — for instance from an untargeted opportunity returned by get_seo_signals. Counts toward your topic quota.
generate_articleLaunches the full generation pipeline for a topic (sourced research, writing, images). Asynchronous — a few minutes; follow progress with list_articles. Consumes your monthly article quota.
publish_articlePublishes a generated article through your site's active integration (WordPress, Shopify, Webflow, custom API — queued asynchronously) or on the DailyBlogPost public blog when your organization has access.

publish_article goes through the same publication checkpoint as the app. Articles that are not ready are refused outright — citations that cannot be verified against the research sources, missing SEO fields, a language that does not match the site, a quality score under your organization's threshold. These refusals are not overridable. One class of confirmable warnings exists (e.g. an article with no persisted sources): the tool returns the warning and publishes only if called again with acknowledgeWarnings: true.

What your agent can do with this

The tools are designed to close the loop, not just expose data:

  • Weekly editorial review"Check my SEO signals, summarize what moved, and propose next week's articles from the untargeted queries."
  • Opportunity to article"Take the best untargeted opportunity, create a topic for it, generate the article and tell me when it is ready for review."
  • Guarded autopilot"Every Monday, generate one article from my best opportunity and publish it if it passes all checks; otherwise leave it in my review queue and tell me why."

Your quotas (topics, monthly articles) and your subscription are enforced on every call — they are also the natural budget ceiling for an agent running in a loop.

Security model

  • Organization from the token, always. No tool accepts an organization or account identifier; your token scopes everything it can see and do.
  • Scopes per tool, checked on every call.
  • Rate limiting per token, plus an audit journal: every tool call is logged with its tool name, outcome and duration.
  • Bounded outputs, no secrets. Responses never contain integration credentials, tokens or emails. Search queries returned by the signals tools are external text typed by real users — your agent should treat them as data, never as instructions.

Troubleshooting

  • 401 — missing, mistyped or revoked token. Recreate one in Settings → API.
  • "This token is missing the required scope" — the tool needs a scope your token does not carry. Create a token with the right scopes (scopes are fixed at creation).
  • Rate limit reached — the response includes the reset time; space out the calls.
  • generate_article says the topic is no longer available — the topic was already generated (one article per topic). Check list_articles.