Sign up
On this page

krawlup MCP documentation

Every krawlup MCP tool, what credential it needs, and what it costs. New here? The /mcp page gives the tour. This page is the reference: setup for OAuth and agent keys, the full tool catalog, the REST twin, and the limits that keep the endpoint fast for everyone.

Introduction

krawlup runs a Model Context Protocol server over streamable HTTP. It is stateless: no session id is required, and responses are plain JSON. Once connected, an agent reads your products' scores, the failing audits behind them, AI fix cards, first-party analytics and keyword ideas. With extra scopes it can also start full rescans, add products from a URL, and publish them to the public directory, while every payment stays in your browser.

EndpointPOST https://api.krawlup.com/mcp

Connect your agent

One endpoint, every client. Where a client supports both paths, the OAuth flow needs no key at all; an agent key works everywhere and is the only credential that can carry rescan. A browser-approved connection gets read + submit and never rescan; denying returns the agent to its redirect with error=access_denied. Connections and keys are both managed on the AI agent page.

Claude Code connects over streamable HTTP with one command; the browser handles the approval.

  1. 1Run this in your project root.
  2. 2When the agent first needs krawlup it opens your browser; approve while signed in.
  3. 3The connection sticks. Manage or remove it on the Dashboard → AI agent page.
Terminal
claude mcp add --transport http krawlup https://api.krawlup.com/mcp

Windsurf, Zed and VS Code accept the same mcpServers JSON shape as Cursor. Scopes, limits and every tool: krawlup.com/docs.

Agent skills

Instead of (or alongside) MCP, teach your agent krawlup directly. The official @krawlup/skills package installs two plain-markdown skills: krawlup-mcp (all 20 tools, scopes and rate limits) and krawlup-analytics-setup (installing the cookieless tag and wiring conversion goals). No code, just instructions your agent reads.

npm
npx @krawlup/skills

Skills land in ./skills by default. Point --dir at your agent's skills folder (for example --dir .claude/skills) and use --force to overwrite an older copy.

Authentication and scopes

CredentialHow it authenticatesBehavior
Anonymousno Authorization headerThe three public catalog tools only. Invalid credentials get a 401 with an OAuth challenge, never a downgrade.
Agent keyAuthorization: Bearer sk_ag_…Created on the AI agent page in your dashboard. Scopes read (always) plus optional rescan and submit; optional expiry date and product restriction; shown once at creation.
OAuth connectionAuthorization: Bearer sk_mc_…Granted through OAuth 2.1 with PKCE after one browser approval. Scopes read + submit (never rescan). One-hour access tokens, 90-day rotating refresh tokens.

Scopes

read

Every reading tool: products, insights, fix cards, scan history, analytics, keyword ideas. Unlimited calls; costs nothing.

submit

add_product (5 adds/hour), set_product_public and set_product_private (10 flips/hour). Publishing is paid-only; the agent never spends money.

rescan

trigger_rescan only. Agent keys only: never granted to OAuth connections. Spends the same plan allowances as a dashboard rescan.

Agents see only their own products. Revoking a key or disconnecting a connection stops the agent on its very next request.

Tool reference

20 tools. Every call is throttled to 60 requests per minute per credential unless a tighter limit is shown. Limits shown in orange differ from that blanket.

Public catalog

No credential. Any agent can explore the public directory before its founder connects anything.

ToolCredentialDescription
search_productspublicSearch the public catalog of directory products in plain language.
get_productpublicThe full public product page, by slug or key.
check_launch_readiness30/minpublicAudit a URL before adding: bans, blocked platforms, whether the product already exists (and who owns it), plus the optional category list. Run this before add_product.

Free site report

No credential — the /site-report tool, for any website. Two full scans per calendar month per agent (the credential, or the IP when anonymous — the same limit the website tool enforces, in a separate budget from browser visitors); reads are unlimited. Domains already listed as krawlup products are refused.

ToolCredentialDescription
get_site_reportpublicThe free public site report for any website (the /site-report tool): performance, AEO, CRO, SEO crawl, CrUX, OpenRank and the named checks. Cached read; poll after run_site_report until scanStage clears.
run_site_report6/minpublicStart the free public scan for any website and return immediately. Same 2-full-scans-per-month limit as the website tool, counted per agent (credential, or IP when anonymous).

Your products and insights

Any credential with the read scope (agent keys always carry read; OAuth grants it by default). Reads mirror the dashboard exactly: insights, scan history and the bottleneck analysis stay readable on any plan state (the same read-only view an expired subscription sees); fix cards additionally require the ai_fix_cards facility and keyword ideas the keyword_research facility. compare_products always lists products and scores; its visitor columns need website_analytics and its revenue columns analytics_conversion.

ToolCredentialDescription
list_productsany credentialYour products on krawlup with their latest scan scores — the source of product keys for every other tool.
get_my_products_statusreadYour products with their directory visibility.
compare_products10/minreadAll your products side by side, sorted by any column: unique visitors, views, revenue totals with refunds netted, average revenue per conversion, and scan scores — lifetime or over a window (today / 7d / 30d / 90d). Visitor columns need the website_analytics facility and revenue columns analytics_conversion (gated columns come back null with a note).
get_my_subscriptionreadThe founder's current subscription: plan, status (active / trial / 3-day grace / expired), abilities, limits (0 = unlimited), this period's usage meters, and what the founder can currently do. Call this first.
get_insightsreadFull latest report for one product: performance/AEO/authority scores, failing audits, the recommended First Edit, and unresolved AI fix cards (require the ai_fix_cards facility).
get_fix_cardsreadEvery stored AI fix card for one product — what/why/steps plus a paste-ready agent prompt per issue. Requires the ai_fix_cards plan facility.
get_bottleneckreadThe stored AI bottleneck analysis — the one edit that matters most, why now, expected impact, steps.
get_scan_historyreadScore-over-time series (last 100 scans): performance, AEO, OpenPageRank, with per-run source and timestamp.
get_keyword_ideasreadStored keyword research: intent-clustered keyword ideas with search volume/difficulty estimates and prioritized content actions. Requires the keyword_research plan facility.

First-party analytics

Requires an active subscription (or the 3-day renewal grace window). Conversion events additionally require the analytics_conversion facility and the stored AI insight the analytics_ai_insights facility — without them they are stripped from the response.

ToolCredentialDescription
get_analytics_snippetreadThe exact <script> tag that installs krawlup first-party analytics on the product's own website. Your agent can insert it into the site <head> itself.
get_website_analyticsreadFirst-party analytics for the product's own website: visitors, sessions, bounce, top pages/referrers/countries — conversion events and AI insights when the plan carries those facilities.

Directory management

submit scope. set_product_public additionally requires a paid plan; the 403 explains the trial/upgrade state. Adding always starts private.

ToolCredentialDescription
add_product5/hoursubmitAdd a product from just its URL: scrapes the site (name, tagline, description, icons) and adds it to the dashboard. Adding never publishes — the product stays private until set_product_public.
set_product_public10/hoursubmitPublish an added product to the public directory. Paid plans only (the 403 explains the trial/upgrade state).
set_product_private10/hoursubmitRemove a product from the public directory (always allowed).

Scanning

rescan scope, agent keys only: OAuth connections are never granted it. Spends the same plan allowances as the dashboard Rescan button.

ToolCredentialDescription
trigger_rescan10/minrescan · keys onlyStarts a fresh full analysis in the background and returns immediately; poll get_insights until scanPending is false. Spends the same plan allowances as a dashboard rescan.

REST API

The same agent key authenticates a small REST twin under /agent/v1, for scripts that do not speak MCP. Scope, budget and gating rules match the MCP tools 1:1.

MethodRoutePurpose
GET/api/agent/v1/subscriptionThe founder's plan: status, abilities, limits and this period's usage meters.
GET/api/agent/v1/productsYour products (public and private) with latest scores.
GET/api/agent/v1/products/overviewAll products side by side, sortable: visitors, views, revenue totals and averages, scores — lifetime or ?range=today|7d|30d|90d. Query params: range, sortBy, order, limit.
GET/api/agent/v1/products/{key}Full insights snapshot for one product + an agent-actionable summary (First Edit, fix cards, bottleneck).
GET/api/agent/v1/products/{key}/keywordsStored keyword research (intent clusters, volume/difficulty, content actions).
POST/api/agent/v1/products/{key}/rescanStart a full rescan (rescan scope, 10 requests/minute per key). Returns remaining allowances + poll instructions.
POST/api/agent/v1/productsAdd a product from a URL (submit scope). Same pipeline as the browser form; the product starts private.
POST/api/agent/v1/publishFlip a product's directory visibility (submit scope, paid-only publish, 10 requests/hour).
Terminal
curl -H "Authorization: Bearer sk_ag_YOUR_KEY" \
  https://api.krawlup.com/agent/v1/products

Install the analytics tag

krawlup's first-party analytics is 3,287 bytes parsed, 1,383 bytes gzipped and 100% cookieless: pageviews on load and on SPA route changes, custom conversion goals, checkout attribution, and it honors Do Not Track. Every product gets its own token on the Dashboard → products → Website tab, or your agent can fetch it with the get_analytics_snippet MCP tool.

Zero dependencies (HTML tag)

Prefer no package? Paste this in the <head> of your website or template:

HTML head
<script>window.krawlup=window.krawlup||function(){(window.krawlup.q=window.krawlup.q||[]).push(arguments)};</script>
<script defer src="https://krawlup.com/t.js" data-site="YOUR_ANALYTICS_TOKEN"></script>

Data appears in your Website tab within 60 seconds of the first visit. The script loads asynchronously without blocking DOM rendering or Core Web Vitals.

As a library (NPM)

For Next.js, Nuxt, React, Vue, SvelteKit, and Astro projects, install the official @krawlup/analytics-tag package:

npm
npm i @krawlup/analytics-tag
App entry
import { injectKrawlup, trackEvent } from '@krawlup/analytics-tag'

// once, client-side, in your app entry
injectKrawlup({ site: 'YOUR_ANALYTICS_TOKEN' })

// custom conversion goals anywhere; safe to call before the tag loads
trackEvent('purchase', { value: 49.0, currency: 'USD' })

WordPress & WooCommerce

Using WordPress or WooCommerce? The WordPress & WooCommerce plugin is coming soon. Until then, connect via the HTML script tag:

Krawlup Analytics

Coming Soon

WordPress & WooCommerce plugin with automated WooCommerce attribution.

Notice: WordPress plugin coming soon

The Krawlup plugin for WordPress & WooCommerce isn't released yet. In the meantime, install tracking via the HTML Script Tag above.

  1. Install & Activate: In your WordPress dashboard, navigate to Plugins → Add New Plugin → Upload Plugin, choose the downloaded krawlup-analytics.zip, then click Install Now and Activate.
  2. Paste Site Token: Go to Settings → Krawlup Analytics, paste your product's Site Token (from your Krawlup dashboard), and click Save Changes.
  3. Automated WooCommerce Attribution: When WooCommerce is active, completed checkout totals and currencies are automatically tracked via the woocommerce_thankyou hook. Idempotency guarantees page refreshes by buyers never double-count revenue.
  4. Internal Traffic Filter: Automatically excludes logged-in WordPress administrators and editors from firing tracking hits to keep your visitor metrics pristine.

Shopify (Custom Web Pixel)

Running a Shopify store? Connect via Shopify's native Customer Events custom pixel with zero app installation and zero code modifications:

Shopify Customer Events Web Pixel

Native, cookieless visitor and revenue attribution inside Shopify's Customer Events sandbox.

Zero Store Bloat
  1. Open Customer Events: In your Shopify Admin, navigate to Settings → Customer Events.
  2. Add Custom Pixel: Click Add custom pixel, enter pixel name Krawlup Analytics, and click Add pixel.
  3. Paste Pixel Code: Replace any placeholder code with the snippet below (inserting your product's Site Token from your Krawlup dashboard).
  4. Save & Connect: Click Save, and then click Connect in the upper right.
Shopify Custom Pixel
// Shopify Admin -> Settings -> Customer Events -> Add custom pixel
const SITE_TOKEN = "YOUR_ANALYTICS_TOKEN";
const ENDPOINT = "https://api.krawlup.com/t/hit";

function send(event, t, n, d) {
  const doc = event?.context?.document || init?.context?.document;
  const p = {
    k: SITE_TOKEN,
    t: t,
    h: doc?.location?.host || "",
    p: doc?.location?.pathname || "/",
    r: doc?.referrer || "",
    n: n,
    d: d
  };
  fetch(ENDPOINT, {
    method: "POST",
    headers: { "Content-Type": "text/plain" },
    body: JSON.stringify(p),
    keepalive: true
  }).catch(() => {});
}

analytics.subscribe("page_viewed", (event) => send(event, "pageview"));
analytics.subscribe("checkout_completed", (event) => {
  const c = event.data?.checkout;
  if (!c) return;
  send(event, "event", "purchase", {
    value: parseFloat(c.totalPrice?.amount || 0),
    currency: c.totalPrice?.currencyCode || "USD",
    order_id: c.order?.id || c.token || ""
  });
});
Avoid Duplicate Tracking: If you previously added the manual HTML <script> tag to your theme.liquid, remove it after enabling the Web Pixel to prevent duplicate visitor counts.

Limits and budgets

  • Free site report reads are unlimited; scans are not: get_site_report is a cached read with no cost, while run_site_report spends one of the same two full scans per calendar month the /site-report website gives you — counted per agent credential (or per IP when anonymous), in a budget separate from browser visitors.
  • 60 requests/minute per credential across all tools; tighter per-tool limits are shown in the tool tables.
  • Reads are free and unlimited within the rate limit — no read consumes plan allowances. Some reads are facility-gated exactly like the dashboard: fix cards need the ai_fix_cards facility and keyword ideas the keyword_research facility; conversion events and the stored AI insight arrive only when the plan carries theirs.
  • Rescans spend plan allowances: one full analysis plus one page-speed check per billing period, exactly like the dashboard button.
  • Publishing is paid-only: set_product_public works on an active paid subscription; trial users must upgrade first. The agent never pays for anything.
  • Analytics needs a subscription: get_analytics_snippet and get_website_analytics answer only while the subscription is active or inside the 3-day renewal grace window.