Skip to Content

CompetLab MCP Tools Reference

How to read this reference

A few things hold across every tool:

  • Authentication isn’t a parameter. Your API key travels on the request (a CL-API-Key header, or ?api_key= on the URL) — see Connect. A tool sees exactly what your key can see over the REST API.
  • Most tools are project-scoped. They need a projectId, which you get from list_projects. IDs are 24-character hex strings.
  • Read vs. state-changing. 30 of the 33 tools only read. The three exceptions — start_tech_stack_scan, start_trust_signals_scan, and start_agent_adoption_scanstart a live scan and return a scanId you poll.
  • Rate limits. The free-tool routes are limited per API key: most at 1,000 requests per minute, with fetch_url held tighter at 60 per minute.
  • Errors. A missing or malformed key is rejected by the server with an HTTP 401 (api_key_missing / api_key_invalid) before any tool runs. Once a call reaches a tool, failures come back as an MCP tool error (isError: true) with a machine-readable code — for example scan_not_found or api_unreachable — rather than throwing.

Shared parameters

ParameterTypeNotes
projectIdstringA project’s 24-character hex ID, from list_projects. Required by every project-scoped tool.
pageinteger1-indexed page number. Default 1.
limitintegerItems per page. Default 20, max 100. Check pagination.hasMore to page.

The tools at a glance

ToolAreaRead-onlyWhat it does
list_projectsProjectsList accessible projects and their status.
get_projectProjectsOne project’s per-dimension freshness and prompts.
list_competitorsCompetitorsCompetitors in a project (incl. your own domain).
get_competitorCompetitorsOne competitor’s detail and monitored pages.
get_ai_visibility_dashboardAI VisibilityLatest AI Visibility Score and per-engine breakdown.
get_ai_visibility_historyAI VisibilityPaginated AI Visibility check history.
get_ai_visibility_check_detailAI VisibilityFull detail for one AI Visibility check.
get_ai_visibility_trendAI VisibilityAI Visibility trend over time.
get_positioning_dashboardPositioningLatest homepage-messaging analysis.
get_positioning_historyPositioningPaginated Positioning run history.
get_positioning_run_detailPositioningFull data for one Positioning run.
get_pricing_dashboardPricingLatest structured pricing and gap analysis.
get_pricing_historyPricingPaginated Pricing run history.
get_pricing_run_detailPricingFull data for one Pricing run.
get_content_dashboardContentLatest content categorization and gap analysis.
get_content_historyContentPaginated Content run history.
get_content_run_detailContentFull data for one Content run.
get_content_changelogContentDetected content changes per competitor over time.
get_tech_trust_dashboardTech & TrustLatest security, trust, and tech-stack profile.
get_tech_trust_historyTech & TrustPaginated Tech & Trust run history.
get_tech_trust_run_detailTech & TrustFull data for one Tech & Trust run.
list_alertsAlertsCompetitive alerts across dimensions.
list_schedulesSchedulesMonitoring schedules for the five dimensions.
get_briefingStrategic BriefingThe synthesized Strategic Briefing.
check_sitemapFree ToolsLive sitemap analysis for any domain.
check_ai_crawlersFree ToolsLive AI-crawler access check for any domain.
fetch_urlFree ToolsFetch and clean any public URL.
start_tech_stack_scanFree ToolsStart an async tech-stack scan.
get_tech_stack_scanFree ToolsPoll a tech-stack scan.
start_trust_signals_scanFree ToolsStart an async trust-signals scan.
get_trust_signals_scanFree ToolsPoll a trust-signals scan.
start_agent_adoption_scanFree ToolsStart an async Agent Adoption Check.
get_agent_adoption_scanFree ToolsPoll an Agent Adoption Check.

Projects

list_projects

Lists the projects your key can access, with status, competitor count, and last-monitored time. This is the starting point — it’s how you discover the projectId values the other tools need. It takes no parameters.

{ "name": "list_projects", "arguments": {} }

Returns the accessible projects, each with status, competitor count, and last-monitored timestamp.

get_project

Returns one project’s details, including per-dimension monitoring freshness (Tech & Trust, Content, Positioning, Pricing, AI Visibility), the AI monitoring prompts, and overall status. Use it to see when each dimension was last updated.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

Competitors

list_competitors

Lists every competitor monitored for a project, including your own domain (marked isOwn: true for self-comparison). Returns domain, name, and status for each.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_competitor

Returns one competitor’s detail, including the pages CompetLab monitors (homepage and pricing-page URLs).

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
competitorIdstringYesCompetitor ID, from list_competitors.

AI Visibility

The AI Visibility tools use a checkId rather than a runId: each check is one query cycle of 3 prompts across 3 AI engines (9 queries).

get_ai_visibility_dashboard

Returns the latest AI Visibility Score (a 0–100 composite), Mention Rate (the fraction of queries where a brand is mentioned), per-engine breakdowns for ChatGPT (OpenAI), Claude, and Gemini, and how your competitors compare.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_ai_visibility_history

Paginated history of AI Visibility checks.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.

get_ai_visibility_check_detail

Full detail for one AI Visibility check — per-competitor comparison, mention rates, AI Visibility Scores, and per-engine results.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
checkIdstringYesCheck ID, from get_ai_visibility_history.

get_ai_visibility_trend

AI Visibility trend over time (up to 200 data points). Without a provider filter it returns the aggregate Mention Rate plus the AI Visibility Score. With a provider filter it returns that engine’s Mention Rate only — the AI Visibility Score is a single cross-engine composite, so it comes back null when a provider is set.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
dateFromstringNoStart date, ISO-8601 (e.g. 2026-01-01).
dateTostringNoEnd date, ISO-8601.
providerstringNoOne of openai, claude, gemini. Omit for the aggregate view.
{ "name": "get_ai_visibility_trend", "arguments": { "projectId": "65a1b2c3d4e5f6a7b8c9d0e1", "dateFrom": "2026-01-01", "provider": "claude" } }

Filtering by claude returns Claude’s Mention Rate over time; the AI score fields are null under a provider filter.

Positioning

get_positioning_dashboard

Returns the latest homepage-messaging analysis for every competitor: page title, headline, tagline, value proposition, primary and secondary CTAs, key offerings, target audience, main differentiator, pricing mentions, and free-trial info.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_positioning_history

Paginated history of Positioning monitoring runs.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.

get_positioning_run_detail

Full competitor-by-competitor data for one historical Positioning run.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
runIdstringYesRun ID, from get_positioning_history.

Pricing

get_pricing_dashboard

Returns the latest structured pricing for every competitor — plans (each with a name, a price such as $49/month, and a summary; up to five per competitor) — plus market pricing statistics and a pricing gap analysis.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_pricing_history

Paginated history of Pricing monitoring runs.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.

get_pricing_run_detail

Full competitor-by-competitor data for one historical Pricing run.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
runIdstringYesRun ID, from get_pricing_history.

Content

get_content_dashboard

Returns the latest Content Intelligence for every competitor: sitemap URL counts, strategic URL identification, content categorization across 11 categories, sitemap structure, and a content gap analysis.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_content_history

Paginated history of Content monitoring runs.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.

get_content_run_detail

Full competitor-by-competitor data for one historical Content run.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
runIdstringYesRun ID, from get_content_history.

get_content_changelog

Detected content changes per competitor sitemap over time — URLs added and removed, with per-category counts and up to three sample URLs per category by default. Filter by competitor and/or category to scope it. Set allUrlsPerCategory: true for the full URL list per category; high-activity competitors can produce large responses, so combine it with filters and watch the truncated flag in the response.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.
competitorIdstringNoFilter by competitor ID, from list_competitors.
categorystringNoOne of blog, docs, tools, landing, legal, caseStudies, comparison, integrations, changelog, webinars, other.
allUrlsPerCategorybooleanNoDefault false (up to 3 sample URLs per category). Set true for full URL lists.

Tech & Trust

get_tech_trust_dashboard

Returns the latest Tech & Trust profile for every competitor: security headers (an A–F grade, plus HSTS, CSP, X-Frame-Options, and X-Content-Type-Options), trust signals (34 signals across five categories), the detected technology stack, robots.txt AI-bot blocking status, and DNS infrastructure.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

get_tech_trust_history

Paginated history of Tech & Trust runs, with completion timestamps.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.

get_tech_trust_run_detail

Full competitor-by-competitor data for one historical Tech & Trust run.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
runIdstringYesRun ID, from get_tech_trust_history.

Alerts

list_alerts

Returns paginated competitive alerts — detected changes across all monitored dimensions, with change diffs and action hints. Filter by dimension, severity, and/or competitor.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
pageintegerNoPage number. Default 1.
limitintegerNoItems per page. Default 20, max 100.
dimensionstringNoOne of tech-trust, content, positioning, pricing, ai-visibility.
severitystringNoOne of critical, high, medium, info.
competitorIdstringNoFilter by competitor ID, from list_competitors.
{ "name": "list_alerts", "arguments": { "projectId": "65a1b2c3d4e5f6a7b8c9d0e1", "dimension": "pricing", "severity": "critical" } }

Schedules

list_schedules

Returns the monitoring schedules for all five monitored dimensions: enabled/disabled status, interval in days, and the next- and last-run timestamps for each.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.

Strategic Briefing

get_briefing

Returns the project’s Strategic Briefing — the synthesized, prioritized read across all 13 dimensions: what changed, what it means, and what to do about it. This is the analyzed, as-of read, not raw monitoring; for live per-dimension data use the get_<dimension>_dashboard tools. It’s generated automatically per project and refreshed roughly monthly.

By default it returns the executive hub — a cheap digest (headline, top moves, and a per-dimension verdict that names the deeper section to open next) that answers most questions in a single call. Request extra sections only when a question needs them.

ParameterTypeRequiredDescription
projectIdstringYesProject ID, from list_projects.
sectionsstring[]NoWhich sections to return. Default ["hub"]. See the values below.
includeChartsbooleanNoDefault false. Set true to include full chart series (larger payload).

Valid sections values (pass any combination):

hub actions competitors all deep-ai-visibility deep-positioning deep-pricing deep-content deep-tech-trust deep-agent-readiness deep-ai-ecosystem deep-customer-voice deep-funding-capital deep-hiring-gtm deep-landscape deep-product-launches deep-reliability-status

There’s one deep- section per dimension — the five monitored plus the eight researched dimensions researched for the briefing (13 in all). (deep-agent-readiness is a frozen API identifier; the dimension is Agent Adoption.) The hub’s verdicts tell you which deep- section to open, so you rarely need to guess. all returns the entire briefing and is large — use it for export or a full read only.

{ "name": "get_briefing", "arguments": { "projectId": "65a1b2c3d4e5f6a7b8c9d0e1" } }
{ "name": "get_briefing", "arguments": { "projectId": "65a1b2c3d4e5f6a7b8c9d0e1", "sections": ["actions", "deep-pricing"] } }

Free Tools

The free tools run live against any public domain — they don’t need a project. Three of them are async: a start_* call kicks off a scan and returns a scanId, and the matching get_* call polls for the result.

check_sitemap

Live sitemap analysis for any domain — discovers URLs, categorizes them by section, and flags content gaps and depth.

ParameterTypeRequiredDescription
domainstringYesDomain to scan, e.g. example.com.
sitemapUrlstringNoFull URL to a specific sitemap (with http:// or https://). Skips discovery.

check_ai_crawlers

Live check of AI-crawler access via robots.txt and meta tags — covering GPTBot, ClaudeBot, Google-Extended, PerplexityBot, and others — with a per-crawler allow/block verdict.

ParameterTypeRequiredDescription
domainstringYesDomain to scan, e.g. example.com.
industrystringNoIndustry context for benchmarking. One of news-media, arts-entertainment, law-government, finance-healthcare, saas-tech, ecommerce, other.
{ "name": "check_ai_crawlers", "arguments": { "domain": "example.com" } }

fetch_url

Fetches any public URL with automatic JS-rendering and common bot-protection handling, and returns the body, headers, and clean-up stats. cleanHtml strips HTML noise while keeping the text — a real token saving when an agent is about to read the page.

ParameterTypeRequiredDescription
urlstringYesTarget URL. Must be http(s) and resolve to a public host.
bodyNeededbooleanNoInclude body and contentType in the response.
headersNeededbooleanNoInclude headers and headersAvailable. Some sites block header retrieval — then headersAvailable is false.
cleanHtmlbooleanNoFor HTML responses, strip scripts/styles/comments and keep text. Requires bodyNeeded.
maxTimeoutMsintegerNoTimeout budget in ms. Range 1000120000.
bodyMaxBytesintegerNoResponse body cap in bytes. Range 1024104857600 (1 KiB–100 MiB).

At least one of bodyNeeded or headersNeeded must be true. This tool has the tighter rate limit of the free tools — 60 requests per minute per key.

{ "name": "fetch_url", "arguments": { "url": "https://example.com", "bodyNeeded": true, "cleanHtml": true } }

start_tech_stack_scan · get_tech_stack_scan

starts a scan

start_tech_stack_scan begins an async tech-stack detection on a domain — 117 detection rules spanning the tech stack (hosting, frameworks, CMS, payments), the growth stack (analytics, marketing, CRM, advertising), and the engagement stack (support, forms, video, monitoring). It returns a scanId immediately; scans typically finish in seconds, up to ~90 seconds for heavy-render sites. get_tech_stack_scan returns the current status while running and the detected technologies (with confidence scores) once complete — poll every 2–5 seconds.

ToolParameterTypeRequiredDescription
start_tech_stack_scandomainstringYesDomain to scan, e.g. example.com.
get_tech_stack_scanscanIdstringYesScan ID, from start_tech_stack_scan.
{ "name": "start_tech_stack_scan", "arguments": { "domain": "example.com" } }
{ "name": "get_tech_stack_scan", "arguments": { "scanId": "65a1b2c3d4e5f6a7b8c9d0e1" } }

start_trust_signals_scan · get_trust_signals_scan

starts a scan

start_trust_signals_scan begins an async trust-signals analysis on a domain — 34 signals across five categories: enterprise readiness, third-party validation, social proof, brand authority, and risk reversal. It returns a scanId; get_trust_signals_scan returns the per-signal verdicts and an overall tier verdict once complete. Poll every 2–5 seconds.

ToolParameterTypeRequiredDescription
start_trust_signals_scandomainstringYesDomain to scan, e.g. example.com.
get_trust_signals_scanscanIdstringYesScan ID, from start_trust_signals_scan.

start_agent_adoption_scan · get_agent_adoption_scan

starts a scan

start_agent_adoption_scan begins an async Agent Adoption Check on a domain — 25 checks across discoverability, access control, content readability, and agent endpoints, following the open Agent-Adoption Specification. It returns a scanId; get_agent_adoption_scan returns the current status while running and the complete results once finished. Poll every 2–5 seconds.

ToolParameterTypeRequiredDescription
start_agent_adoption_scandomainstringYesDomain to scan, e.g. example.com.
get_agent_adoption_scanscanIdstringYesScan ID, from start_agent_adoption_scan.

Next steps

Last updated on