# OnPage.dev (dev.onpage/onpage): tool descriptions scored

- tools/list taken: 2026-11-02 (UTC)
- From: [Official MCP Registry](https://registry.modelcontextprotocol.io/v0/servers/dev.onpage%2Fonpage/versions/latest)
- Connected to: https://onpage.dev/mcp
- Homepage: https://onpage.dev/mcp
- Repository: https://github.com/seoonpage/seo-mcp-server
- Scoring rules: v2
- Tools: 37
- Average: 60.0 / 100 (Cloudy)
- Near-identical pairs: 0

This page shows how OnPage.dev (dev.onpage/onpage)'s tool descriptions scored, the issues found and the names of its tools and parameters. The descriptions are the server's own: read them where the copy came from.

Forecall asked the URL this server lists in the official MCP Registry for its tools/list once, on the date above, without calling any tool. The server may have changed since.

## Across the server

- Minor: 37 tools. Above 25, models start to tell tools apart less well.
- Minor: The server's instructions are 2173 characters. Claude Code reads only the first 2,048 by default (Codex 0.154.0 reads them whole). Put what the server is for first.

## Tools

- `plan`: 47 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: old_urls, new_urls, clicks[].url, clicks[].clicks, fixes, fixes[].title, fixes[].url, fixes[].detail, fixes[].severity, fixes[].effort, fixes[].role, hours.dev, hours.content, hours.outreach.
  - Minor: No `required` list, so every argument is optional.
- `track_rankings`: 52 / 100
  - Major: Arguments without a description: gsc_rows[].query, gsc_rows[].page, gsc_rows[].clicks, gsc_rows[].impressions, gsc_rows[].position, tracker_rows[].keyword, tracker_rows[].landing_page, tracker_rows[].position, tracker_rows[].volume, tracker_rows[].cpc, tracker_rows[].traffic, tracker_rows[].serp_features, tracker_rows[].tags, tracker_rows[].is_commercial, tracker_rows[].is_transactional, tracker_rows[].is_branded, tracker_rows[].location, tracker_rows[].device, conversions[].page, conversions[].conversions, conversions[].revenue.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument tracker_rows[].is_commercial is unclear.
  - Minor: The meaning of the boolean argument tracker_rows[].is_transactional is unclear.
  - Minor: The meaning of the boolean argument tracker_rows[].is_branded is unclear.
- `check_keyword`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: rows[].query, rows[].page, rows[].clicks, rows[].impressions, rows[].position.
  - Minor: No `required` list, so every argument is optional.
- `site_memory`: 53 / 100
  - Minor: Arguments without a description: kind, limit, note.
  - Minor: No `required` list, so every argument is optional.
- `tracking`: 53 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: gsc[].page, gsc[].clicks, ga4[].landing_page, ga4[].sessions.
  - Minor: No `required` list, so every argument is optional.
- `content`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: competitor_rows[].keyword, competitor_rows[].url, competitor_rows[].position, competitor_rows[].volume, queries[].query, queries[].page, queries[].clicks, queries[].impressions, queries[].position.
  - Minor: No `required` list, so every argument is optional.
- `sitemap`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `text_quality`: 54 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `ai_visibility`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: competitors, competitors[].name, competitors[].domain, responses, responses[].question, responses[].response, responses[].links, responses[].search_queries, responses[].engine, responses[].volume, pages, pages[].url, pages[].chatgpt, pages[].perplexity, pages[].gemini, pages[].google_ai_overviews, pages[].google_ai_mode, pages[].copilot, pages[].grok.
  - Minor: No `required` list, so every argument is optional.
- `get_fix_pack`: 55 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: alts[].src, alts[].alt, changes[].field, changes[].value.
  - Minor: No `required` list, so every argument is optional.
- `check_links`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `request_recrawl`: 57 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `backlinks`: 58 / 100
  - Minor: Arguments without a description: yours[].domain, yours[].domain_rating, yours[].traffic, competitors[].domain, competitors[].referring_domains, competitors[].referring_domains[].domain, competitors[].referring_domains[].domain_rating, competitors[].referring_domains[].traffic, prospects, prospects[].type, prospects[].anchor, prospects[].domain_rating, prospects[].traffic.
  - Minor: No `required` list, so every argument is optional.
- `accessibility`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `answer_readiness`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `edge_worker`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `internal_links`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `layout`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `llms_txt`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `robots_txt`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `schema`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `technical`: 59 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `explain_google`: 60 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Major: Arguments without a description: rows, rows[].url, rows[].indexingState, rows[].robotsTxtState, rows[].pageFetchState, rows[].googleCanonical, rows[].userCanonical, rows[].lastCrawlTime, issues[].url, issues[].issue, bing_queries, bing_queries[].query, bing_queries[].clicks, bing_queries[].impressions, bing_queries[].position, google_queries, google_queries[].query, google_queries[].clicks, google_queries[].impressions, google_queries[].position.
  - Minor: No `required` list, so every argument is optional.
- `local`: 60 / 100
  - Minor: Arguments without a description: gbp_profile.title, gbp_profile.phone, gbp_profile.street, gbp_profile.postcode, gbp_profile.city, reviews, reviews[].author, reviews[].rating, reviews[].text, reviews[].date, reviews[].replied, reviews[].review_id, terms[].keyword, terms[].impressions, grid[].keyword.
  - Minor: No `required` list, so every argument is optional.
  - Minor: The meaning of the boolean argument reviews[].replied is unclear.
- `fix_log`: 61 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: fixes.
  - Minor: No `required` list, so every argument is optional.
- `entity`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `share`: 62 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `dashboard`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: dataset, bigquery.project.
  - Minor: No `required` list, so every argument is optional.
- `site_audit`: 64 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: Arguments without a description: pages[].title, pages[].meta_description, pages[].h1_count, pages[].canonical, pages[].word_count, pages[].images_missing_alt, pages[].image_count, links[].from, links[].to.
  - Minor: No `required` list, so every argument is optional.
- `web_vitals`: 64 / 100
  - Minor: No `required` list, so every argument is optional.
- `find_opportunities`: 66 / 100
  - Minor: Arguments without a description: ads[].term, ads[].clicks, ads[].cost, ads[].conversions, gsc[].query, gsc[].clicks, gsc[].position, gsc[].page.
  - Minor: No `required` list, so every argument is optional.
- `watch`: 66 / 100
  - Major: Says nothing about when to use it, or when not to.
  - Minor: No `required` list, so every argument is optional.
- `compare`: 67 / 100
  - Minor: No `required` list, so every argument is optional.
- `scan_page`: 67 / 100
  - Minor: No `required` list, so every argument is optional.
- `snippet`: 69 / 100
  - Minor: No `required` list, so every argument is optional.
- `measure`: 72 / 100
  - Minor: Arguments without a description: pages, rows.
  - Minor: No `required` list, so every argument is optional.
- `prioritize_fixes`: 82 / 100
  - Major: Arguments without a description: pages, pages[].url, pages[].clicks, pages[].impressions, pages[].position, pages[].backlinks, pages[].referring_domains, pages[].queries, pages[].queries[].query, pages[].queries[].clicks, pages[].queries[].impressions, pages[].queries[].position.
  - Minor: The description mentions none of its 3 or more arguments.

Is your server listed here and you would rather it were not? Email support@forecall.dev, and we will take it off within 7 days.

[All scored servers](https://forecall.dev/en/servers)
