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/mcpAuthentication is your organization API token, sent as a Bearer token.
Quick start
- 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. - 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"
}
}
}
}- 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.
| Scope | Grants |
|---|---|
signals:read | Measured SEO signals and Search Console visibility |
topics:read | List editorial topics |
articles:read | List and read articles (content, SEO metadata, citations) |
topics:write | Suggest (AI) and create topics |
generate:write | Launch article generation |
publish:write | Publish 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
| Tool | What it returns |
|---|---|
get_seo_signals ⭐ | The 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_visibility | Clicks, impressions and positions from Search Console, in honest windows (full weeks, shifted for Google's reporting lag), with top queries per article. |
list_topics | Your editorial topics with status, search intent and format. A topic in idea status is ready to generate. |
list_articles | Your article inventory: statuses, publication dates, targeted keywords. |
get_article | One article in full: HTML content, SEO metadata, cited sources. |
Write — the act half of the loop
| Tool | What it does |
|---|---|
suggest_topic | Generates 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_topic | Creates a topic your agent decided on — for instance from an untargeted opportunity returned by get_seo_signals. Counts toward your topic quota. |
generate_article | Launches 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_article | Publishes 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_articlesays the topic is no longer available — the topic was already generated (one article per topic). Checklist_articles.