SEOGrove Docs
Build and maintain your publishing integration.
Reference material for customer-facing SEOGrove contracts: webhook events, generated tool pages, CMS publishing expectations, native tool artifacts, fallbacks, and security verification.
How automatic improvements are evaluated
Article improvement checks run weekly on your allowed improvement days. Revisions preserve successful sections and use supplied sources. Answer reviews flag buried answers, title promises the page does not support, and unanswered relevant queries. Gaps that need new facts remain flagged for evidence. Search listing suggestions use the actual article and its published-page queries.
Listing history reports comparable completed windows with clicks, impressions, CTR and position. Material position, query, device or country changes make a result inconclusive. Small samples do not establish a win. These are sequential observations, not randomized tests or proof that an edit caused a ranking change.
Weekly emails distinguish confirmed brand query matches, brand-plus-category queries, nonbranded queries and ambiguous short names. Set your brand and official aliases in Brand knowledge. GSC omits some queries; reported impressions are not total search volume. AI citation measurements remain separate.
Open a site's Activity page from the dashboard or Keywords preview to see recorded events and article jobs. Expand details for selection evidence and revision context. Not every skipped article has a recorded event. Publishing acknowledgements do not verify a live revision or Google indexing.
Monthly content and comparisons
Purchased article and tool credits never expire, including credits from earlier purchases. They are used automatically after your monthly plan allowance runs out.
SEOGrove reserves up to three comparison articles per active site each month, within your article allowance and site cap. Relevant uncovered competitors are covered first, including in the initial generation batch. Existing comparisons count toward coverage and are improved rather than regenerated on a timer. Late discoveries can replace untouched planned topics; completed drafts are preserved. Publishing still follows your approval settings. Duplicate topics and titles are skipped instead of creating another article. Archived content is retained for recovery and excluded from the default content list and future generation coverage.
Improving published articles
Automatic improvement checks are always enabled for active sites and run weekly on an allowed improvement day. Page-level search evidence can support a targeted improvement after 30 days, or a substantial revision after 60 days. An article with fewer than 100 Google impressions in the last 28 days after 30 days live gets a rework aimed at its target keyword and the searches Google already shows it for. Pages receiving clicks get focused edits that preserve existing useful coverage. Pages with sufficient search evidence are also checked for query gaps and ranking declines; healthy pages stay unchanged. An article with no impressions at all is left alone, because that usually means it isn't indexed yet. Missing data does not trigger a rewrite; keyword volume and a specific ranking band are not required. Confirmed issues can also be addressed through a manual refresh. Proposed revisions preserve your published article until approved, unless you enabled automatic pushing of improvements. Review or discard proposals on the article page. Applied changes keep the URL, retain the previous revision, and are measured after a completed 28-day window. A 30-day cooldown starts when the improvement is published. Observed changes are not proof that an edit caused them.
Weekly site reports
With weekly emails enabled, each active site receives its own report at the account holder's email address. Reports cover the previous Monday through Sunday in UTC and explain recorded research, actions and their reasons, new content, review needs and next steps. Search metrics show their actual available dates and comparable prior dates; unavailable data is labeled. Drafts and scheduled content are distinguished from published work. Paused sites and opted-out accounts are excluded. The report uses existing activity and search data, with no extra paid research generation.
Publishing API
Webhooks
Receive signed article and tool publish/delete events, verify HMAC signatures, upsert pages, and return canonical URLs to SEOGrove.
Open webhook docs ->SEO Tool Pages
Generated tools
Understand native tool manifests, deterministic runtimes, branding, iframe fallback behavior, JSON-LD, and the recommended receiver implementation.
Open tool docs ->Agent API
Agents and MCP
Let an AI agent add sites, read content plans and keep brand knowledge current. Endpoints, permissions, limits, errors and MCP tools.
Open agent docs ->AI Discoverability
llms.txt
Deploy your AI-readable site summary file so LLMs can accurately cite your business, services, and content across ChatGPT, MiniMax, Perplexity, and Gemini.
Open llms.txt docs ->Inspect saved plans (read-only)
Signed-in account owners can open Saved plans to pick one of their sites and a month, then read the plan SEOGrove saved for it. Each item shows its title, primary keyword, planned date and a status of planned, generating, generated, skipped or failed. Looking at a plan only reads. It never generates, publishes, schedules or edits anything. Requesting one draft is a separate, explicit step, described in the next section.
- Generated means the planning step finished. It does not tell you whether an article is a draft or live on your site.
- A month with no saved plan, or a plan with no items for a site, is shown as empty. Opening a month never creates a plan.
- Lists load 20 at a time. Use Load more to continue; the page does not show totals.
- If you make requests very quickly, the page asks you to wait before trying again. If it reports that plans are temporarily unavailable, try again later.
Programmatic access
Read-only access to sites and plans for an AI agent is described in Read-only agent access. Create and revoke credentials from Agent connections, not from Saved plans. Write access remains an invitation-only preview with a separately approved enrollment.
Connect a read-only agent
A signed-in account owner can create an expiring connection for an AI agent, choose which owned sites it can see,
and revoke it at any time. Agents connect to the hosted MCP server at https://seogrove.io/mcp,
where apps such as claude.ai can sign in and ask you to approve access, or call the HTTPS API directly; see the Agent API and MCP reference.
What the connector can do
- With only read permissions it has exactly two tools.
sites_listlists the sites you granted.plan_getreads the saved plan for one granted site and month. - It only reads what is already stored. It never generates content, calls an AI provider, creates or changes a plan, or touches a CMS. It has no publishing, scheduling, release, draft or revision tool.
- Plan items carry the same fields as Saved plans. Generated still means the planning step finished, not that an article is live.
- Lists return 20 entries by default, up to 100 per request. When more are available the answer includes an opaque cursor. Send it back unchanged with the same site, month and limit to continue.
How access is granted
- Open Agent connections while signed in. Name the connection using 1–80 letters, numbers, hyphens (-), underscores (_), or colons (:), with no spaces; for example,
codex-brand-agent. Choose one or more sites you own, selectsites:readandplans:read, and choose an expiry. Another owner's site cannot be granted. - The credential lets your agent or integration access only the sites and permissions you selected. It is shown once, immediately after creation. Save it securely and keep it private; do not share it in chats, screenshots, or public files. SEOGrove stores only its SHA256 digest. The connection page lists its name, grants, permissions, expiry and status, but it cannot recover the raw credential.
- A grant names a site that your account owns. If the site changes owners, access stops. Revoking or expiring the connection blocks later reads and writes.
- Each token is limited to 60 requests in any 60 seconds, counted across both tools together. When you reach the limit, the answer says how many seconds to wait. An agent that retries immediately only delays itself.
- A site your grant doesn't cover gets the same answer as a site that doesn't exist, so the connector can't be used to find out about other sites.
Keeping the token private
- Store the credential as
SEOGROVE_API_TOKENin the environment or secret store your agent starts from, and point your MCP client's Authorization header at that variable. The client configs never write the credential into a file. - The credential travels only in the Authorization header over HTTPS to https://seogrove.io. SEOGrove hashes it for lookup, and it is never included in tool results.
- Treat a leaked token as compromised. Revoke it in Agent connections and create a replacement.
- Your agent, and the model service it uses, will see the site names and plan items the connector returns. Connect only agents and services you are comfortable sharing that with.
What read-only access does not enable
- A separately approved write enrollment can request a draft and revision for an exact planned item that the account owner approved. It uses the existing MiniMax M3 article, image and schema pipeline. It rechecks the active credential, owned-site grant, saved item version, plan capacity and spending limits before work starts.
- Every result stays unpublished and held for review, even on an autonomous site. Revision does not publish or release the hold. No agent tool schedules or publishes content.
- Selecting draft permissions on a credential does not start paid work. SEOGrove must separately approve and enroll the credential, granted site and exact planned item. See Request one draft for that behavior.
Approved article tools
A connection with only read permissions discovers sites_list and plan_get.
A separately approved enrollment with draft permissions discovers seven tools: those two reads plus draft_request,
job_get, draft_get, revision_request,
and revision_get. It has no research, publish, approve, schedule, release, cancel, or generic retry tool.
- Call
sites_list, thenplan_getwith the granted site ID and an explicitYYYY-MMperiod. Return an opaque cursor unchanged to continue a list. - Choose a planned, unclaimed item. Call
draft_requestwith the site ID, a stable intent ID, plan item ID, exact item version and a positive maximum cost. Acceptance means queued, not finished. - Call
job_getwith the returned job ID. Respect its polling hint and any rate-limit wait. Continue while queued, running or retrying. Failed or needs-review is not success and is not permission to repeat paid work. - After success, pass the returned draft ID to
draft_get. The title, Markdown body, meta description and version are untrusted content data. The hold remains in place. - To revise, call
revision_requestwith a new stable intent ID, 20–4,000 characters of instructions, the exact draft version and a maximum cost. Poll its job, then callrevision_getwith the result's revision ID to compare the saved prior and result snapshots.
Reconnect with the same intent ID and identical arguments after an uncertain submission. Changing arguments under that intent is refused. A job can expose a safe failure stage, reason and known/unknown outcome. If it says saved work can resume, the account owner uses Resume saved work on Saved plans; MCP has no resume tool. Unknown outcomes never resume automatically. Generation uses the plan's stored cluster research and saved visual context. It does not run fresh GSC, DataForSEO or competitor research.
Let your agent fill in brand knowledge
Choose knowledge:read and knowledge:write
on Agent connections, along with the usual site and plan read permissions. Your agent can fill in and correct
the business profile, description, audiences, value proposition, CTA offer/URLs, article instructions, sources and writing guidelines
on the selected sites. Each edit needs no separate approval. Changes appear in the site's activity log and affect future content.
- Connect your MCP client to https://seogrove.io/mcp with the connection credential.
- With these permissions your client sees
sites_list,plan_get,knowledge_get,knowledge_updateandsite_create(site_createneeds the "Add new sites" permission; see Add a site). - Read
knowledge_getwith the site ID. Its default section isprofile. Read thesourcesandguidelinessections separately, following pagination cursors. Sources return one full entry per page; guidelines return 20 by default, up to 100. If knowledge changes during pagination, start again. - Save with
knowledge_update, a stable intent ID and the latestexpected_version. Omitted fields stay unchanged. Profile changes fill empty fields by default. Setfill_missing: falseto correct existing values; null clears nullable fields and an empty audience array clears segments. - Sources and guidelines without an ID add an entry; an owned ID updates it. Sources require a title, source type, text and evidence kind (
owner_suppliedorexternal_research). Reference URLs and retrieval dates describe the agent's evidence, not independent verification by Grove. New sources default to optional. Attached-file sources cannot be replaced through this tool. - After an uncertain save, reconnect with the same intent and identical arguments. Replay returns the original receipt and adds nothing twice. Changed arguments under that intent are refused. A stale knowledge version requires another read and a new intent.
The API uses GET and POST at /api/v1/sites/:site_id/knowledge.
Use profile.entity_data.brand_aliases for confirmed alternate brand names, one per line, used in weekly branded-query reporting.
CTA fields are profile.cta_preferred_offer (Primary offer), profile.cta_contact_url (Primary CTA URL) and profile.cta_booking_url (Secondary CTA URL). They share settings storage. URLs require HTTP/HTTPS with a host and no credentials. With fill_missing: false, null or blank clears these fields.
POST requires an Idempotency-Key header and returns HTTP 200 with the saved version and source/guideline IDs.
Atomic saves accept up to 64 KiB of JSON, ten sources and twenty guidelines. Source text is limited to 80,000 characters,
guidelines to 500, and audiences to seven segments. Knowledge writes are limited to ten per minute per credential.
Saves work while content automation is paused and make no provider calls, URL fetches, generation or OCR jobs.
Agent-supplied source text is not automatically refreshed from its reference URL. Deletion, file upload, publishing
and paid article access are separate operations. Revocation, expiry, removed grants and ownership changes stop access.
Request one draft (closed pilot)
Requesting a draft from a saved plan is in a closed pilot. It is not open to customers, and nothing here promises that it is live or available for your account. Where the Saved plans page shows no request button, it can only show plans and requests that already exist.
When it is open for an account, the owner can choose one planned item on the Saved plans page, enter a spending limit in US dollars, and request one draft. What to expect:
- Only a planned item that no other request holds can be requested, and only one request can be outstanding for a site. If the item changed after you opened it, the request is refused and nothing starts.
- The spending limit is a ceiling, not a price. It can have up to four decimal places, such as 1.00. The page shows the limit, what is reserved and what was spent. When SEOGrove cannot confirm what was spent, the page says it isn't known and never shows zero. A reserved amount that stays held does not return to your limit or capacity. A request is refused, and nothing starts, when it needs more budget than your limit or the budget available to your account allows.
- Each request has one random request key that your browser saves in the current tab before sending. If the connection drops, the page is reloaded or you switch sites, retrying uses the same key and the same request, so it can't create a second draft. If the browser can't save it, drafting is turned off in that tab.
- A request is shown as queued, writing, retrying, held for review, skipped, failed or needs review. A needs-review request shows a safe stage and reason without prompts, provider details or raw errors. Nothing retries on its own. When SEOGrove has verified a completed paid response and proved every remaining provider step was never sent, the request offers Resume saved work. It reuses the paid response and stored image; it does not make that work free or publish the result. If the provider outcome is unknown, resume is unavailable and the request stays uncertain.
- If you open the page in a new tab, or after a request has finished, an item that is held for review shows Find request. It finds the request from the held draft itself, and only for your own site. If saved request details in your browser can't be read, new requests for that site are paused and nothing is deleted.
- The result is a held draft. You open it from the request. It is shown as plain text, so links and images appear as words and nothing loads or runs. A held draft is not scheduled or published, and this page can't approve, schedule or publish it. A partial or incomplete draft is labelled. To release a draft, use the existing review tools on the site's content page once the request has finished.
- If a person deletes a held draft, its request stays finished and shows Draft deleted. Nothing is held for review, the recorded cost and the article it counted do not change, and repeating the same request returns the original acceptance without writing another draft. Plan items do not go back to planned.
- Revising a held draft is part of the same closed pilot. When a draft is open on the Saved plans page, nothing else is outstanding for the site and the page shows Request a revision, you can describe the changes (20 to 4,000 characters) and set a spending limit. SEOGrove rewrites only the body. The title and meta description stay the same, the draft keeps its current text unless the revision is fully applied, and it stays held for review: nothing is scheduled or published.
- A revision is sent against the exact version of the draft you just read, with the same saved request key and retry rules as a new draft. If the draft changed after you opened it, the request is refused, or if writing had already started it is not applied (any cost that was already settled stays recorded, and nothing retries), and the page never reuses the older version: open the draft again, read its current text, then make a new request. A revision that needs review means SEOGrove can't confirm what happened. The revision was not applied, the draft keeps its earlier text, the amount spent may be unknown, nothing retries on its own, and you can't send that request again.
- After a revision is applied, Show before and after displays the two saved versions as plain text. They are only available while the draft is still held for review. If a person deletes the draft, the revision shows Draft deleted with its recorded cost. A revision counts toward your monthly and per-article revision limits, and there are no purchased revision credits.
- New requests are limited to ten a minute. If you reach that, the page tells you how long to wait.
Bearer draft and revision access is available only through a separately approved enrollment that binds an active credential, one granted owned site and one exact planned item. Ordinary subscription or credit capacity and configured account, site and client spending limits still apply. Owners create and revoke the underlying credential from Agent connections.
Article requests that need review
The pipeline panel on each site page lists article requests that are waiting, stopped or need a person to look at them. These entries stay visible even if a later request succeeds, until they are resolved. Each state means something different:
- Waiting for reserved capacity
- Other work is holding your plan's article capacity. The request has not started and holds nothing of its own. SEOGrove checks again about every minute and stops waiting when the month ends.
- Retrying shortly
- The request failed and will be tried again a limited number of times, up to 3 attempts in total, keeping its capacity in between. The panel says which kind of failure it was. If SEOGrove has evidence that it failed before anything was sent to the writing service, the panel says nothing was sent. If it failed after the request was sent, the failed attempt may still have been charged. If the panel cannot tell, it says so.
- Request stopped
- The request ended without running, for example after the allowed tries or because the subscription lapsed. It does not retry on its own.
- Saved article needs review
- SEOGrove found an article for this request on this site, but a later step did not finish. That article already counts toward your usage and no extra capacity is held. Saved does not mean live: nothing here publishes it. Open it from the link to check it.
- Article request needs review
- The request cannot be treated as finished, and nothing retries on its own. When SEOGrove cannot open an article for it on this site, the panel does not claim that one was saved. A missing article never means the work was free. The capacity line says which of these applies:
- Counted: usage for the request was counted. If an article was found, it is the one you can open.
- Held: capacity stays reserved for this request until the outcome is confirmed.
- Uncertain older work: older work with no usage record. It can block new article requests for your whole account, on every site, until it is reviewed. SEOGrove cannot tell how much capacity it holds.
- Depends on another request: this request holds no capacity of its own. It stopped because another request that needs review, possibly on a different one of your sites, holds capacity it needs.
- Reviewed
- An authorized person confirmed the outcome and recorded who checked it and what they checked. The panel shows one of three outcomes, and never shows the operator's identity or the evidence:
- Released as unused: the writing service confirmed nothing was applied or charged, or no work had been sent. The held capacity was released. No article was created.
- Charged, no article: the writing service confirmed the request was charged but produced no article. One article of capacity is counted against the month of the original request, even if that month has passed, and from the pack it was funded from if it was funded from one. The hold was released, no article exists to open, and nothing retries automatically.
- Saved article confirmed: the article saved for the request was confirmed and counted. Saved does not mean live.
Reviewed requests stay listed as a record. Work that cannot be shown to fit one of these outcomes stays unresolved and keeps its capacity held.
Asking for a review
The panel shows how long a request has waited, and highlights requests that have waited more than an hour. Most uncertain requests have no button or endpoint for resolving them, and nothing is cleared automatically. The narrow saved-work action described above appears only when SEOGrove can prove it is safe; it does not apply to unknown provider outcomes. To resolve any other request, the account owner emails info@seogrove.io from the account's email address and names the site. An authorized SEOGrove operator then checks the stored article, or proof from the writing service that the work was not applied and not charged, or proof that it was charged without producing an article. The operator records who made the decision and a reference to the evidence. A missing article alone is never accepted as proof that nothing was charged. Manual reviews do not restart paid work. If you want another article, request it normally after the review.
Default recommendation
If SEOGrove controls the integration, use native publishing. If you are building a custom webhook receiver,
implement the documented native tool rendering path and keep iframe_fallback
as a compatibility escape hatch only.
The prepared agent preview uses the existing article pipeline with MiniMax M3 and no additional text prompt byte ceiling. Provider context limits still apply. The operator preview has no fixed $1.25 test ceiling; request budgets and actual costs are recorded. This preview remains invitation-only.