topic-scorer

Score pages against 11,485 public taxonomy categories by embedding similarity. $0.05/call via MCP.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
85%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,182Tokens (tool definitions)
~1.9 KBTypical response size
Moderate attention impact (0.92% 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": {
    "topic-scorer": {
      "url": "https://topic-scorer.pixelcove.co/mcp"
    }
  }
}

Remote endpoints

https://topic-scorer.pixelcove.co/mcpstreamable-http

What it can do

Tool inventory

Tools (5)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
⚪topic_scorer_taxonomies

Lists the six taxonomies with their label and category count. Free. Call it first to pick the taxonomy for topic_scorer_find.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢topic_scorer_find(query, taxonomy, limit)

Finds categories whose path contains the query (case-insensitive substring), optionally within one taxonomy. Free. Returns up to `limit` hits with id and path; pass the id as `category` to the paid tools.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Words to look for in category paths."
    },
    "taxonomy": {
      "type": "string",
      "enum": [
        "google_ads_topics",
        "google_merchant",
        "iab_content",
        "iab_audience",
        "iab_ad_product",
        "linkedin_industries"
      ],
      "description": "Taxonomy of the target category."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 25
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
🟢topic_scorer_score(text, taxonomy, category, per, phrases, ...)

Scores text against every category in all six taxonomies (one embedding, cosine similarity) and returns the top `per` rows per taxonomy. With `taxonomy` and `category` it also returns the target's rank, score, gap to #1, and a phrase bank split into phrases the text already uses and phrases it does not. Read the rank and the gap, not the raw percent (scores compress into a 70 to 90 band). Paid, $0.05/call; read-only and safe to retry.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32768,
      "description": "The page or draft text to score, as plain text or HTML (tags are stripped). 1 to 32768 characters. URLs are not fetched; send the content."
    },
    "taxonomy": {
      "type": "string",
      "enum": [
        "google_ads_topics",
        "google_merchant",
        "iab_content",
        "iab_audience",
        "iab_ad_product",
        "linkedin_industries"
      ],
      "description": "Taxonomy of the target category."
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up)."
    },
    "per": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25,
      "default": 10,
      "description": "Rows per taxonomy."
    },
    "phrases": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "default": 30,
      "description": "Phrase bank size for the target category (0 skips it)."
    },
    "full": {
      "type": "boolean",
      "default": false,
      "description": "Score the whole text as the mean of 8,192-char chunks instead of only the first 8,192 chars."
    }
  },
  "required": [
    "text"
  ],
  "additionalProperties": false
}
🟢topic_scorer_gate(text, taxonomy, category, min_rank, phrases, ...)

Pass/fail check: does the text rank within the top `min_rank` categories of its target taxonomy? Returns `pass`, the target's rank and gap to #1, the taxonomy's top five, and the unused phrases to work in. Use it as a content-pipeline gate. Paid, $0.05/call; read-only and safe to retry.

Input Schema

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 32768,
      "description": "The page or draft text to score, as plain text or HTML (tags are stripped). 1 to 32768 characters. URLs are not fetched; send the content."
    },
    "taxonomy": {
      "type": "string",
      "enum": [
        "google_ads_topics",
        "google_merchant",
        "iab_content",
        "iab_audience",
        "iab_ad_product",
        "linkedin_industries"
      ],
      "description": "Taxonomy of the target category."
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up)."
    },
    "min_rank": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 3,
      "description": "Highest passing rank."
    },
    "phrases": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "default": 30,
      "description": "Phrase bank size for the target category (0 skips it)."
    },
    "full": {
      "type": "boolean",
      "default": false,
      "description": "Score the whole text as the mean of 8,192-char chunks instead of only the first 8,192 chars."
    }
  },
  "required": [
    "text",
    "taxonomy",
    "category"
  ],
  "additionalProperties": false
}
🟢topic_scorer_phrases(taxonomy, category, n)

Returns the ranked phrase bank for one category: 1 to 4 word phrases a page squarely about that category would contain, ordered by similarity to the category. Use it to seed a brief. Paid, $0.05/call; read-only and safe to retry.

Input Schema

{
  "type": "object",
  "properties": {
    "taxonomy": {
      "type": "string",
      "enum": [
        "google_ads_topics",
        "google_merchant",
        "iab_content",
        "iab_audience",
        "iab_ad_product",
        "linkedin_industries"
      ],
      "description": "Taxonomy of the target category."
    },
    "category": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up)."
    },
    "n": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 30,
      "description": "Bank size."
    }
  },
  "required": [
    "taxonomy",
    "category"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools
verifiedversion not recorded5 tools