Score a draft against 11,485 taxonomy categories before you publish it.
Send the text of a page. topic-scorer embeds it once and ranks it against every category in six public taxonomies, then hands back your target category's rank, the gap to #1, and the phrases the page still needs.
https://topic-scorer.pixelcove.co/mcp
Click the address to select it. Two tools are free, the rest cost $0.05 per call.
score --taxonomy google_ads_topics --category 344
A real network-security page, scored against Google Ads Topics. Rank 1 means no other category in that taxonomy sits closer to the text.
How it works
Three calls, and only the middle one costs anything.
-
Look up the category id
topic_scorer_findsearches all six taxonomies by substring and returns matching ids and paths. It's free, so you can browse until the target is right. -
Score the text against the target
topic_scorer_scoretakes up to 32,768 characters of text or HTML. One embedding, cosine similarity to every category, ranked per taxonomy. -
Act on the rank and the phrase bank
Read the rank and the gap to #1 rather than the raw score. Work the unused phrases into the draft, then score it again.
topic-scorer measures topical alignment. It doesn't predict where a page ranks in a search engine.
Taxonomies covered
Six public taxonomies, loaded whole. Every call ranks your text inside all of them.
| TAXONOMY | CATEGORIES |
|---|---|
| Google Ads Topics | 2,558 |
| Google Merchant | 5,595 |
| IAB Content 3.1 | 704 |
| IAB Audience 1.1 | 1,558 |
| IAB Ad Product 2.0 | 583 |
| LinkedIn Industries v2 | 487 |
total 11,485 categories / one embedding at 768 dimensions
Tools
Five tools on one endpoint. Text goes in as text: topic-scorer never fetches a URL for you.
| TOOL | WHAT IT RETURNS | PRICE |
|---|---|---|
| topic_scorer_taxonomies | The six taxonomies with their label and category count. | Free |
| topic_scorer_find | Categories whose path contains your query, with the id you pass to the paid tools. | Free |
| topic_scorer_score | Top categories per taxonomy, plus the target's rank, score, gap to #1, and a phrase bank split into used and unused. | $0.05 |
| topic_scorer_gate | A pass or fail against a rank threshold, for content pipelines that block a draft until it clears. | $0.05 |
| topic_scorer_phrases | The ranked phrase bank for one category: 1 to 4 word phrases a page on that topic contains. | $0.05 |
Pricing
Both rails charge per call at the same price. There's no seat and no subscription.
Pay per call with x402
$0.05
Your agent pays $0.05 in USDC on Base for each call. There's no signup: the 402 response carries the price, and the agent settles it.
- BEST FOR
- An agent that discovers the server and needs to call it now.
- REQUIRES
- An x402 client with a funded wallet on Base.
Prepay a credit pack with Stripe
$20
Buy a $20 pack through Stripe Checkout. The success page issues your API key, and each call deducts $0.05 from the balance.
- BEST FOR
- A pipeline or a team that wants one key and a running balance.
- REQUIRES
- The key in an
x-api-keyheader. Buy a $20 pack through Stripe Checkout; the success page shows your key once.
topic_scorer_taxonomies and topic_scorer_find stay free on both rails, and neither one needs a key.
Connect
Point any MCP client at the endpoint over streamable HTTP. Drop the header while you're only calling the free tools.
MCP client config
{
"mcpServers": {
"topic-scorer": {
"type": "http",
"url": "https://topic-scorer.pixelcove.co/mcp",
"headers": {
"x-api-key": "ts_your_key_here"
}
}
}
}
The headers block is optional. Add it once you hold a prepaid key, or leave it out and let an x402 client pay per call.
Free lookup with curl
curl -sS https://topic-scorer.pixelcove.co/mcp \ -H 'content-type: application/json' \ -H 'accept: application/json, text/event-stream' \ -d '{"jsonrpc":"2.0","id":1, "method":"tools/call", "params":{"name":"topic_scorer_find", "arguments":{"query":"network security", "taxonomy":"google_ads_topics"}}}'
You get back the category id and its full path. Pass that id as category to any paid tool.