Documentation contents
MCP connector
The connector exposes your NessFlow projects to an MCP compatible assistant. It uses the same rights as the public API, for the team chosen when connecting.
Connect
https://mcp.nessflow.com/mcp
- Claude Settings, Connectors, Add custom connector, then paste the address and sign in to NessFlow.
- ChatGPT Settings, Apps and Connectors, Create, then paste the address and sign in to NessFlow.
- Le Chat Intelligence, Connectors, Add connector, Custom MCP, then paste the address.
- Cursor Add the server from the MCP settings, or with the install link in the AI assistant tab of NessFlow.
- VS Code Run “MCP: Add Server”, type HTTP, then the address; or use the NessFlow install link.
-
Claude Code
One command in the terminal:
claude mcp add --transport http nessflow https://mcp.nessflow.com/mcp
Rights, quotes and log
When connecting, you choose the team and the rights: read, act, spend. Any action that uses the plan first returns a quote with a confirmation handle; the assistant runs it only by sending that handle back. Every action is logged, and the connection can be revoked from NessFlow.
Tool catalogue
Generated from the server. A connection only sees the tools its rights, plan and modules allow. Descriptions are the ones the assistant receives.
-
nessflow_whoami(read, Starter)Describe the NessFlow account this connection acts for: the team, its plan, the rights granted to this connection, what it can effectively do once the team settings apply (connection.effective_access, connection.can_spend), the rate limit left, and every plan quota (used, limit, remaining). Use it first, and whenever a refusal mentions a plan limit. A quota limit of null means unlimited; 0 means not included in the plan.
-
nessflow_operations_list(read, Starter)List what is running right now for the team: crawls in progress (with their stage and their progress as pages crawled out of the page budget), exports, recommendation runs. Use it to know whether a crawl can be launched (one active crawl per team) or to follow a long task. The list is capped; meta.total gives the full count.
-
nessflow_projects_list(read, Starter)List the projects of the team (one website each), with their identifier, URL and latest completed crawl. Use it to find the project_id other tools need. Paginated: pass meta.next_cursor as cursor for the next page.
-
nessflow_project_get(read, Starter)Read one project: its website URL, domain, whether it is locked (read only) and its latest completed crawl. Requires the project_id (UUID) returned by the project list.
-
nessflow_project_scorecard_get(read, Starter)Read the health score of a project and its five pillars (technical, content and AI-answer readiness, accessibility, acquisition, crawlability). A pillar can be not measured: report it as such, never as zero.
-
nessflow_campaigns_list(read, Starter)List the campaigns of a project: reusable crawl settings (start URL, page budget, schedule). A crawl is always launched from a campaign. Paginated with meta.next_cursor.
-
nessflow_campaign_get(read, Starter)Read one campaign: its start URL, page budget, crawl options and schedule. Requires the campaign_id (UUID) returned by the campaign list.
-
nessflow_crawls_list(read, Starter)List the crawls of a project, newest first, with their status and dates. Use it to find the latest finished crawl or a baseline to compare with. Paginated with meta.next_cursor.
-
nessflow_crawl_get(read, Starter)Read one crawl: status, current stage, pages crawled out of the page budget, dates. A crawl still running is reported as such; read it again later instead of waiting. Requires the crawl_id (UUID).
-
nessflow_issues_list(read, Starter)List the issue occurrences found by a crawl, one per affected page, filterable by severity, category or exact issue name. Start from the issue summary to pick a name, then list its occurrences. Paginated with meta.next_cursor.
-
nessflow_issues_summary_get(read, Starter)Summarise the issues of a crawl: totals by severity and one group per issue type with its number of occurrences. Occurrences that only describe a protection page (blocked, challenge) are counted apart, never in the totals.
-
nessflow_pages_list(read, Starter)List the pages a crawl visited, filterable by HTTP status class and internal or external. Each page carries its URL, status, title and key measures. Paginated with meta.next_cursor.
-
nessflow_page_get(read, Starter)Read what a crawl measured on one page, given its exact URL: status, title, meta description, H1, word count, canonical, response time, size, links, images and the issues found on it. Use the URL as listed by the page list.
-
nessflow_crawl_pagespeed_get(read, Starter)Read the PageSpeed results measured during a crawl: the average and the results per page and strategy (mobile, desktop). A strategy that could not be measured is reported as not measured, never as a zero score.
-
nessflow_crawl_geo_get(read, Starter)Read how readable the website is for AI answer engines (GEO): the score and its axes, AI crawler access, llms.txt, structured data, editorial signals and improvement hints. A score built on few measurable axes says so in its axes.
-
nessflow_crawl_accessibility_get(read, Starter)Read the accessibility audit of a crawl: score, pages analysed out of the total, failing rules, conformance by principle, contrast pairs, hints and the checks that need a human. Use it to explain which fixes would remove the most violations.
-
nessflow_crawl_eeat_get(read, Starter)Read the trust foundation report (E-E-A-T) of a crawl: the axes expected for this business, which are present, missing or not measurable, and the evidence pages.
-
nessflow_crawl_structure_get(read, Starter)Read the internal linking structure of a crawl: depth from the home page, orphan pages, pages with few inbound links, and link scores (ranks, not grades). A truncated crawl reports its figures as not comparable.
-
nessflow_crawls_compare(read, Starter)Compare a crawl with a baseline crawl of the same project (baseline is a crawl UUID): the summary of changes, status codes, issues and pages that appeared, disappeared or changed. Pick the baseline from the crawl list.
-
nessflow_recommendations_get(read, Starter)Read the AI recommendations of a project: global actions ranked by impact and effort, with the signals they come from, and per-page actions. Generated from the latest audits; reading them costs nothing.
-
nessflow_export_get(read, Starter)Read the state of an export (Excel or PDF): pending, ready or expired. When ready, it carries the download address on the NessFlow API, which needs an API token: tell the user to download the file from the exports of the NessFlow app rather than fetching it.
-
nessflow_positions_get(read, Starter)Read the rank tracking of a project over a period: tracked keywords, their positions and trend. Not in the top 100 is a measured fact; a keyword not yet checked is not measured. Rankings carry a trend, never a score.
-
nessflow_search_console_get(read, Starter)Read the Search Console data of a project over a period: performance (clicks, impressions, average position) and indexation. Requires the project to have connected its Search Console property.
-
nessflow_backlinks_get(read, Pro)Read the latest backlink profile snapshot of a project, for the target it was measured on. Available when the backlink module is active for the project.
-
nessflow_security_get(read, Starter)Read the latest passive security scan of a project: score, counts by severity and findings. Passive detection only: nothing is scanned for vulnerabilities or attacked.
-
nessflow_logs_get(read, Starter)Read the server log analysis of a project over a period: totals and daily series of crawler visits, and the days missing from the collection. No IP address is ever returned.
-
nessflow_project_create(write, Pro)Create a project for a website the team wants to audit. It uses one project slot of the plan, so the first call returns a quote; call again with the confirmation to create it. The new project still needs a campaign before a crawl can run.
-
nessflow_project_update(destructive, Pro)Rename a project or change its website URL. Changing the URL erases what described the previous site (profile, priority URLs), so the first call returns a quote and nothing changes until it is confirmed.
-
nessflow_campaign_create(write, Pro)Create a campaign on a project: the start URL, the page budget, the crawl depth and the options (JavaScript rendering, PageSpeed, accessibility, external links) a crawl will use, and an optional schedule. Credentials for a protected site are set on the NessFlow screen, never here.
-
nessflow_campaign_update(write, Pro)Change the settings or the schedule of a campaign. The next crawl uses the new settings; past crawls keep theirs. Credentials for a protected site are set on the NessFlow screen, never here.
-
nessflow_campaign_delete(destructive, Pro)Delete a campaign, stopping its crawl if one is running. This cannot be undone, so the first call returns a quote; call again with the confirmation to delete. An assistant can delete a few campaigns per day at most.
-
nessflow_crawl_launch(billed, Pro)Launch a crawl of a campaign. It fetches the website and uses the plan, so the first call returns a quote; call again with the confirmation to launch. One crawl runs at a time per team. Returns at once with the crawl identifier; read its state again later.
-
nessflow_crawl_stop(write, Pro)Stop a running crawl now. What was already crawled is kept and marked as truncated, so it is not compared with complete crawls. Stopping is never refused for billing reasons.
-
nessflow_recommendations_generate(billed, Pro)Generate new AI recommendations for a project from its latest audits. It uses one generation of the monthly allowance, so the first call returns a quote; call again with the confirmation. Runs in the background: read the recommendations again later.
-
nessflow_export_create(write, Pro)Request a full export of a finished crawl, as an Excel workbook or a PDF report. Runs in the background and returns the export identifier; read the export again later to get its download link.
-
nessflow_keywords_track(billed, Pro)Start tracking keywords for a project: their position will be checked every day. Each keyword uses one slot of the plan, so the first call returns a quote; call again with the confirmation.
-
nessflow_keywords_untrack(write, Pro)Stop tracking keywords for a project and free their slots. Their history is kept. Freeing slots is never refused for billing reasons.
-
nessflow_keywords_pause(write, Pro)Pause the daily check of tracked keywords and free their slots, keeping them in the list and their history. Resuming them later uses slots again.
-
nessflow_keywords_resume(billed, Pro)Resume the daily check of paused keywords. Each keyword uses one slot of the plan again, so the first call returns a quote; call again with the confirmation.
-
nessflow_keyword_check_now(billed, Pro)Check the position of one tracked keyword now instead of waiting for the daily check. It uses one live check of the daily allowance, so the first call returns a quote; call again with the confirmation. The result arrives in the background.
Examples
-
Understand what changed since the last audit
Compare the latest audit of {project} with the previous one. Separate real regressions, noise, and what you cannot decide for lack of measurement. For each real regression, give the most affected page.
-
Prepare the client report
Prepare the monthly report of {project} for my client: what improved, what regressed, what cannot be measured yet. Ten lines at most, every figure with its denominator.
-
Prioritise fixes
Which ten fixes would raise the health score of {project} the most for the least effort? For each: the pillar it touches, the number of pages, and an example URL.
-
Check that a fix worked
I fixed the title tags of the product pages. Run the audit of {campaign} again, tell me first what it will use, then remind me when we can conclude whether the fix worked.
-
Find orphan pages that get traffic
Which pages of {project} are orphans or more than four clicks from the home page, and which of them still get Search Console traffic?
-
Build this month’s action plan
Build the SEO action plan of {project} for this month from its recommendations: three workstreams at most, ranked by impact and effort, with the health score pillar each one improves.
-
Know which AI crawlers can read the site
Which AI answer engine crawlers are allowed to read {project}, which are blocked, and is the rule blocking them intended or accidental?
-
Measure readability by AI engines
Is my website readable by AI answer engines? Give the GEO score of {project}, the three main blockers, and the most exemplary page to imitate.
-
Review the portfolio
Go through all my projects: which one dropped the most since its last audit, and why? Ignore those whose audit is too recent to conclude.
Connector specific errors
-
confirmation.invalidUnknown or expired confirmation, or one issued to another connection: ask for a new quote. -
confirmation.mismatchThis confirmation was issued for other arguments: ask for a new quote. -
mcp.spend_not_grantedThis connection was not granted the right to use your plan's quotas. -
mcp.destructive_capDaily limit of deletions by an assistant reached. -
mcp.disabled_by_teamYour team has closed the connector to assistants. -
mcp.client_not_allowedYour team does not allow this assistant. -
mcp.input_not_availableThis setting cannot be changed by an assistant: set it in NessFlow. -
mcp.pkce_requiredThis authorization request requires PKCE with the S256 method.