Two transports, one surface
MCP server — point an MCP-capable client (Claude Desktop, Cursor, an OpenAI-compatible agent runtime, your own orchestrator) at the server URL and it discovers the tool list, schemas, and descriptions automatically.
{
"mcpServers": {
"agenticseo": {
"url": "https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/mcp",
"headers": { "Authorization": "Bearer $AGENTICSEO_TOKEN" }
}
}
}REST API — the same functions as ordinary endpoints for backends and scripts that do not speak MCP.
MCP https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/mcp
REST https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/apiFunction catalog
Each function below is one MCP tool and one REST endpoint. Parameter schemas, response shapes, examples, and per-call credit metering are documented in the full integrator reference.
1. Site discovery & analysis
Enumerate a site, enqueue an analysis over a chosen subset, poll the job, and read the finished report. This is the core "one-time audit" flow that produces every AgenticSEO output (Layers 1–6).
discover_sitePOST /v1/discoveryscope: readEnumerate every reachable page on a site before spending an analyze.
analyze_sitePOST /v1/reportsscope: analyzeEnqueue an AgenticSEO analysis over a discovered subset.
get_job_statusGET /v1/jobs/{id}scope: readPoll job status; response carries report_id when done.
get_reportGET /v1/reports/{id}scope: readFetch a full report (metadata + per-page outputs across all 6 layers, plus Annex A when enabled).
list_reportsGET /v1/reportsscope: readList recent reports visible to this token.
get_llms_txtGET /v1/reports/{id}/llms-txtscope: readReturn the site-wide llms.txt for a completed report.
2. AI Visibility (prompts, citations, competitors)
Measure whether real assistants (ChatGPT, Gemini, Perplexity, Claude) cite your customer for the prompts their buyers actually type. Cold-start from a URL, or read rolled-up scores + trends once monitoring is on.
analyze_ai_visibilityPOST /v1/visibility/analyzescope: analyzeCold-start: URL → prompt set → per-prompt rank + share-of-voice in one call.
get_visibility_scoresGET /v1/visibilityscope: readLatest AI Visibility rollup + diagnostics block.
enable_visibility_monitoringPOST /v1/visibility/monitorscope: analyzeTurn on scheduled recomputes for a company.
get_visibility_trendGET /v1/visibility/trendscope: readTime-series scores + deltas + new/lost competitors.
list_promptsGET /v1/promptsscope: readTracking prompts + latest run per prompt.
get_prompt_historyGET /v1/prompts/{id}/historyscope: readPer-prompt run history for charting change over time.
run_prompts_nowPOST /v1/visibility/runscope: analyzeHeadless re-score: fan out every enabled tracked prompt and compute a fresh visibility_scores row.
get_run_statusGET /v1/visibility/statusPoll latest score, enabled prompts, complete runs (30d), and in-flight runs.
get_competitor_breakdownGET /v1/benchmarks/breakdownscope: readPer-brand rollup: cited_count, voice_share, avg_position, is_user_brand.
suggest_benchmark_promptsPOST /v1/benchmarks/suggest-promptsscope: analyzeAI-generated new tracked prompts targeting competitor-dominated territory.
3. AI crawler access
Standalone Layer 3 audit — cheap, no prior report or discovery needed.
get_ai_crawler_accessGET /v1/crawler-access?url=<site-url>scope: read/robots.txt allow/deny for every tracked AI crawler + copy-paste fix snippet.
4. FAQ drafting & publishing
Convert every tracked content gap (a prompt no page on the site answers) into copy-paste FAQ Q&A pairs, then optionally forward those cached drafts to a connected downstream target (Quid today; webhook / WordPress / HubSpot adapters slot in server-side).
draft_faqs_for_gapsPOST /v1/faqs/draftscope: faq:draftDraft copy-paste FAQ Q&A pairs for tracked-prompt content gaps.
publish_faq_to_targetPOST /v1/faqs/publishscope: faq:publishForward cached FAQ drafts to a connected downstream target.
resolve_gapsPOST /v1/gaps/resolvescope: faq:publishRecord that content gaps are handled on your side (completes workflow step 4).
list_publish_targetsGET /v1/faqs/targetsList downstream targets available to publish_faq_to_target.
5. Competitor set management
Inspect and curate the competitor set that powers Citation Presence and share-of-voice comparisons. analyze_ai_visibility seeds an initial auto-discovered list; these tools let a partner UI (Quid, etc.) show it, add missing competitors, and prune ones the user rejects — without touching AgenticSEO's own UI.
list_competitorsGET /v1/competitorsList tracked competitors (source = auto | manual).
discover_competitorsPOST /v1/competitors/discoverscope: competitors:writeRe-run auto-discovery. Preview by default; persist=true writes new suggestions.
add_competitorsPOST /v1/competitorsscope: competitors:writeAdd manual competitors (source = "manual", never auto-swept).
remove_competitorsPOST /v1/competitors/removescope: competitors:writeSoft-delete competitors by id or name.
6. Gap pages (persisted briefs → live URLs)
The Prompt Audit report drafts brand-new pages for tracked prompts that no existing page on the site answers. Those briefs are now persisted in `public.gap_pages` and can be flipped to "published" — at which point they render at https://agenticseo.live/g/<slug>, appear in the sitemap on the next build, and become readable by every AI crawler. This group is the partner-facing surface for listing, reading, publishing, and unpublishing them without touching the AgenticSEO UI.
list_gap_pagesGET /v1/gap-pagesscope: gap_pages:readList drafted + published gap pages for a company.
get_gap_pageGET /v1/gap-pages/{id_or_slug}scope: gap_pages:readFetch one gap page (all 6-layer fields + outline + rationale).
publish_gap_pagesPOST /v1/gap-pages/publishscope: gap_pages:publishFlip drafted gap pages to published (live at /g/<slug>).
unpublish_gap_pagePOST /v1/gap-pages/unpublishscope: gap_pages:publishReturn a published gap page to draft status.
7. Google Search performance (Search Console)
Real, measured Google Search data for a company — clicks, impressions, CTR, impression-weighted average position, a daily trend, and the top 25 queries and pages ranked by impressions. Sourced live from Google Search Console via the connected Google account for that client, so these are actuals, not a vendor estimate. This is the classical-search counterpart to get_visibility_scores (Share of AI Voice): pair them to show a customer both halves of discoverability in one view. Included on every tier and metered at zero credits, because Search Console is a free first-party connection.
get_gsc_performanceGET /v1/gsc/performanceClicks, impressions, CTR, average position + top queries/pages.
list_gsc_propertiesGET /v1/gsc/propertiesVerified properties covering this company’s site + the bound one.
select_gsc_propertyPOST /v1/gsc/propertyscope: analyzeBind one property to the company for all later reads.
8. Commerce — product / SKU visibility
Classic AI visibility answers "do the engines know this brand?". Commerce answers the harder retail question: for each individual product, does ChatGPT / Gemini / Perplexity mention it, does it actually recommend it, where does it place it in a list, and which competitor products get named instead. The flow is: sync a catalog once (Shopify, WooCommerce, a Google Merchant / RSS feed, CSV, or a raw products[] payload), then scan on a schedule and read the rollup. Scans deliberately score a ROTATING, priority-weighted sample of the catalog rather than every SKU every cycle — thousands of engine calls per cycle would be unaffordable and the answers barely move day to day. High-priority SKUs are revisited often, the long tail is covered less frequently, so seeing fewer data points for a tail SKU is normal and not an error to retry around. Driving commerce headlessly over MCP / REST requires the Enterprise plan or an OEM agreement with commerce access switched on (in-app SKU monitoring is available on Pro and Agency). Unentitled calls return 403 plan_required; an agreed monthly SKU-check ceiling returns 429 commerce_cap_reached.
sync_product_catalogPOST /v1/commerce/catalog/syncscope: analyzeImport or refresh a product catalog so its SKUs can be monitored.
list_productsGET /v1/commerce/productsscope: readList monitored SKUs, highest priority first, with their last scan result.
scan_product_visibilityPOST /v1/commerce/scanscope: analyzeScore this cycle’s rotating SKU sample across the answer engines.
get_product_visibilityGET /v1/commerce/visibilityscope: readCommerce rollup + the invisible-SKU work queue.
9. Health
Unauthenticated probes for uptime checks.
—GET /v1/healthReturns { status: "ok" }.
Quick start (REST)
Authentication is a bearer token on every request. The typical audit flow is discover → analyze → poll → read.
# 1. Enumerate the pages on a site
curl -X POST "https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/api/v1/discovery" \
-H "Authorization: Bearer $AGENTICSEO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
# 2. Queue an analysis over the pages you care about
curl -X POST "https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/api/v1/reports" \
-H "Authorization: Bearer $AGENTICSEO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","pages":["/","/pricing","/product"]}'
# 3. Poll the job, then read the finished report
curl "https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/api/v1/jobs/JOB_ID" -H "Authorization: Bearer $AGENTICSEO_TOKEN"
curl "https://hbzbbsodddymrhmreqkd.supabase.co/functions/v1/api/v1/reports/REPORT_ID" -H "Authorization: Bearer $AGENTICSEO_TOKEN"Scopes
Tokens are least-privilege: read-only by default, with write and spend capability granted per scope.
read— All GET endpoints (list_reports, get_report, get_visibility_scores, list_prompts, get_prompt_history, get_ai_crawler_access, list_publish_targets, get_llms_txt, get_gsc_performance, list_gsc_properties, list_products, get_product_visibility).analyze— Write / enqueue endpoints (analyze_site, analyze_ai_visibility, enable_visibility_monitoring, sync_product_catalog, scan_product_visibility).faq:draft— draft_faqs_for_gaps · POST /v1/faqs/draft.faq:publish— publish_faq_to_target · POST /v1/faqs/publish · resolve_gaps · POST /v1/gaps/resolve.competitors:write— add_competitors · remove_competitors · discover_competitors (persist=true). GET list_competitors and preview discover_competitors do NOT require this scope.gap_pages:read— list_gap_pages · get_gap_page (MCP) · GET /v1/gap-pages · GET /v1/gap-pages/{id_or_slug}.gap_pages:publish— publish_gap_pages · unpublish_gap_page (MCP) · POST /v1/gap-pages/publish · POST /v1/gap-pages/unpublish.commerce (account entitlement, not a token scope)— Headless product / SKU visibility: sync_product_catalog · scan_product_visibility · list_products · get_product_visibility, over both transports.
Getting a token
Tokens are issued by Traction Gap Partners; there is no self-serve key page. Email support@tractiongappartners.com with your company, the websites or brands the token should see, whether you need MCP, REST, or both, the scopes you need, and the technical owner of the integration. Tokens are scoped to your account and its clients, rate-limited per hour, and every call is attributed in the audit log. Headless commerce (product/SKU) functions require an Enterprise or OEM entitlement.
Programmatic access is available on Enterprise and OEM agreements. See pricing or write to info@tractiongappartners.com.
Full reference
The complete integrator reference — parameter schemas, response bodies, MCP system prompt, calling flows, error envelope, rate limits, credit metering, and a downloadable Word version — lives at /docs/api. It is behind sign-in because it covers token handling and account-specific detail; ask support for access alongside your token request.
Related
- AI agents for SEO — how autonomous agents run the audit-and-fix loop.
- Free llms.txt generator — no token required.
- Security — tenant isolation, secret handling, publishing safety.