pSEO Engine
by quantumcx.net · remote · no sign-in to list tools · v1.0.0 · published by net.quantumcx
Programmatic SEO as callable tools: research, generate, audit and publish landing pages.
10 tools: 1 do something that can't be undone, 5 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone1Claude Code: ask: see these tools
- Changes things5Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http pseo-engine https://pseo.quantumcx.net/api/agent/mcp --header 'X-Agent-API-Key: <your-x-agent-api-key>'Findings
Matches of fixed checks, with the text they matched.
- Warnseo_project_list
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...count. Call this FIRST in any session — every other tool needs a projectId from here, and ids ca..."
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...hen seo_project_list comes back empty — every other tool needs a projectId and a new account has..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Can't be undone 1Claude Code: ask
seo_publishSYNCHRONOUS.No findings
Why it is in this group
- The name "seo_publish" says "publish": a word for a change that another call does not undo.
Description, as the server wrote it SYNCHRONOUS. Takes approved pages live. IMPORTANT: only rows in REVIEWED status are published — GENERATED drafts are deliberately skipped, because approval is a human gate in this product. The response reports how many were skipped and why; if publishedCount is 0 and skippedNeedsReview is high, the pages need approving in the dashboard first. Costs 15c per call.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Changes things 5Claude Code: ask
seo_audit_startASYNCHRONOUS.No findings
Why it is in this group
- The name "seo_audit_start" says "start": a word for a change.
Description, as the server wrote it ASYNCHRONOUS. Scans all generated pages for broken text, unfilled placeholders, truncated copy and missing images, recording findings per page. Returns a jobId; poll seo_job_status. This only REPORTS problems — it does not fix them. Costs 30c per call.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
seo_content_generateASYNCHRONOUS.No findings
Why it is in this group
- The name "seo_content_generate" says "generate": a word for a change.
Description, as the server wrote it ASYNCHRONOUS. Starts the content-generation queue over every PENDING row in the project. It also spends real AI budget per generated page. Requires the project to be configured (check readyToGenerate via seo_project_get first). Returns a jobId immediately; poll seo_job_status. Generated pages land in GENERATED status and are NOT live until approved and published. Costs 75c per call.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
seo_project_connect_aiStores the AI provider key this project's generation, audits and research run on — BYOK: the tokens bill YOUR provider account, not ours.No findings
Why it is in this group
- The description's first verb is "store": a word for a change.
Description, as the server wrote it Stores the AI provider key this project's generation, audits and research run on — BYOK: the tokens bill YOUR provider account, not ours. Recommended: a Google Gemini API key (aistudio.google.com/apikey); its free tier works with no card. Optionally stores a Perplexity API key to enable citation-bearing AI visibility checks. Keys are stored encrypted and can never be read back — only replaced or cleared. FREE — this call costs nothing.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
seo_project_createCreates a new programmatic-SEO project and returns its projectId.1 finding
Why it is in this group
- The name "seo_project_create" says "create": a word for a change.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...hen seo_project_list comes back empty — every other tool needs a projectId and a new account has..."
Description, as the server wrote it Creates a new programmatic-SEO project and returns its projectId. Call this when seo_project_list comes back empty — every other tool needs a projectId and a new account has none. The project is created EMPTY: it still needs a data source and a content spec before seo_content_generate will run, so call seo_project_get afterwards and read readinessNote. FREE — this call costs nothing.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
seo_research_startASYNCHRONOUS.No findings
Why it is in this group
- The name "seo_research_start" says "start": a word for a change.
Description, as the server wrote it ASYNCHRONOUS. Starts a keyword-research run that mines and qualifies keywords into PENDING rows. It spends real AI budget, so call it once and then poll seo_job_status until status is COMPLETED. Returns immediately with a jobId — the keywords do NOT exist yet when this returns. Fails if a research run is already in progress. HUMAN trial accounts get one research run free; a second run returns code card_required — only a human on the account can start a plan, so stop and report instead of retrying. Costs 750c per call.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 4Claude Code: allow
seo_job_statusReturns the most recent background job for a project: type, status (QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED), progress counters and the last log line.No findings
Why it is in this group
- The name "seo_job_status" says "status": a word for reading.
Description, as the server wrote it Returns the most recent background job for a project: type, status (QUEUED/RUNNING/COMPLETED/FAILED/CANCELLED), progress counters and the last log line. Poll this every few seconds after any tool that starts a job. Do NOT re-call the start tool while status is RUNNING; it will be refused. FREE — this call costs nothing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
seo_project_getReturns one project's settings and whether it is configured enough to generate content (needs both a field mapping and a content spec).No findings
Why it is in this group
- The name "seo_project_get" says "get": a word for reading.
Description, as the server wrote it Returns one project's settings and whether it is configured enough to generate content (needs both a field mapping and a content spec). Use this before seo_content_generate to avoid starting a run that will immediately fail. FREE — this call costs nothing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
seo_project_listLists every programmatic-SEO project this API key can act on, with id, name, slug, custom domain and page count.1 finding
Why it is in this group
- The name "seo_project_list" says "list": a word for reading.
Findings
- Warn
The description contains "every other tool", wording about other tools or servers.
What this check looks forMatched text
description: "...count. Call this FIRST in any session — every other tool needs a projectId from here, and ids ca..."
Description, as the server wrote it Lists every programmatic-SEO project this API key can act on, with id, name, slug, custom domain and page count. Call this FIRST in any session — every other tool needs a projectId from here, and ids cannot be guessed or carried over from another account. FREE — this call costs nothing.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
seo_rows_listReturns a page of rows (individual generated pages) with slug, target keyword and status.No findings
Why it is in this group
- The name "seo_rows_list" says "list": a word for reading.
Description, as the server wrote it Returns a page of rows (individual generated pages) with slug, target keyword and status. Statuses are PENDING (no content yet), GENERATING, GENERATED (draft), REVIEWED (approved), PUBLISHED (live), FAILED, FLAGGED_DUPLICATE. Content bodies are NOT included — this is a listing, not an export. Use sort:'risk' to get the review queue ordered by risk score (duplicates and pages with QA findings first) so a human reviews the riskiest pages before bulk-approving the safe ones. Costs 3c per call.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http pseo-engine https://pseo.quantumcx.net/api/agent/mcp --header 'X-Agent-API-Key: <your-x-agent-api-key>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__pseo-engine__seo_project_list",
"mcp__pseo-engine__seo_project_get",
"mcp__pseo-engine__seo_rows_list",
"mcp__pseo-engine__seo_job_status"
],
"ask": [
"mcp__pseo-engine__seo_project_create",
"mcp__pseo-engine__seo_project_connect_ai",
"mcp__pseo-engine__seo_research_start",
"mcp__pseo-engine__seo_content_generate",
"mcp__pseo-engine__seo_audit_start",
"mcp__pseo-engine__seo_publish"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as pseo-engine. Review it before you use it.