OpenSEO review: costs, MCP reporting and what to test

A source-based review of OpenSEO v0.1.8 across hosted, Docker and Cloudflare setups, with MCP, Agent Skills, rank definitions and a practical evaluation worksheet.

Sonar the Answer Whale inspects an open SEO toolbox containing Docker, an API key, pay as you go meter, rank chart, backlink, keyword, and MCP parts.

Verdict: OpenSEO is a credible workflow layer, not a private search index

OpenSEO is worth evaluating if you want one workspace for SEO research, owned Search Console data, rank tracking, and agent-assisted tasks. The application is open source under the MIT license, but most keyword, backlink, competitor, and AI-visibility data still comes from DataForSEO. Self-hosting the interface does not give you a self-hosted web index.

The practical decision is whether OpenSEO can complete a specific job more clearly or cheaply than your current setup. Version 0.1.8 improves four parts of that evaluation: keyword capitalization, Google property selection, SAM reply control, and the distinction between a rate-limited crawl and a bot-blocked crawl. The verdict remains run a controlled trial, not replace an established suite on the strength of a feature list.

What this review checked

This September 12 update checked the official pricing and deployment documentation, the MIT license, the v0.1.8 release notes, and selected source files at the signed v0.1.8 commit 7b9ee0e. The source inspection focused on keyword normalization, crawl throttling, Google property filtering, SAM stop and retry behavior, SERP position fields, and agent access.

No paid DataForSEO account was connected for this update. The product was not benchmarked for accuracy, uptime, or client-scale reliability. Code can establish the intended data path and failure handling; it cannot establish how reliably a hosted account performs under your workload.

What v0.1.8 changes in a real evaluation

The September 12 release adds case-preserving tracked keywords, searchable Google Analytics and Search Console properties, and controls to stop or retry SAM replies. It also reports a fix for audits that treated temporary request limits as bot blocking. The table below connects those release notes to the inspected implementation and a test you can run.

OpenSEO v0.1.8 changes and the acceptance check each one needs
ChangeWhat the code establishesWhat to verify
Match caseWith the option off, new keywords are lowercased. With it on, capitalization is retained and saved with the keyword.Add a brand term in two case forms. Confirm the saved rows, duplicate handling, scheduled checks, and charged usage.
Google property searchThe shared picker filters account email, property name, detail, and identifier.Search similar property names, switch accounts, and confirm that the displayed account and saved property stay aligned.
Stop and retry SAMRetry rewinds to the last user message and starts a new, human-triggered turn. A stopped or failed turn keeps the spend it already consumed.Stop after a paid tool call, retry once, then reconcile both turns against the usage ledger.
Rate-limit handlingHTTP 429 responses have a separate rate_limited state, honor Retry-After when present, and enter bounded backoff.Use a controlled origin to return 429 and a separate WAF or robots denial. Confirm that the final audit labels remain distinct.

The case option deserves a cost warning. The service code treats differently capitalized terms as separate tracked rows when Match case is enabled, and the scheduled estimate uses the number of rows. That can be useful for a brand whose capitalized form triggers a different result set, but it can also duplicate checks if capitalization is not part of the question.

The crawl fix is more than a label change. A temporary 429 calls for waiting and retrying; a WAF challenge or explicit block calls for access diagnosis. Combining both states can send an audit toward the wrong remedy. The inspected code now preserves that distinction, but a controlled crawl is still needed to confirm the complete report and interface behavior.

Choose hosted, Docker, or Cloudflare by access boundary

OpenSEO now documents three materially different operating models. The choice is not simply hosted versus free. It decides who operates authentication, where application data lives, and how agents connect.

OpenSEO deployment choices
ModelBest fitAccess and operating boundaryFirst acceptance check
HostedA quick evaluation without running the application.OpenSEO manages the service. OAuth is the normal MCP path; a personal API key acts as its owner in the workspace.Reconcile included credits, top-ups, connected accounts, and one completed job.
DockerPersonal or local testing on infrastructure you control.The Docker image uses AUTH_MODE=local_noauth. Keep it private or add your own authenticated boundary. Pin an image tag instead of relying indefinitely on latest.Confirm the image version, network exposure, backups, DataForSEO secret, and telemetry choice.
CloudflareAn internet-facing or shared team workspace.The deployment provisions a Worker, D1, KV, R2, and Cloudflare Access. R2 activation needs a payment method, even when usage stays within the free tier. Teammates share one workspace.Test allowed emails, recovery, data deletion, and managed OAuth before connecting an MCP client.

Cloudflare’s documented setup adds one easily missed MCP step: Managed OAuth is not enabled automatically. The Access application must allow the callback type used by the client. A successful browser login that exposes no tools can therefore be an OAuth configuration failure rather than an OpenSEO data failure.

Hosted pricing and self-hosting use different budgets

As checked September 12, the hosted plan costs $10 per month and includes $10 of monthly usage. Included credits reset each billing cycle; purchased top-ups do not expire. An active subscription is required to use the hosted service. The page lists a $0.50 trial and says Search Console data does not consume usage credits.

The repository describes a 28% markup on hosted DataForSEO requests. Do not add that markup again to prices already shown by OpenSEO’s estimator. For self-hosting, DataForSEO is paid directly. Docker or Cloudflare infrastructure, maintenance, backups, and optional AI-provider usage remain separate.

AI checks need their own budget line. OpenSEO’s estimator labels a ChatGPT brand check at about $1.09 and a typical keyword search at about $0.05. These are vendor estimates for different operations, not measured costs from this review. The self-hosting guide also requires an OpenRouter key for optional SAM features.

Deeper SERP checks can repeat paid work

The inspected get_serp_results tool accepts one to ten queries per call and a depth between 10 and 100 in increments of ten. The default is 20. Its underlying request code sets desktop and Windows for this lookup, so it should not be described as a mobile check.

A deeper request starts again at the top rather than fetching only the missing tail. Asking for 20 results and then 100 can involve two crawls. Set the required market, depth, and budget before the batch, and inspect each query’s success state because one failed query does not fail the entire batch.

The same result can still produce two rank numbers

The v0.1.8 changes do not alter the position-field difference found in the previous review. The MCP SERP mapper prefers rank_absolute, falling back to rank_group. The rank tracker first finds a matching organic result and prefers rank_group, falling back to the absolute value.

For a synthetic organic result with absolute rank 9 and group rank 3, the two inspected expressions return 9 and 3. This is a reproducible field-mapping check, not evidence that a website changed position.

Position fields should not be merged without a definition
SurfaceInspected behaviorReporting action
MCP SERP lookupAbsolute rank takes precedence.Label the returned field and retain result type, market, device, and depth.
Rank trackerOrganic group rank takes precedence for the matching domain.Compare like-for-like tracking runs instead of an unlabeled MCP number.
Search ConsolePosition is an average over the selected rows and filters.Keep it separate from a sampled live SERP position.

This does not by itself establish a defect. It establishes a requirement for any report that joins outputs from more than one OpenSEO surface.

Search Console is still the best low-cost starting point

For a publisher, an agent working with owned performance data can be more useful than another competitor estimate. The Search Console MCP tools are described as read-only and credit-free. Their contract says CTR is a fraction, dates use Pacific Time, and recent data may be incomplete.

The v0.1.8 property search should make accounts with many properties easier to navigate. It does not expand Google permissions, create access to an unverified property, or change the reporting dimensions. Test account switching because the same release also fixes a stale account-email display.

Start with one concrete question: which pages gained impressions over a matched period without gaining clicks? Compare the output with the same native Search Console property, search type, dates, and filters. Missing position for Discover or Google News is not zero position and should not be forced into a Web-search template.

MCP and Agent Skills solve different problems

OpenSEO MCP gives a compatible agent access to tools and workspace data. Agent Skills are instruction files that tell the agent how to combine those tools for jobs such as an SEO audit, keyword research, clustering, competitor analysis, local SEO, or link prospecting. Installing a skill does not create a new data source or expand the authorization attached to the MCP connection.

The official Codex CLI plugin bundles MCP with nine SEO skills. Codex Desktop, Claude Desktop, Cursor, and other clients have different setup paths, so use the documentation for the actual client instead of assuming the plugin is universal.

Review the skill before using it on a paid or client workspace. Record which tools it may call, whether it writes project context, how it estimates spend, and where human approval is required. This matters because a well-written instruction can still repeat an expensive request, and a personal OpenSEO API key lets the agent act as its owner.

An AI mention is not an analytics visit

The AI-data adapter calls DataForSEO’s LLM-mention endpoints with a target, platform, location, and language. That establishes where those inputs go. It does not establish universal coverage of ChatGPT users or a count of visits to your website.

Evaluate three separate outcomes: whether the selected sample mentions the brand, whether it cites a relevant page, and whether analytics records a referral or conversion. Keep prompt, product, location, language, and collection date with each comparison instead of collapsing the results into one visibility score.

Self-hosting still needs an access and recovery plan

The Docker quickstart has no application-level authentication. Changing an allowed hostname is not an authentication control. The same guide documents aggregate telemetry and the opt-out variables OPENSEO_TELEMETRY_DISABLED=1 and DO_NOT_TRACK=1; this review did not run a network-traffic audit to reproduce the stated collection boundary.

Before adding client data, test a restore, an upgrade, credential rotation, user removal, and agent revocation. For Cloudflare team use, the documentation says everyone allowed through Access shares one OpenSEO workspace. Treat that as a data-separation decision, not only a login convenience.

Who should test OpenSEO now?

A technically comfortable solo publisher has a clear trial path: hosted access or private Docker, one domain, a small keyword set, and one Search Console reporting task. A small agency should add client separation, approval, export, recurring-cost, and recovery checks. A team that wants an internet-facing self-hosted workspace should evaluate the Cloudflare path and its shared-workspace boundary before migration.

Keep your existing suite if a required historical dataset, export, team control, support commitment, or repeatable client report remains unverified. Native Search Console is the comparison for owned-site reporting. Your current paid suite is the comparison for one defined competitor, link, or rank-tracking job. The repository does not establish full data parity with Semrush or Ahrefs.

Run a version-specific acceptance test

Download the OpenSEO v0.1.8 evaluation worksheet (CSV). It contains planned checks, not observed product results. Replace the illustrative row marked EXAMPLE-REMOVE, then record your version, market, inputs, evidence, cost, decision, owner, and recheck date. Do not put credentials, private prompts, or client identifiers in a shared copy.

  1. Pin v0.1.8 and record whether the environment is hosted, Docker, or Cloudflare.
  2. Verify the authentication boundary, connected identity, backup, restore, and revocation path.
  3. Run one keyword task with case matching off, then a deliberate case-sensitive pair with it on.
  4. Compare one SERP task with a saved reference while keeping device, market, depth, and rank definition explicit.
  5. Reconcile one Search Console report with native output using matching dates, filters, property, and account.
  6. Use controlled responses to keep a 429 rate limit separate from bot blocking and a valid empty result.
  7. Stop one SAM turn after a tool call, retry once, and reconcile the spend for both turns.
  8. Review one Agent Skill’s tool calls, writes, approval points, and budget before running it.
  9. Record actual DataForSEO and AI-provider spend plus the time spent operating the setup.
  10. Replace the current workflow only if the evidence and exports support the same decision more reliably.

The decision remains a controlled trial. Use the GitHub repositories for SEO reference to compare OpenSEO with narrower open-source components, and the Tools & Workflows library for related evaluations.

Buy-or-build decision

OpenSEO becomes useful when it replaces a repeatable workflow

The strongest adoption case is not that OpenSEO exposes many features. It is that one controlled workflow becomes easier to run, inspect and hand to another operator.

Start
Select one recurring report with a known native result.
Compare
Reconcile dates, filters, rank definitions and API costs.
Stress
Test a rate limit, an empty result and one interrupted agent turn.
Decide
Keep it only if the exported evidence supports the same decision more reliably.

My takeaway: My current view is positive but conditional: OpenSEO is a credible orchestration layer, not a replacement for first-party search data or careful definitions.

Update and review limits

Updated September 12, 2026: reviewed v0.1.8, added deployment and agent-integration decisions, clarified the cost effect of case-sensitive tracking and SAM retries, and expanded the evaluation worksheet. The original August 29 publication date is preserved.

No paid access or vendor credentials were supplied. Links in this review are not affiliate links. Recheck pricing and release notes before adopting the tool, and reassess the verdict after a credentialed workflow trial.

Keep learning

Continue this topic

Community discussion

Discuss: OpenSEO review: costs, MCP reporting and what to test

Have a question, a useful example, or a different perspective? Join the discussion, share evidence, and help other readers reach a better answer.

0 replies Moderated
No replies yet.

Be the first to ask a focused question, share a practical example, or add useful evidence.

Ask a question or join the discussion

Share evidence, a useful example, or a clear question. Be specific, stay on topic, and challenge ideas without attacking people. First-time replies may be held for moderation.