Docs / MCP server

CrawlRaven MCP server

Paid plans

A remote Model Context Protocol server that exposes one CrawlRaven account to an AI client as eight typed tools, over OAuth.

Server URL
https://mcp.crawlraven.com/mcp

Overview

Add the server URL to a client that supports remote MCP over OAuth, approve the connection in the browser, and the CrawlRaven tools appear in that client. There is nothing to install and no key to paste.

Tools return structured data with a short text summary attached, so a model receives the rows themselves rather than a rendered dashboard. Typical calls: which queries lost clicks over 90 days, what to work on this week from the opportunity list, whether a Google update lines up with a drop in the daily rows.

PropertyValue
Endpoint
TransportRemote HTTP (Streamable HTTP)
AuthenticationOAuth authorization code with S256 PKCE
Tools8
Scopes5
Side effectsNone. Every tool fetches data.

Availability

Included with every paid plan

MCP is available to every paid CrawlRaven account. Free accounts cannot approve a connection.

An account is eligible when it holds a positive paid-feature allowance, which comes from a lifetime deal, an active subscription, or a support override. Both ends of the consent flow check it: you need at least one paid account to reach the consent screen, and the account you pick there must be a paid one.

The check runs again on every tool call, so entitlement is current rather than frozen at the moment you connected. If a plan lapses, existing grants stay visible and revocable but stop returning data until the account is paid again.

See pricing for the plans, or the changelog for what shipped when.

Quickstart

  1. 01

    Add the server URL

    In the MCP or connector settings of an OAuth-capable client, add as the server.

  2. 02

    Sign in to CrawlRaven

    The client opens a browser prompt. Sign in with the account that owns the websites you want the agent to see.

  3. 03

    Review the consent screen

    Check the client name, choose which paid CrawlRaven account to expose, and read the scopes requested. One grant covers one user and one account.

  4. 04

    Approve and return to the client

    Let the browser tab finish its redirect. Closing it early leaves the token exchange incomplete, which is the usual reason no tools appear.

  5. 05

    Call list_websites

    It returns the website_id every other tool needs.

Client setup

Claude.ai and Claude Desktop

Customize > Connectors > add a custom connector, then paste the server URL.

Server URL
https://mcp.crawlraven.com/mcp

Claude Code

Add the server, then authenticate from /mcp or with claude mcp login crawlraven.

Terminal
claude mcp add --transport http crawlraven https://mcp.crawlraven.com/mcp

ChatGPT

Enable developer mode, add a custom connector with the server URL, complete the OAuth prompt.

Server URL
https://mcp.crawlraven.com/mcp

Codex

Add the Streamable HTTP server URL, then sign in from the CLI.

Terminal
codex mcp login crawlraven

OpenClaw

Add the server with OAuth, then log in.

Terminal
openclaw mcp add crawlraven --url https://mcp.crawlraven.com/mcp \
  --transport streamable-http --auth oauth
openclaw mcp login crawlraven

Cursor

Add a remote Streamable HTTP MCP server with the CrawlRaven URL, choose OAuth when prompted.

Server URL
https://mcp.crawlraven.com/mcp

Authorization

CrawlRaven supports the standard client registration order and falls back down it: a pre-registered client ID, currently used only by MCP Inspector, then Client ID Metadata Documents, which clients such as ChatGPT prefer, then RFC 7591 Dynamic Client Registration.

ItemBehavior
FlowAuthorization code with S256 PKCE on all three registration paths
ConsentPer user and per account, requested again for a new account
Access tokenOne hour
Refresh tokenRotating, so ordinary renewal never interrupts the connection
ExpiryRefresh tokens, DCR registrations and grants all expire after 90 days
CallbacksHTTPS redirect URIs must match exactly. Native clients may use an HTTP loopback callback, where only the port may vary.

Do not paste secrets

The client performs OAuth discovery on its own. A CrawlRaven personal access token, a Google token or a browser cookie does not belong in a client configuration.

Tools

Eight tools ship in the current catalog. A client only sees the tools covered by the scopes it was granted, so a narrower grant produces a shorter list.

ToolScopeReturnsParameters
list_websiteswebsites:readWebsites in the authorized account, with IDs, Search Console properties, access state and available data dates. Call this first to get a website_id.None
get_website_overviewsearch_performance:readA compact Search Console overview for one website: the reporting period, plus current and previous clicks, impressions, CTR and average position.website_id, days
get_search_performancesearch_performance:readDaily Search Console rows for one website with the same current versus previous KPI comparison. Use it for trend analysis.website_id, days
list_queriessearch_performance:readTop Search Console queries with clicks, impressions, CTR and average position, within a bounded top-query corpus.website_id, days, search, limit, cursor
list_pagessearch_performance:readTop ranking pages with clicks, impressions, CTR and average position, within a bounded top-page corpus.website_id, days, search, limit, cursor
list_opportunitiesopportunities:readOpportunities ordered by pinned state and estimated impact, with lifecycle status, evidence and recommended actions.website_id, status, limit, cursor
list_target_keywordstargets:readThe target keyword workspace: planned URLs, intent groups, priority, status and mismatch evidence.website_id, status, search, limit, cursor
list_annotationsannotations:readThe website timeline: manual notes, Google updates, imports and opportunity lifecycle changes, paging backward through the window.website_id, days, limit, cursor

Parameters

NameTypeNotes
website_idstring, requiredThe website to query. Every tool except list_websites needs one.
daysnumber, default 28Reporting window. Search Console tools accept 7, 28, 90 or 365. list_annotations accepts 1 through 400.
searchstring, optionalCase-insensitive substring filter, up to 500 characters. Applies to query keys, page keys or target keywords.
statusenum, optionalOpportunities: active, in_progress, resolved, returned, ignored, snoozed, all. Omitted returns active and returned. Target keywords: targeted or ignored.
limitnumber, default 25Rows per page, capped at 100. list_annotations defaults to 100 and caps at 200.
cursorstring, optionalThe next_cursor from the previous page, passed back to get the next one. It stops working if the filters or the window change.

Example prompts

You never call a tool yourself. You ask in plain language and the client picks the tool, fills in the parameters, and pages through results if it needs to. These are prompts that reliably land on each tool, so they double as a map of what the connection is good for.

Name the site first

Everything except list_websites needs a website, so "how did example.com do last month" gets there in one step where "how did we do last month" costs a round trip.

list_websites

Anything that starts with which site. The agent needs a website_id before it can call anything else, so this usually runs on its own the first time.

  • Which websites do I have in CrawlRaven?
  • Which of my sites have Search Console connected, and how far back does the data go?
  • Use my example.com site for everything I ask next.

get_website_overview

The headline number. One call, one period, and the same period before it.

  • How did example.com do in search over the last 28 days?
  • Are clicks on example.com up or down against the previous period, and did position move with them?
  • Give me a two-sentence search summary for example.com over the last 90 days.

get_search_performance

Anything about shape over time. This returns a row per day, so the agent can find the week something changed.

  • Walk through daily clicks for example.com over the last 90 days and point out the sharpest drops.
  • Did traffic to example.com fall gradually or overnight?
  • Which week in the last year was the worst for impressions on example.com?

list_queries

Questions about what people searched. Filterable by text, so you can scope it to a topic.

  • What are the top queries for example.com over the last 28 days?
  • Which queries containing pricing get impressions but almost no clicks?
  • Compare the top queries for the last 28 days with the last 90 and tell me what is new.

list_pages

Questions about which URLs earn the traffic, and which are stuck just off the first page.

  • Which pages on example.com get the most clicks this month?
  • Find pages with real impressions sitting between position 8 and 20.
  • Which of my blog posts lost the most clicks against the previous period?

list_opportunities

The what should I do question. Opportunities already carry impact estimates, evidence and a recommended action, so the agent is reading a decision rather than inventing one.

  • What should I work on this week for example.com?
  • Show the highest-impact active opportunities and explain the evidence behind the top three.
  • Turn the top five opportunities into a checklist I can hand to a writer.

list_target_keywords

Questions about the plan rather than the past: what you decided to target and which URL was meant to rank.

  • List the target keywords for example.com with their planned URLs.
  • Which target keywords are still marked as targeted but have no page ranking yet?
  • Group my target keywords by intent and show which ones have a mismatch flagged.

list_annotations

Questions about why. The timeline carries your own notes plus Google updates and imports.

  • What happened on example.com over the last 90 days?
  • Was there a Google update near the drop in early June?
  • Show the timeline for the last year and line the notes up with the traffic changes.

Prompts that chain tools

The connection is more useful when one question needs several tools. The agent decides the order, so you can ask for the outcome rather than the steps.

Monthly client update

Overview for the headline, pages and queries for the movers, timeline for the explanation.

  • Write the monthly search update for example.com: how the period compared with the one before, the pages and queries that moved most, and anything on the timeline that explains it.

Decay triage

Pages first, then the queries behind them, then the timeline to separate a site problem from a Google one.

  • Find the pages on example.com that lost the most clicks over 90 days, show which queries they lost, and check whether a Google update lines up with the drop.

Plan against reality

The target keyword workspace checked against what actually ranks.

  • Take my target keywords for example.com and tell me which ones have no page ranking for them, then check whether the planned URL gets impressions for anything else.

Sprint planning

Opportunities ranked by impact, sized against the traffic the affected pages already earn.

  • Give me this quarter's opportunities for example.com ordered by impact, and for each one tell me what the affected page currently earns so I can judge whether it is worth it.

Swap example.com for your own domain before pasting. An agent that cannot match the site will call list_websites and ask you which one you meant.

Scopes

A grant is bound to one user and the one account picked during consent. Inside that account, five scopes control what the client sees.

ScopeGrants access to
websites:readWebsites in the selected account and their Search Console connection state.
search_performance:readClicks, impressions, CTR, average position, and the query and page tables behind them.
opportunities:readOpportunities with their status, evidence and recommended actions.
targets:readTarget keywords, their planned URLs, intent groups and priority.
annotations:readTimeline events, including your own notes and Google update markers.

What a connection cannot do

  • Edit or delete anything. The catalog has no write tools.
  • Reach billing, administration, exports or arbitrary API endpoints.
  • See any account other than the one selected during consent.
  • Fetch a URL, call a webhook, send email or touch files. Those tools do not exist here.
  • Follow a URL that appears inside a tool result, or let a value from one tool become the destination of another.

Search queries, page URLs and annotation text are customer data, so they come back as typed fields rather than as instructions a model should obey. Client-side controls such as Allow, Ask and Block are hints from tool annotations: convenience, not security. The server enforces its own policy even when a client is set to allow everything.

How much data comes back

A list tool answers with one page at a time, sized to fit a model's context rather than a spreadsheet. You do not set any of this yourself. The agent asks, the defaults below apply, and it fetches more pages if it needs them.

ToolRows by defaultMost it will return at onceTime window
list_queries, list_pages251007, 28, 90 or 365 days
list_opportunities, list_target_keywords25100Not time-bound
list_annotations1002001 to 400 days
list_websitesAll of themAll of themNot time-bound
get_website_overview, get_search_performanceOne result, not a listUp to 365 daily rows7, 28, 90 or 365 days

To go past the first page, the agent passes the next_cursor it just received back as cursor. Two things are worth knowing about that:

  • A cursor belongs to the exact search it came from. Change a filter or a window and the old cursor stops working, which is deliberate: it would otherwise page through a result set that no longer matches the question.
  • Every result says whether it was cut short, so an agent can tell "that is all of them" from "that is the first hundred" instead of guessing.

In practice this only surfaces when you ask something broad. Ask for the top queries and you get 25 useful rows straight away. Ask an agent to audit every query on the site and it will page through them, which takes longer and uses more of its context.

Errors

CodeMeaningWhat to do
401Token missing, invalid, expired, revoked, or issued for a different audience.Let the client refresh, or reconnect if the grant is gone.
403Valid token without the scope the tool needs, or a host or browser origin the server rejects.Reconnect and approve the missing scope.
forbiddenThe account behind the grant has no paid entitlement, so tools return no data.Restore the plan on that account, or reconnect against a paid one.
400Malformed authorization request.Start the connection again from the client.
rate_limitedA tool error carrying a retry hint rather than an HTTP status.Wait for the hinted interval instead of retrying in a loop.

A tool call the API cannot fulfil comes back as a tool error carrying a stable code, a message, a request_id and whether it is worth retrying. Quote the request_id when you contact support. It is safe to share, because errors never carry tokens, Google responses or database identifiers.

Managing connections

Every client that has ever connected is listed on the MCP connections page in the app.

StateWhat it means
ActiveShows when the grant was last used and when it expires. Ninety days is the ceiling.
PausedActive, but its account no longer has a paid plan. Still listed and revocable, and it returns no data until the plan is restored.
ExpiredPast its 90 days. Reconnect from the client for a fresh grant.
RevokedSwitched off by you. It cannot be reactivated.

Select Revoke beside an active client to invalidate its grant. Revocation is idempotent and takes effect on the client's next request, so a machine you no longer control loses access as soon as it tries to use it.

Before you connect

Anything a tool returns is processed by the client and its model provider under their policies. Connect the clients you are willing to share Search Console data with, and revoke the ones you were only trying out.

Troubleshooting

What you seeWhyWhat to do
Paid plan requiredThe signed-in user has no paid account, or the account chosen at consent is not paid.Switch to an eligible paid account, or choose a plan from Billing.
Connection shows as pausedThe account behind an active grant lost its paid entitlement.Restore the plan. The grant resumes without reconnecting.
Authorization request expiredAuthorization transactions are deliberately short-lived.Start the connection again from the client.
No tools after approvalThe client did not finish its redirect and token exchange.Reconnect and let the browser tab return to the client before closing it.
Client registration failedThe client is outside what CrawlRaven accepts: CIMD or DCR, authorization code flow, S256 PKCE, HTTPS or loopback callbacks.Update the client, then retry.
Client is expired or revokedExpired and revoked grants cannot be reactivated.Start a new connection from the client.
Wrong accountA different CrawlRaven account was selected during consent.Revoke the grant, reconnect, and pick the intended account.

Common questions

Do I need an API key or token to connect?

No. The client discovers CrawlRaven's authorization metadata and opens a browser sign-in. Never paste a personal access token, a Google token or a browser cookie into a client configuration.

Can a connected agent change anything in my account?

No. Every tool in the current catalog fetches data. A connection cannot edit websites, run exports, reach billing or administration, or call arbitrary API endpoints. Write tools are a later release with their own consent step.

Is MCP included in my lifetime license?

Yes. MCP is included with every paid CrawlRaven plan, whether that is a lifetime deal or an active subscription. Free accounts cannot approve a connection.

What happens to my connections if my plan lapses?

They pause rather than disappear. The client stays listed and you can still revoke it, but tools stop returning data until the account has a paid entitlement again. Restoring the plan resumes the grant without reconnecting.

How is this different from the REST API?

The REST API is for scripts, pipelines and backends you control. The MCP server is for agents: it describes each tool so a model can pick one, and returns typed data rather than a rendered page.

Does my data leave CrawlRaven when I connect an agent?

Yes, that is what the connection is for. Anything a tool returns is processed by the client and its model provider under their policies, so connect clients you are willing to share Search Console data with.

See also