varynforge avatar

VarynForge

com.varynforge/server

This connects Claude to VarynForge's SEO research platform, exposing their full SaaS toolset as MCP resources. You get 30+ tools for niche research, content planning, and generating writer-ready briefs without leaving your Claude workflow. Reach for this when you're doing content strategy work and need keyword data, competitor analysis, or structured content outlines. It's particularly suited for SEO professionals and content teams who want to pull research directly into their AI conversations rather than context switching between VarynForge's web UI and their writing environment. The streamable HTTP transport means it works with any MCP-compatible client.

tools
57
transport
HTTP
last updated
Sep 4, 2026

Install

From registry metadata
$ npx add-mcp https://app.varynforge.com/api/mcp --name varynforge

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http varynforge https://app.varynforge.com/api/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 57 tools

Verified live against the running server on Nov 6, 2026.

get_instructionsGet the VarynForge agent guide — workflow paths (free vs paid), token-economy rules, walls and upgrade conversation conventions. Read this at session start.1 params

Get the VarynForge agent guide — workflow paths (free vs paid), token-economy rules, walls and upgrade conversation conventions. Read this at session start.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
get_changelogGet the URL of the VarynForge product changelog — what shipped, newest first, in plain markdown. Fetch it when the operator asks what is new, and in the days after a send_feedback report to check whether the gap they hit has been closed.1 params

Get the URL of the VarynForge product changelog — what shipped, newest first, in plain markdown. Fetch it when the operator asks what is new, and in the days after a send_feedback report to check whether the gap they hit has been closed.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
get_writer_system_promptGet the writer system prompt for drafting one content type from its brief. The writer works with your Varyn account context: every channel prompt binds to the brief, its acceptance rubric, and the opportunity behind the brief fetched from the account, and degrades to generic w...2 params

Get the writer system prompt for drafting one content type from its brief. The writer works with your Varyn account context: every channel prompt binds to the brief, its acceptance rubric, and the opportunity behind the brief fetched from the account, and degrades to generic w...

Parameters* required
channel*string
one of article · reels · youtube · x · linkedindefault: article
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
get_account_statusGet the operator account status — the organization whose plan/credits/limits this payload describes (plans and usage limits are per-organization; see list_organizations), current plan, available credits, brief quota state, the lint_draft daily verification cap (applies on ever...2 params

Get the operator account status — the organization whose plan/credits/limits this payload describes (plans and usage limits are per-organization; see list_organizations), current plan, available credits, brief quota state, the lint_draft daily verification cap (applies on ever...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
organizationIdstring
list_organizationsList the organizations this account belongs to — id, name, your role (owner | admin | member), is_personal, plan, and member_count — plus pending invitations awaiting a response (accept them in the web app). Plans, credits, and usage limits are per-organization, and a project...1 params

List the organizations this account belongs to — id, name, your role (owner | admin | member), is_personal, plan, and member_count — plus pending invitations awaiting a response (accept them in the web app). Plans, credits, and usage limits are per-organization, and a project...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
get_onboarding_guideDiagnose where the operator is in their VarynForge journey and get a guided setup path. Call when the operator asks to set up VarynForge, get started, or seems unsure what to do next — and always when list_projects returns empty. Returns the server-derived stage, a stage-tailo...1 params

Diagnose where the operator is in their VarynForge journey and get a guided setup path. Call when the operator asks to set up VarynForge, get started, or seems unsure what to do next — and always when list_projects returns empty. Returns the server-derived stage, a stage-tailo...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
send_feedbackFile a note to the VarynForge team: a bug, a missing capability, a friction point, or an operator idea. Call when you hit something VarynForge cannot do, a confusing tool result, or the operator voices frustration or a wish. Whenever the task would benefit from a capability th...6 params

File a note to the VarynForge team: a bug, a missing capability, a friction point, or an operator idea. Call when you hit something VarynForge cannot do, a confusing tool result, or the operator voices frustration or a wish. Whenever the task would benefit from a capability th...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
detailstring
kind*string
one of bug · missing_capability · friction · idea
projectIdstring
summary*string
toolContextstring
create_projectCreate a new project — pass either a website URL or a niche description (or both). Returns projectId immediately; niche analysis and asset mapping run async. Poll get_project until niche.analysisStatus is ready. When the operator says whose site this is, pass siteRelation: min...9 params

Create a new project — pass either a website URL or a niche description (or both). Returns projectId immediately; niche analysis and asset mapping run async. Poll get_project until niche.analysisStatus is ready. When the operator says whose site this is, pass siteRelation: min...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
extrasarray
nicheDescriptionstring
organizationIdstring
originDescriptionstring
originInputstring
originTypestring
one of website · youtube_channel · local_business · idea · tiktok · instagram
siteRelationstring
one of mine · client · prospect
websitestring
get_projectGet one project — its canonical name (operator-set, falling back to site brand then niche name), niche profile, target audience, current research status, and postsPerWeek (the operator’s publishing cadence, settable via set_posting_cadence; sizes the pitch report’s 90-day sequ...2 params

Get one project — its canonical name (operator-set, falling back to site brand then niche name), niche profile, target audience, current research status, and postsPerWeek (the operator’s publishing cadence, settable via set_posting_cadence; sizes the pitch report’s 90-day sequ...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
get_project_assetGet the asset (website/product) associated with a project — URL, name, description, solution profile.2 params

Get the asset (website/product) associated with a project — URL, name, description, solution profile.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
update_nicheUpdate a niche profile — name, industry, language, country, target customer, core problem, related terms. Use after the operator refines their market definition; omitted fields keep their current values.9 params

Update a niche profile — name, industry, language, country, target customer, core problem, related terms. Use after the operator refines their market definition; omitted fields keep their current values.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
coreProblemstring
countrystring
id*string
industrystring
languagestring
name*string
relatedTermsarray
targetCustomerstring
list_destinationsList the project's destinations — where the operator publishes (website, youtube_channel, tiktok, instagram, x, linkedin, local_business). Destination type ids are the `format` labels lint_draft stores drafts under. Each row carries its capabilities so you never cross-referenc...2 params

List the project's destinations — where the operator publishes (website, youtube_channel, tiktok, instagram, x, linkedin, local_business). Destination type ids are the `format` labels lint_draft stores drafts under. Each row carries its capabilities so you never cross-referenc...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
add_destinationAdd a destination to a project — where the operator publishes. Pass `type` (website | youtube_channel | instagram | tiktok | x | linkedin | local_business) and `name` with `state: 'detected'` for a destination that already exists and belongs to the operator (website name = the...5 params

Add a destination to a project — where the operator publishes. Pass `type` (website | youtube_channel | instagram | tiktok | x | linkedin | local_business) and `name` with `state: 'detected'` for a destination that already exists and belongs to the operator (website name = the...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
namestring
projectId*string
state*string
one of detected · planned · open
typestring
one of website · youtube_channel · instagram · tiktok · x · linkedin
list_competitorsList companies for a project — marked competitors (important / default / ignored) and SERP-discovered companies (unmarked). Sorted important → default → unmarked → ignored, then by domain. Pass `importance` to filter to one bucket. Capped at 100.4 params

List companies for a project — marked competitors (important / default / ignored) and SERP-discovered companies (unmarked). Sorted important → default → unmarked → ignored, then by domain. Pass `importance` to filter to one bucket. Capped at 100.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
importancestring
one of important · default · ignored · unmarked
limit*number
default: 100
projectId*string
set_competitor_importanceMark a competitor important, default, or ignored. Important applies a 1.25× boost on opportunity scores for clusters where the competitor ranks top-10. Scores are then normalized 0-100 against the highest-scoring cluster, so other clusters may appear to drop in relative rankin...4 params

Mark a competitor important, default, or ignored. Important applies a 1.25× boost on opportunity scores for clusters where the competitor ranks top-10. Scores are then normalized 0-100 against the highest-scoring cluster, so other clusters may appear to drop in relative rankin...

Parameters* required
companyId*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
importance*string
one of default · important · ignored
projectId*string
add_competitor_by_domainAdd a competitor to a project by domain (e.g. example.com). Marks the competitor as important or ignored on creation.4 params

Add a competitor to a project by domain (e.g. example.com). Marks the competitor as important or ignored on creation.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
domain*string
importance*string
one of important · ignored
projectId*string
update_asset_profileCorrect the inferred profile of the project asset — description, primary offer, benefits, key differentiators, use cases. Use when get_project_asset shows claims that contradict what the operator actually sells (profileStaleAt set, or the operator says so). Only the fields you...7 params

Correct the inferred profile of the project asset — description, primary offer, benefits, key differentiators, use cases. Use when get_project_asset shows claims that contradict what the operator actually sells (profileStaleAt set, or the operator says so). Only the fields you...

Parameters* required
benefitsarray
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
descriptionstring
keyDifferentiatorsarray
primaryOfferstring
projectId*string
useCasesarray
set_posting_cadenceSet how many articles per week the operator actually publishes (1-14). Sizes the pitch report’s 90-day content sequence; read back via get_project.postsPerWeek.3 params

Set how many articles per week the operator actually publishes (1-14). Sizes the pitch report’s 90-day content sequence; read back via get_project.postsPerWeek.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
postsPerWeek*integer
projectId*string
resync_asset_profileRe-read the project website and re-infer the asset profile (name, description, primary offer, benefits, differentiators, use cases) from its current content. Use before rendering a report when get_pitch_report_payload flags assetProfile.syncedBeforeRun — the stored profile fac...2 params

Re-read the project website and re-infer the asset profile (name, description, primary offer, benefits, differentiators, use cases) from its current content. Use before rendering a report when get_pitch_report_payload flags assetProfile.syncedBeforeRun — the stored profile fac...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
remap_assetRe-crawl the project website and refresh its owned pages. Use when get_project_asset shows mappingStatus "error" or owned pages look stale. Rate-limited per site; returns an error naming the wait time if the cooldown is active.2 params

Re-crawl the project website and refresh its owned pages. Use when get_project_asset shows mappingStatus "error" or owned pages look stale. Rate-limited per site; returns an error naming the wait time if the cooldown is active.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
start_research_runStart a research run for a project — discovers keywords, evaluates competitors, and writes opportunity clusters. Consumes one credit. Returns `{ runId }`; poll get_research_status for progress. Returns `{ entitlement }` instead when the operator is on the free plan.2 params

Start a research run for a project — discovers keywords, evaluates competitors, and writes opportunity clusters. Consumes one credit. Returns `{ runId }`; poll get_research_status for progress. Returns `{ entitlement }` instead when the operator is on the free plan.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
id*string
list_projectsList all projects for the authenticated operator — paginated, sortable by createdAt, niche, or industry. `name` is the canonical project name (operator-set, falling back to site brand then niche name) — match operator references against it; `niche.name` is the market niche, di...4 params

List all projects for the authenticated operator — paginated, sortable by createdAt, niche, or industry. `name` is the canonical project name (operator-set, falling back to site brand then niche name) — match operator references against it; `niche.name` is the market niche, di...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
cursorvalue
limit*number
default: 10
sortingarray
get_competitor_detailGet a competitor company detail in a project context — domain, name, importance, top pages in the project SERPs, and top keywords they rank for.3 params

Get a competitor company detail in a project context — domain, name, importance, top pages in the project SERPs, and top keywords they rank for.

Parameters* required
companyId*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
get_project_overviewGet the at-a-glance read on a project — niche summary, keyword stats, nextActions (the ranked queue of what to do next in this project — offer its first entry when the operator asks "what now?"), and topPriorities: the ranked queue of article suggestions (best first — priority...2 params

Get the at-a-glance read on a project — niche summary, keyword stats, nextActions (the ranked queue of what to do next in this project — offer its first entry when the operator asks "what now?"), and topPriorities: the ranked queue of article suggestions (best first — priority...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
get_research_statusPoll the latest research run for a project — runId, status, current pipeline phase, progress percent, elapsed seconds, and structured failure diagnostics when failed. failure carries failureClass (upstream_timeout | upstream_rate_limited | invalid_input | internal | unknown),...2 params

Poll the latest research run for a project — runId, status, current pipeline phase, progress percent, elapsed seconds, and structured failure diagnostics when failed. failure carries failureClass (upstream_timeout | upstream_rate_limited | invalid_input | internal | unknown),...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
get_pitch_report_payloadAssemble the client-ready pitch report payload for a completed research run — niche + solution profile, competitor landscape, ranked opportunity map holding GAPS ONLY (0-100 normalized; demand sized as volumeBucket buckets, no search-volume numbers by design; each entry carrie...2 params

Assemble the client-ready pitch report payload for a completed research run — niche + solution profile, competitor landscape, ranked opportunity map holding GAPS ONLY (0-100 normalized; demand sized as volumeBucket buckets, no search-volume numbers by design; each entry carrie...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
runId*string
get_starting_point_reportGet the free starting-point report for a project — a client-facing document assembled from setup-time data: positioning (niche + market profile), the site and its current content inventory, the curated competitor set, and early rising-topic signals. Free on every plan, no rese...2 params

Get the free starting-point report for a project — a client-facing document assembled from setup-time data: positioning (niche + market profile), the site and its current content inventory, the curated competitor set, and early rising-topic signals. Free on every plan, no rese...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
list_opportunitiesList content opportunity clusters sorted by opportunity score. Goal filters: fast_wins, high_intent, authority_building, competitor_gap. coverage filters by site-coverage status and defaults to ["gap","partial"] — clusters the site already COVERS (ranks top-10 for a cluster ke...8 params

List content opportunity clusters sorted by opportunity score. Goal filters: fast_wins, high_intent, authority_building, competitor_gap. coverage filters by site-coverage status and defaults to ["gap","partial"] — clusters the site already COVERS (ranks top-10 for a cluster ke...

Parameters* required
activeMetaClustervalue
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
coveragearray
cursorvalue
excludeInContentPlanboolean
goalvalue
limit*number
default: 20
projectId*string
get_opportunity_detailGet a cluster detail — top-20 keywords by score, top-10 ranked pages by position, top-5 competitor podium, linked article suggestions, and rawOpportunityScore (un-normalized; list_opportunities returns the 0-100 normalized version).3 params

Get a cluster detail — top-20 keywords by score, top-10 ranked pages by position, top-5 competitor podium, linked article suggestions, and rawOpportunityScore (un-normalized; list_opportunities returns the 0-100 normalized version).

Parameters* required
clusterId*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
set_opportunity_statusDismiss or restore an opportunity cluster. status=dismissed hides it from list_opportunities and the create_content_plan_from_opportunities harvest; status=default restores it. Dismissal lasts until the next research run rewrites the project clusters — for a durable "not my pr...4 params

Dismiss or restore an opportunity cluster. status=dismissed hides it from list_opportunities and the create_content_plan_from_opportunities harvest; status=default restores it. Dismissal lasts until the next research run rewrites the project clusters — for a durable "not my pr...

Parameters* required
clusterId*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
status*string
one of default · dismissed
set_excluded_termsSet the project-level exclusion terms — products or topics the operator explicitly does NOT sell (e.g. "wedding suite", "free template", "printing"). Keywords mentioning any term are down-weighted in opportunity scoring and dropped from the content-plan harvest, before results...3 params

Set the project-level exclusion terms — products or topics the operator explicitly does NOT sell (e.g. "wedding suite", "free template", "printing"). Keywords mentioning any term are down-weighted in opportunity scoring and dropped from the content-plan harvest, before results...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
terms*array
list_keywordsList keywords tracked for a project — text, difficulty, intent, volume bucket (no_traffic | long_tail | average | high). Paginated; supports sorting and intent filter.6 params

List keywords tracked for a project — text, difficulty, intent, volume bucket (no_traffic | long_tail | average | high). Paginated; supports sorting and intent filter.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
cursorvalue
filtersobject
limit*number
default: 50
projectId*string
sortingarray
get_keyword_detailGet a keyword detail — pages ranking for it with positions and ownership, plus related keywords already tracked in the project.3 params

Get a keyword detail — pages ranking for it with positions and ownership, plus related keywords already tracked in the project.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
queryHash*string
list_pagesList ranked pages tracked for a project — URL, title, company, query count, ownership. Filter by ownership or company domain.6 params

List ranked pages tracked for a project — URL, title, company, query count, ownership. Filter by ownership or company domain.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
cursorvalue
filtersobject
limit*number
default: 50
projectId*string
sortingarray
get_page_dossierGet a page dossier — URL, title, project rankings, ownership. `headingOutline`, `targetKeywords`, and `contentAnalysis` populate for owned (asset-mapped) pages only.3 params

Get a page dossier — URL, title, project rankings, ownership. `headingOutline`, `targetKeywords`, and `contentAnalysis` populate for owned (asset-mapped) pages only.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
pageId*string
projectId*string
list_article_suggestionsList article suggestions for a project — title, status, priority, cluster, intent, source, publishedAt, scheduledFor, and a per-channel distributions rollup ({ channel, count, latestAt, scheduledFor } per channel the content went out on). Use distributions to spot gaps from th...5 params

List article suggestions for a project — title, status, priority, cluster, intent, source, publishedAt, scheduledFor, and a per-channel distributions rollup ({ channel, count, latestAt, scheduledFor } per channel the content went out on). Use distributions to spot gaps from th...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
cursorvalue
limit*number
default: 20
projectId*string
statusvalue
create_content_plan_from_opportunitiesCreate a content plan by harvesting the top-30 opportunity clusters from a completed research run. Auto-creates article suggestions linked to each cluster. Left out of the harvest: dismissed clusters (set_opportunity_status), keywords matching the project exclusion terms (set_...2 params

Create a content plan by harvesting the top-30 opportunity clusters from a completed research run. Auto-creates article suggestions linked to each cluster. Left out of the harvest: dismissed clusters (set_opportunity_status), keywords matching the project exclusion terms (set_...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
add_article_suggestionAdd a bare article suggestion to a content plan (title + optional intent and reasoning). For richer input that produces a brief-ready suggestion, use create_article_suggestion_with_input.6 params

Add a bare article suggestion to a content plan (title + optional intent and reasoning). For richer input that produces a brief-ready suggestion, use create_article_suggestion_with_input.

Parameters* required
contentPlanId*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
intentstring
projectId*string
reasoningstring
title*string
create_article_suggestion_with_inputCreate a brief-ready article suggestion from the operator's own input. Auto-resolves a default content plan; creates/links search-query rows for the keywords; returns suggestionId + contentPlanId. Free-tier compatible (no research run required).10 params

Create a brief-ready article suggestion from the operator's own input. Auto-resolves a default content plan; creates/links search-query rows for the keywords; returns suggestionId + contentPlanId. Free-tier compatible (no research run required).

Parameters* required
anglestring
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
primaryKeyword*string
projectId*string
reasoningstring
searchIntentstring
one of informational · commercial · transactional · navigational
secondaryKeywordsarray
targetAudiencestring
title*string
wordCountTargetinteger
update_article_statusMove an article through the production pipeline. Statuses: planned, generating_brief, brief_ready, drafting, draft_ready, reviewing, ready_to_publish, published. For the published transition use mark_article_published instead — it records the live URL, which Search Console out...5 params

Move an article through the production pipeline. Statuses: planned, generating_brief, brief_ready, drafting, draft_ready, reviewing, ready_to_publish, published. For the published transition use mark_article_published instead — it records the live URL, which Search Console out...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
id*string
lastActorstring
one of user · agent · system
scheduledForvalue
status*string
one of planned · generating_brief · brief_ready · drafting · draft_ready · reviewing
generate_article_briefForge a writer-ready brief from an article suggestion. `channel` picks the brief template: article (default, SEO article outline), reels (hook/beats/shot list), youtube (retention beats/chapters), x (thread posts), linkedin (carousel slide deck: cover hook, one-idea slides, re...6 params

Forge a writer-ready brief from an article suggestion. `channel` picks the brief template: article (default, SEO article outline), reels (hook/beats/shot list), youtube (retention beats/chapters), x (thread posts), linkedin (carousel slide deck: cover hook, one-idea slides, re...

Parameters* required
articleSuggestionId*string
channelstring
one of article · reels · youtube · x · linkedin
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
forceboolean
guidancestring
projectId*string
get_article_suggestionGet article suggestion details — metadata, cluster context, brief availability, registered derived assets (carousels, social posts), target keywords with volumes. Call get_article_brief for the full brief. Status semantics: generating_brief with briefQueuedAt set means the bri...2 params

Get article suggestion details — metadata, cluster context, brief availability, registered derived assets (carousels, social posts), target keywords with volumes. Call get_article_brief for the full brief. Status semantics: generating_brief with briefQueuedAt set means the bri...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
suggestionId*string
get_draft_statusRe-read an article suggestion's verification state without re-linting: the suggestion's single pipeline status plus, per destination `format`, the stored draft and the latest gate receipt (verdict, per-check detail, thresholds) from its last lint_draft submission. Free and unc...3 params

Re-read an article suggestion's verification state without re-linting: the suggestion's single pipeline status plus, per destination `format`, the stored draft and the latest gate receipt (verdict, per-check detail, thresholds) from its last lint_draft submission. Free and unc...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
formatstring
suggestionId*string
get_article_briefGet the full content brief for an article suggestion. A suggestion holds one brief per channel — pass `channel` (article default | reels | youtube | x | linkedin) to pick which. Every brief carries hookStatement (one verbatim-usable hook sentence naming the reader payoff); art...4 params

Get the full content brief for an article suggestion. A suggestion holds one brief per channel — pass `channel` (article default | reels | youtube | x | linkedin) to pick which. Every brief carries hookStatement (one verbatim-usable hook sentence naming the reader payoff); art...

Parameters* required
channelstring
one of article · reels · youtube · x · linkedin
compactboolean
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
suggestionId*string
delete_article_suggestionDelete an article suggestion and its associated brief. Cascades to keyword and cluster links.2 params

Delete an article suggestion and its associated brief. Cascades to keyword and cluster links.

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
id*string
download_brief_markdownGet a brief as inline markdown the host agent can use as a writing prompt. Pass format=markdown_inline, and `channel` (article default) to pick which of the suggestion’s per-channel briefs to render. Returns the brief assembled into a single markdown string capped at ~8K chars...5 params

Get a brief as inline markdown the host agent can use as a writing prompt. Pass format=markdown_inline, and `channel` (article default) to pick which of the suggestion’s per-channel briefs to render. Returns the brief assembled into a single markdown string capped at ~8K chars...

Parameters* required
channelstring
one of article · reels · youtube · x · linkedin
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
format*string
one of pdf · markdown · markdown_inline
projectId*string
suggestionId*string
mark_article_publishedRecord that an article went live at a URL. Flips the suggestion to published, writes the distribution ledger row, stamps the Passport, and pings IndexNow. Call it only once the URL actually resolves — the IndexNow ping fires immediately, and a ping for a dead URL is wasted (se...4 params

Record that an article went live at a URL. Flips the suggestion to published, writes the distribution ledger row, stamps the Passport, and pings IndexNow. Call it only once the URL actually resolves — the IndexNow ping fires immediately, and a ping for a dead URL is wasted (se...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
id*string
publishedAtstring
publishedUrl*string
register_derived_assetRegister a derived asset (LinkedIn carousel PDF, social post, video, image) produced from an article suggestion. Appends a distribution-ledger row so the suggestion shows everything it produced — the article plus its derivatives — for content-ROI reporting (get_article_suggest...6 params

Register a derived asset (LinkedIn carousel PDF, social post, video, image) produced from an article suggestion. Appends a distribution-ledger row so the suggestion shows everything it produced — the article plus its derivatives — for content-ROI reporting (get_article_suggest...

Parameters* required
channelstring
one of reels · youtube · x · linkedin
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
kind*string
one of carousel_pdf · social_post · video · image · other
scheduledForstring
suggestionId*string
url*string
get_lint_rubricGet the verification rubric for an article suggestion: the submission format for the channel (markdown | --- separated thread | post-with-slides | production script), required vs advisory checks, the exact numeric limits each check grades against (checkParams), plus the brief...3 params

Get the verification rubric for an article suggestion: the submission format for the channel (markdown | --- separated thread | post-with-slides | production script), required vs advisory checks, the exact numeric limits each check grades against (checkParams), plus the brief...

Parameters* required
channelstring
one of article · reels · youtube · x · linkedin
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
suggestionId*string
lint_draftSubmit a draft for verification against its brief. Returns a pass/flag verdict with per-check detail. Pass moves the article to ready_to_publish; flag moves it to draft_ready for revision. `channel` (article | reels | youtube | x | linkedin) declares WHICH of the suggestion's...6 params

Submit a draft for verification against its brief. Returns a pass/flag verdict with per-check detail. Pass moves the article to ready_to_publish; flag moves it to draft_ready for revision. `channel` (article | reels | youtube | x | linkedin) declares WHICH of the suggestion's...

Parameters* required
channelstring
one of article · reels · youtube · x · linkedin
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
draft*string
formatstring
suggestionId*string
waiveChecksarray
get_write_handoffOne-call writer handoff: returns a compact writing payload for an article suggestion (brief essentials, keywords, acceptance criteria, lint instructions). Compact by design — FAQs cap at 6 and long sections degrade to fit a deep-link budget; the FULL brief is get_article_brief...2 params

One-call writer handoff: returns a compact writing payload for an article suggestion (brief essentials, keywords, acceptance criteria, lint instructions). Compact by design — FAQs cap at 6 and long sections degrade to fit a deep-link budget; the FULL brief is get_article_brief...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
suggestionId*string
expand_ideaScore a raw article idea against the project's niche without writing anything to the plan. Returns a title, angle, search intent, related queries, a coarse demand estimate, and a 0-100 niche-fit score. Pass the returned fields to accept_idea to commit the idea as a brief-ready...3 params

Score a raw article idea against the project's niche without writing anything to the plan. Returns a title, angle, search intent, related queries, a coarse demand estimate, and a 0-100 niche-fit score. Pass the returned fields to accept_idea to commit the idea as a brief-ready...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
ideaText*string
projectId*string
accept_ideaCommit an expanded idea (from expand_idea) to the content plan as a brief-ready article suggestion. Stores the verbatim idea as provenance, lands the suggestion in generating_brief, and forges its brief automatically (free tier: queues past the daily cap). Returns the new sugg...10 params

Commit an expanded idea (from expand_idea) to the content plan as a brief-ready article suggestion. Stores the verbatim idea as provenance, lands the suggestion in generating_brief, and forges its brief automatically (free tier: queues past the daily cap). Returns the new sugg...

Parameters* required
angle*string
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
demandEstimatestring
one of low · medium · high
ideaText*string
nicheFitinteger
projectId*string
reasoningstring
relatedQueriesarray
searchIntent*string
one of informational · commercial · transactional · navigational
title*string
check_ideaAttach real search data to one article idea that is already in the project — runs one live Google search per target keyword and returns volume bands and the pages currently ranking for each. Use after create_article_suggestion_with_input, or on any existing suggestion the oper...3 params

Attach real search data to one article idea that is already in the project — runs one live Google search per target keyword and returns volume bands and the pages currently ranking for each. Use after create_article_suggestion_with_input, or on any existing suggestion the oper...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
suggestionId*string
list_radar_topicsList the latest emergent-topic radar snapshot for a project: rising narrative topics (label, summary, momentum, novelty, drivers, evidence) with per-topic index and how many article suggestions were already added from each. Returns null when the project has no radar snapshot y...2 params

List the latest emergent-topic radar snapshot for a project: rising narrative topics (label, summary, momentum, novelty, drivers, evidence) with per-topic index and how many article suggestions were already added from each. Returns null when the project has no radar snapshot y...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
expand_radar_topicExpand one radar topic (by signalObservationId + topicIndex from list_radar_topics) into 3-6 candidate article angles with title, intent, and editorial positioning; each angle is flagged when a near-duplicate already exists in the content plan. Optionally pass customPov for an...5 params

Expand one radar topic (by signalObservationId + topicIndex from list_radar_topics) into 3-6 candidate article angles with title, intent, and editorial positioning; each angle is flagged when a near-duplicate already exists in the content plan. Optionally pass customPov for an...

Parameters* required
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
customPovstring
projectId*string
signalObservationId*string
topicIndex*integer
add_radar_topicAdd selected angles from a radar topic to the content plan as radar-born article suggestions (provenance preserved; exact-title duplicates skipped). Angles come from expand_radar_topic; call list_radar_topics first to get signalObservationId + topicIndex. Auto-creates the cont...6 params

Add selected angles from a radar topic to the content plan as radar-born article suggestions (provenance preserved; exact-title duplicates skipped). Angles come from expand_radar_topic; call list_radar_topics first to get signalObservationId + topicIndex. Auto-creates the cont...

Parameters* required
angles*array
context*string
One sentence: what is the operator trying to achieve right now? Describe their goal, not this tool's purpose.
projectId*string
signalObservationId*string
topicAngleTotalinteger
topicIndex*integer

Sponsors

Details

Category
Sales & Marketing
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Sales & Marketing MCP servers

View all
1creintel avatarNDI-MCP-Servercreintel/ndi-mcp-serverCommercial real estate deal search, comp lookup, and scoring for the Northeast US0stars
2csoai-org avatarMeok Omnibus Tracker Mcpcsoai-org/meok-omnibus-tracker-mcpEU Digital Omnibus AI Act tracker - Track delay status by article. First-mover advantage for SEO + b0stars
3cotlet-connect avatarAccuRanker MCP Server and API by Cotletcotlet-connect/accuranker-mcpAccuRanker SEO rank tracking MCP server: add keywords, list keywords and ranks.0stars
4cotlet-connect avatarIdealista MCP Server and API by Cotletcotlet-connect/idealista-mcpIdealista property sales and rentals MCP server: list my listings, update listing, renew listing.0stars
5cotlet-connect avatarSmugMug MCP Server and API by Cotletcotlet-connect/smugmug-mcpSmugMug photography hosting and sales MCP server: list galleries, create gallery, upload photos.0stars
6true402 avatarMcp Servertrue402/mcp-serverPay-per-call AI + web + on-chain tools over x402 (USDC on Base): LLM, SEO, extract, token safety.0stars