# Botify MCP connector

The Botify connector brings crawl analyses, segments, orphan URLs, sitemaps reports and search console stats to Claude, ChatGPT, Cursor and the Elaichi Agent, so each person can ask about their site's SEO health inside their own Botify access.

Source: https://elaichi.ai/connectors/botify/

## Facts

| | |
| --- | --- |
| Application | Botify |
| Category | Analytics |
| AI tools | 48 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 48 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Botify is connected

- List orphan URLs from the latest analysis
- Which segments lost the most pagerank this month?
- Summarize search console stats for the blog segment

## Connect Botify in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Botify.
2. Optionally set Share with, then press Connect.
3. Paste a Botify API key. One person generates a token in Botify and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Botify tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Botify to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Botify to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Botify to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Botify to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Botify tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Botify through Elaichi

### Check the latest crawl before standup

SEO. Ask which Botify analyses finished overnight, pull the health lights and scoring summary, and know what changed on the site before anyone asks.

### Find pages losing search traffic

Content. Pull search console stats by segment and see which sections of the blog or help center are slipping, then decide what to refresh first.

### Catch orphan and out-of-config pages

Web engineering. List URLs that get visits or analytics traffic but have no internal links, and review sample pages that fell outside the crawl configuration before a release.

### See where links and authority are going

Marketing. Ask for top domains and subdomains, link percentiles and lost pagerank across segments, and report on campaign landing pages without opening a dashboard.

### Keep sitemaps and robots.txt in shape

Ecommerce. Review sitemaps reports and pages found only in the sitemap, and read the current robots.txt index in Botify before a category launch.

### Run and manage crawls for client sites

Agency. Launch a new analysis, pause or resume a running one, and pull a single URL's crawl details when a client asks why a page is not indexed.

## Frequently asked questions

### How do I connect Botify to Claude?

Two steps. First, connect Botify in Elaichi by pasting in your Botify API key, there is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste the Elaichi endpoint, https://api.elaichi.ai/mcp. Claude will ask you to sign in to Elaichi as yourself, and Botify is ready.

### Does Botify work with ChatGPT and Cursor as well as Claude?

Yes. Botify is connected once in Elaichi, and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any MCP client and the Elaichi Agent. There is nothing extra to set up per client.

### What can an AI agent actually do with my Botify data?

It can list your Botify analyses, launch, pause or resume a crawl, and read the results: health lights, crawl statistics, scoring summaries, search console stats, sitemaps reports, orphan URLs, link percentiles, lost pagerank and top domains. It can look at segments, the robots.txt index and the crawl details of a single URL. Because Botify offers a lot of tools, short concrete asks such as "orphan URLs, latest analysis, main site" work better than long sentences.

### Does connecting Botify give the AI access to every project?

No. Every request runs as the person who signed in, so the AI sees only the Botify projects and analyses that person can already see in Botify. Elaichi can narrow that further by team, and it can never widen it beyond what Botify itself allows.

### Can my team share one Botify connection?

Yes. One person connects Botify with the API key, shares the connection with a team in Elaichi, and nobody else ever handles the key. Each teammate still signs in to Elaichi as themselves, so the audit log names the person who paused an analysis or launched a crawl, not a shared account.

### Can I stop an agent from launching, pausing or changing things in Botify?

Yes. Restrictions in Elaichi work per action, so you can allow reading Botify analyses and crawl results while blocking the ability to launch, pause or resume a crawl. A blocked action is never advertised to Claude, ChatGPT or Cursor, so no prompt can reach it.

### What happens to a Botify connection when someone leaves?

Offboarding that person in Elaichi ends their Botify access at once, across every client they used. If the Botify connection was shared, it keeps working for everyone else on the team. Disconnecting Botify once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client at the same time.

## All 48 Botify tools

Every tool below is callable through https://api.elaichi.ai/mcp once Botify is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Botify analyses** (List). List all Botify analyses for a project. Returns each analysis with slug, name, status, url, date_launched, date_finished, and additional crawl metadata. Required: username, project_slug.
- **Botify analyses pause** (Pause). Pause a running Botify analysis for a project. Returns the analysis object with slug, name, status, url, date_launched, and additional crawl metadata. Required: username, project_slug, analysis_slug.
- **Botify analyses resume** (Resume). Resume a paused Botify analysis for a project. Returns the analysis object with slug, name, status, url, date_launched, and additional crawl metadata. Required: username, project_slug, analysis_slug.
- **Get single Botify analysis by ID** (Get). Get a single Botify analysis by id. Returns: user, owner, slug, name, friendly_name, url, status, computing_revision, features, urls_done, urls_in_queue, config, date_launched, date_finished, date_last_modified, date_created, date_crawl_done, failures, red_button_domain, import_keywords_data, import_keywords_data_by_country, crawl_launch_type, to_be_deleted_at, comparable, excluded_from_trends,…. Required: id, username, project_slug.
- **Create a Botify create launch** (Create). Create and launch an analysis for a Botify project. Returns the created analysis launch response object. Required: username, project_slug.
- **List all Botify lights** (List). List all analyses for a Botify project in light format. Returns: next, previous, count, results, page, size. Required: username, project_slug.
- **List all Botify crawl statistics** (List). Get global crawl statistics for a Botify analysis. Returns a crawl statistics object whose attributes contain analysis-level crawl metrics defined in the upstream Botify OpenAPI schema. Required: username, project_slug, analysis_slug.
- **List all Botify crawl statistics times** (List). List Botify crawl statistics grouped by time frequency (1mn, 5mn, or 60mn) for a specific analysis. Returns the data object containing time-grouped crawl metric arrays as defined by the upstream CrawlStatisticsTime schema. Required: username, project_slug, analysis_slug, frequency.
- **List all Botify crawl statistics URLS** (List). List the 1000 latest URLs crawled during a Botify analysis, either all crawled URLs or only those with HTTP errors depending on the list_type. Returns an array of URL records including the url. Limited to 1000 results. Required: username, project_slug, analysis_slug, list_type.
- **List all Botify ganalytics orphan URLS** (List). List Google Analytics orphan URLs for a Botify analysis — URLs that received visits from the selected traffic source but were not crawled by Botify. Returns: next, previous, count, results, page, size. Legacy endpoint; medium must be organic or social with a matching source value. Required: username, project_slug, analysis_slug, medium, source.
- **List all Botify links percentiles** (List). Get inlinks percentiles. Returns: domain, percentiles. Required: username, project_slug, analysis_slug.
- **List all Botify pagerank losts** (List). List lost pagerank entries for a Botify analysis. Returns: non_crawled, external, robots_txt. Required: username, project_slug, analysis_slug.
- **List all Botify scoring summaries** (List). Get the scoring summary for a specific Botify analysis. Returns the scoring summary object for the analysis. Required: username, project_slug, analysis_slug.
- **List all Botify search console stats** (List). List Google Search Console clicks and impressions per day for a Botify analysis. Returns: stats. Required: username, project_slug, analysis_slug.
- **List all Botify sitemaps reports** (List). Get the sitemaps report for a Botify analysis, providing global information about sitemaps found during the crawl such as sitemaps indexes and invalid sitemaps URLs. Returns the SitemapsReport object. Required: username, project_slug, analysis_slug.
- **List all Botify samples out of configs** (List). List sample URLs found in Botify sitemaps but outside the crawl perimeter defined for the project (e.g., disallowed domains, subdomains, or protocols). Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.
- **List all Botify samples sitemap onlies** (List). List URLs found in your sitemaps, within the project allowed scope (allowed domains/subdomains/protocols), but not found by the Botify crawler, for a given Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.
- **List all Botify top domains domains** (List). List top domains found in a Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.
- **List all Botify top domains subdomains** (List). List top subdomains for a Botify analysis. Returns a paginated collection with next, previous, count, results, page, and size. Required: username, project_slug, analysis_slug.
- **List all Botify visits orphan URLS** (List). List orphan URLs in a Botify analysis — URLs that received visits from a search engine or social source per Google Analytics but were not crawled by the Botify crawler. Returns: next, previous, count, results, page, size. Medium and source must form a valid pair (e.g. organic with google, or social with facebook). Required: username, project_slug, analysis_slug, medium, source.
- **List all Botify segments** (List). List segments (segments feature public metadata) for a Botify analysis. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.
- **List all Botify staticfiles robots txt indexes** (List). List all robots.txt files found on a Botify project's domains for a given analysis. The object is null for virtual robots.txt. Returns: next, previous, count, results, page, size. Required: username, project_slug, analysis_slug.
- **Get single Botify staticfiles robots txt index by ID** (Get). Get the content of a specific robots.txt file from a Botify analysis by id. Returns: next, previous, count, results, page, size. Required: id, username, project_slug, analysis_slug.
- **Get single Botify URL by ID** (Get). Gets the detail of an URL for an analysis. Required: id, username, project_slug, analysis_slug.
- **List all Botify URLS** (List). List Botify URLs for an analysis by executing a BQL query against the URLs collection. Returns URL detail records with id and datamodel-specific attributes; the attributes shape depends on the analysis's URLs Datamodel. Required: username, project_slug, analysis_slug.
- **Get single Botify URLS agg by ID** (Get). Run BQL aggregation queries against URLs in a Botify analysis. Accepts multiple queries in the request body (each with filters and aggs) and dispatches them, returning an array of query-dependent aggregation result objects whose structure reflects the dimensions and metrics defined in each BQL query. Required: username, project_slug, analysis_slug.
- **List all Botify URLS ais** (List). Get AI suggestions for a specific URL within a Botify analysis. Returns the AI suggestions object with schema-specific fields. Required: username, project_slug, analysis_slug, url.
- **List all Botify URLS datamodels** (List). Get the Botify Analysis datamodel describing the available URL fields for a specific analysis. Returns the datamodel object including attributes with analysis-specific field definitions whose shape depends on the crawl configuration and enabled features. Required: username, project_slug, analysis_slug.
- **List all Botify URLS datasets** (List). List the available datasets (field groups) for a Botify analysis, used to discover queryable fields for BQL operations. Returns: datasets. Required: username, project_slug, analysis_slug.
- **List all Botify URLS exports** (List). A list of the CSV Exports requests and their current status. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: username, project_slug, analysis_slug.
- **Create a Botify URLS export** (Create). Creates a new UrlExport object and starts a task that will export the results into a csv. Returns the model id that manages the task. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: username, project_slug, analysis_slug.
- **Get single Botify URLS export by ID** (Get). Checks the status of an CSVUrlExportJob object. Returns json object with the status. Returns: job_id, job_url, job_status, nb_results, area, query, results, date_created. Required: id, username, project_slug, analysis_slug.
- **List all Botify URLS htmls** (List). Get the HTML content of a specific URL within a Botify analysis. Returns the HTML content object for the requested URL from the crawl. Required: username, project_slug, analysis_slug, url.
- **List all Botify jobs** (List). List all Botify jobs, optionally filtered by job type, project slug, or analysis slug. Returns: next, previous, count, results, page, size.
- **Create a Botify job** (Create). Create a Botify job instance whose class depends on the job_type parameter sent. Returns: job_id, job_type, job_url, job_status, results, date_created, payload, user, metadata, crawl_date, project, analysis. Required: job_type, payload.
- **Get single Botify job by ID** (Get). Get a single Botify job by id. Returns: job_id, job_type, job_url, job_status, results, date_created, payload, user, metadata, crawl_date, project, analysis. Required: id.
- **List all Botify projects** (List). List all active Botify projects for a user. Returns: next, previous, count, results, page, size. Required: username.
- **List all Botify account filters** (List). List all account saved filters for a Botify project. Returns each filter's name, identifier, filters, type, project_name, and created_date. Required: username, project_slug.
- **List all Botify collections** (List). List all Botify collections for a project. Returns collection objects with their id and attributes containing collection-specific fields. Required: username, project_slug.
- **Get single Botify collection by ID** (Get). Get a single Botify collection by id including its datasets and field definitions. Returns: datasets, metadata. Required: id, username, project_slug.
- **List all Botify filters** (List). List all saved filters for a Botify project, including each filter's name, ID, and filter value. Returns: name, filters, identifier, description, type, project_name, created_date. Required: username, project_slug.
- **Get single Botify filter by ID** (Get). Get a specific Botify project filter by id. Returns: name, filters, identifier, description, type, project_name, created_date, openapi, info, paths, security, servers, components. Required: id, username, project_slug.
- **Create a Botify query** (Create). Run a query against project-level collections in Botify. Returns: next, previous, count, results, page, size. Required: username, project_slug, collections, query.
- **List all Botify saved explorers** (List). List all saved explorers for a Botify project. Returns each saved explorer with its uuid, name, type, description, query object, created_by and modified_by user details, and created_date and modified_date timestamps. Required: username, project_slug.
- **Create a Botify values list clone** (Create). Clone all keyword groups of a Botify project to another project. Returns an empty 201 response on success. Required: username, project_slug, target_username, target_project.
- **List all Botify user datasources summary by projects** (List). Get the datasources details for all projects of a Botify user. Returns: runnable, datasource, date_last_successful_revision, last_revision_status, stats, segments. Required: username.
- **List all Botify user projects** (List). List all active Botify projects for a user. Returns each project's name, slug, active status, date_created, url, timezone, last_analysis, current_settings, and associated user. Required: username.
- **Get single Botify project URLS agg by ID** (Get). Execute multiple BQL aggregation queries across all completed analyses in a Botify project. Returns a dynamic aggregation results object with query-specific fields. nb_analyses is capped at 20. Required: username, project_slug.
