74trust / 100

VarynForge

by app.varynforge.com in Other

MCP serverPassing, checked 6 h ago

SEO research SaaS exposed as 30+ MCP tools. Forge niche analysis, plans, and writer-ready briefs.

https://app.varynforge.com/api/mcp
Tools
57
open to any client
Uptime
100%
last 30 days
Response time
314 ms
524 ms slowest 5%
Last check
Passed
6 h ago, next any minute now

Scan it nowHow to connect

Reliability

All checks passedSome failedAll failedNot checked

Status and outage history · Atom feed · Watch with other listings

How to connect

Add it to any MCP client that supports remote servers.

{
  "mcpServers": {
    "varynforge": {
      "type": "http",
      "url": "https://app.varynforge.com/api/mcp"
    }
  }
}

57 tools

  • get_instructions

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

  • get_changelog

    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.

  • get_writer_system_prompt

    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…

  • get_account_status

    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 every…

  • list_organizations

    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…

  • get_onboarding_guide

    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…

  • send_feedback

    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 this…

  • create_project

    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: mine…

  • get_project

    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…

  • get_project_asset

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

  • update_niche

    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.

  • list_destinations

    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-reference…

  • add_destination

    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…

  • list_competitors

    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.

  • set_competitor_importance

    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 ranking…

  • add_competitor_by_domain

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

  • update_asset_profile

    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…

  • set_posting_cadence

    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.

  • resync_asset_profile

    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 facts…

  • remap_asset

    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.

  • start_research_run

    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.

  • list_projects

    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…

  • get_competitor_detail

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

  • get_project_overview

    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…

  • get_research_status

    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)…

  • get_pitch_report_payload

    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 carries…

  • get_starting_point_report

    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…

  • list_opportunities

    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…

  • get_opportunity_detail

    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).

  • set_opportunity_status

    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…

  • set_excluded_terms

    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…

  • list_keywords

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

  • get_keyword_detail

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

  • list_pages

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

  • get_page_dossier

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

  • list_article_suggestions

    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 the…

  • create_content_plan_from_opportunities

    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…

  • add_article_suggestion

    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.

  • create_article_suggestion_with_input

    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).

  • update_article_status

    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…

Security scan

No findings

We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTime
6 h agoPassed200291 ms
17 h agoPassed200263 ms
28 h agoPassed200315 ms
39 h agoPassed200361 ms
2 days agoPassed200310 ms
Show 10 older checks
3 days agoPassed200310 ms
3 days agoPassed200224 ms
3 days agoPassed200300 ms
4 days agoPassed200292 ms
4 days agoPassed200260 ms
4 days agoPassed200390 ms
5 days agoPassed200251 ms
5 days agoPassed200256 ms
6 days agoPassed200327 ms
6 days agoPassed200356 ms