# get_search_performance (MCP)

> Give your AI agent Google Search Console data over MCP: clicks, impressions and positions vs the previous period, a ranked list of what to write next, and index status per post. Hosted, no Google Cloud setup.

HTML version: https://blogizi.com/docs/mcp-get-search-performance
Markdown version: https://blogizi.com/docs/mcp-get-search-performance.md

`get_search_performance` returns cached Google Search Console performance for a Blogizi project. It's hosted on the same MCP server as `draft_post`, `update_post` and `publish_post`, so an agent can read what's underperforming and ship the fix in one session. Connect Google and bind a property in the dashboard first; see [Search Console](/docs/search-console).

## Arguments

| Name | Type | Required | Notes |
|---|---|---|---|
| `projectSlug` | string | When the account has more than one project | Same as `blogizi use` |
| `days` | `7` \| `28` \| `90` \| `180` \| `365` \| `480` | No | Default `28` |
| `include` | `("opportunities" \| "indexing")[]` | No | Extra payloads; each list capped at 20 rows |

## Result

```json
{
  "property": "https://my-app.app.blogizi.com/",
  "range": { "startDate": "2026-09-08", "endDate": "2026-10-05", "days": 28 },
  "lastSyncedAt": "2026-10-09T06:00:12.000Z",
  "totals": { "clicks": 412, "impressions": 18920, "ctr": 0.0218, "position": 18.4 },
  "previousTotals": { "clicks": 380, "impressions": 17200, "ctr": 0.0221, "position": 19.1 },
  "queries": [
    { "keys": ["add blog to nextjs"], "clicks": 38, "impressions": 1210, "ctr": 0.0314, "position": 6.2 }
  ],
  "pages": [
    { "keys": ["https://my-app.app.blogizi.com/add-blog-to-nextjs"], "clicks": 52, "impressions": 2034, "ctr": 0.0256, "position": 7.9 }
  ]
}
```

With `include: ["opportunities"]` you also get near-misses, low-CTR pages, on-radar queries, fresh queries, and cannibalization (same scoring as the dashboard Opportunities tab). With `include: ["indexing"]` you get index counts, sitemap summary, issues, and recently published posts.

Up to 50 queries and 50 pages, sorted by clicks. `ctr` is a fraction. The daily chart is only in the [REST API](/docs/api-search-analytics) response.

## Prompts that work

- "Use get_search_performance for 28 days with include opportunities. Draft posts for the top near-misses."
- "Use get_search_performance with include indexing. Which published posts are not on Google yet?"
- "Compare 7 and 28 days. Which queries are new this week?"
- "Rewrite the top candidate and save it with update_post as a draft."

## Errors

- *"Search Console is not bound for this project…"*: connect Google and bind a property in the dashboard Search tab.
- Project errors: pass `projectSlug` when the account has several blogs.

## Limits

Cached data (daily sync; a range that isn't cached yet is fetched on the first call), 7 days to 16 months, top 50 queries and pages, opportunity and indexing lists capped at 20 rows. Index status comes from a daily URL Inspection check, so it can lag a day after you publish. Countries and devices are in the dashboard only. It can't request indexing or submit sitemaps.
