Score pages against 11,485 public taxonomy categories by embedding similarity. $0.05/call via MCP.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <api-key> — a prepaid-credit key from the Stripe rail. Omit it to pay per call over x402 instead.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Words to look for in category paths.
Taxonomy of the target category.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | Words to look for in category paths. |
| taxonomy | string | Taxonomy of the target category. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Words to look for in category paths."
},
"taxonomy": {
"enum": [
"google_ads_topics",
"google_merchant",
"iab_content",
"iab_audience",
"iab_ad_product",
"linkedin_industries"
],
"type": "string",
"description": "Taxonomy of the target category."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| full | boolean | Score the whole text as the mean of 8,192-char chunks instead of only the first 8,192 chars. |
| text* | string | 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. |
| phrases | integer | Phrase bank size for the target category (0 skips it). |
| category* | string | Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up). |
| min_rank | integer | Highest passing rank. |
| taxonomy* | string | Taxonomy of the target category. |
{
"type": "object",
"required": [
"text",
"taxonomy",
"category"
],
"properties": {
"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."
},
"text": {
"type": "string",
"maxLength": 32768,
"minLength": 1,
"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."
},
"phrases": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 0,
"description": "Phrase bank size for the target category (0 skips it)."
},
"category": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"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",
"default": 3,
"maximum": 50,
"minimum": 1,
"description": "Highest passing rank."
},
"taxonomy": {
"enum": [
"google_ads_topics",
"google_merchant",
"iab_content",
"iab_audience",
"iab_ad_product",
"linkedin_industries"
],
"type": "string",
"description": "Taxonomy of the target category."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| n | integer | Bank size. |
| category* | string | Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up). |
| taxonomy* | string | Taxonomy of the target category. |
{
"type": "object",
"required": [
"taxonomy",
"category"
],
"properties": {
"n": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 1,
"description": "Bank size."
},
"category": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up)."
},
"taxonomy": {
"enum": [
"google_ads_topics",
"google_merchant",
"iab_content",
"iab_audience",
"iab_ad_product",
"linkedin_industries"
],
"type": "string",
"description": "Taxonomy of the target category."
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| per | integer | Rows per taxonomy. |
| full | boolean | Score the whole text as the mean of 8,192-char chunks instead of only the first 8,192 chars. |
| text* | string | 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. |
| phrases | integer | Phrase bank size for the target category (0 skips it). |
| category | string | Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up). |
| taxonomy | string | Taxonomy of the target category. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"per": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Rows per taxonomy."
},
"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."
},
"text": {
"type": "string",
"maxLength": 32768,
"minLength": 1,
"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."
},
"phrases": {
"type": "integer",
"default": 30,
"maximum": 100,
"minimum": 0,
"description": "Phrase bank size for the target category (0 skips it)."
},
"category": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Target category id, full path, or a unique path substring within the taxonomy (use topic_scorer_find to look one up)."
},
"taxonomy": {
"enum": [
"google_ads_topics",
"google_merchant",
"iab_content",
"iab_audience",
"iab_ad_product",
"linkedin_industries"
],
"type": "string",
"description": "Taxonomy of the target category."
}
},
"additionalProperties": false
}Lists the six taxonomies with their label and category count. Free. Call it first to pick the taxonomy for topic_scorer_find.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}