FUTIA

SEO answers for AI agents: Search Console reads free, plus competitor, keyword, backlink, SERP data.

Should I use this

Quality & Safety

A
Description quality
90%
Schema completeness
91%
Naming quality
83%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • LOWTool 'query_match' description lacks action verbin query_match
  • LOWTool 'serp_position' description lacks action verbin serp_position

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~811Tokens (tool definitions)
~549 BTypical response size
Moderate attention impact (0.63% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "seo": {
      "url": "https://futia.io/api/mcp"
    }
  }
}

Remote endpoints

https://futia.io/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪index_coverage(site, urls)

Has Google seen your pages? Works with zero traffic data, so it is useful from a site's first day. Returns which URLs are indexed, which were crawled but not indexed, which were never discovered, and where Google picked a different canonical than you declared.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property, e.g. sc-domain:example.com"
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional. Defaults to URLs found in the site's sitemap."
    }
  },
  "required": [
    "site"
  ]
}
🟢page_yield(site, days)

Which of your pages are dead, why, and which to fix first. Splits pages into no_demand, title_not_earning and ranking_too_low, then orders the fix list by recoverable clicks using the site's own click-through curve rather than borrowed industry averages.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    },
    "days": {
      "type": "number",
      "description": "Lookback window, 7 to 180. Defaults to 90."
    }
  },
  "required": [
    "site"
  ]
}
🟢query_match(site, days)

Which queries are one step away, and which were never yours. Returns queries stuck at ranks 11-20 with real volume, queries you rank well for but nobody clicks (intent mismatch), and queries several of your pages compete for without earning clicks.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    },
    "days": {
      "type": "number",
      "description": "Lookback window, 7 to 180"
    }
  },
  "required": [
    "site"
  ]
}
🟡competitor_gap(site, competitor)

Topics a real competitor ranks for and you do not. Competitors are chosen by how much of their keyword set overlaps with yours, not by raw overlap count: raw count returns social networks that rank for everything. Gap keywords are filtered against your existing vocabulary.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    },
    "competitor": {
      "type": "string",
      "description": "Optional. If omitted we pick one by overlap ratio."
    }
  },
  "required": [
    "site"
  ]
}
🟢keyword_volume(site, keywords)

Search volume and difficulty for keywords you name, each with a verdict on whether this particular site can realistically reach it. The verdict is measured against the difficulty of keywords the site already ranks for, not a universal threshold.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Up to 100 keywords"
    }
  },
  "required": [
    "site",
    "keywords"
  ]
}
⚪backlink_profile(site)

Referring domains, link count, domain rank and a reading of what they mean. Deliberately does not return the raw link list: a thousand rows of links fills an agent's context without producing a decision.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    }
  },
  "required": [
    "site"
  ]
}
⚪serp_position(site, keywords)

For queries you name: who is on the results page, where you sit among them, and which domains are consistently above you.

Input Schema

{
  "type": "object",
  "properties": {
    "site": {
      "type": "string",
      "description": "Search Console property"
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Up to 10 queries"
    }
  },
  "required": [
    "site",
    "keywords"
  ]
}
🟢account_status

Free and instant: remaining monthly budget, credit balance, when the budget resets, and which endpoints stay free. Check this before a paid call if you are unsure the budget covers it.

Input Schema

{
  "type": "object",
  "properties": {},
  "required": []
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools