Google Knowledge Panel MCP Server
Provides tools for entity SEO using Google's Knowledge Graph Search API, enabling finding Knowledge Graph entities, analyzing entity prominence, comparing entities, and retrieving entity profiles with readiness checks and JSON-LD schema.
Integrates with Wikidata to search entities, retrieve real-world connections, official profiles, and readiness signals, and to support entity comparison and prominence analysis alongside Google Knowledge Graph data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Knowledge Panel MCP Servercompare HubSpot and Salesforce — what's each entity missing?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Knowledge Panel MCP Server
An open-source MCP server for entity SEO. It lets Claude (or any MCP client) see what Google's Knowledge Graph, the data behind knowledge panels, holds for any brand, person or organization, how that entity connects to the real world, and what it still needs.
Ask things like "Which 'tesla' entity has the strongest knowledge panel presence?" or "Compare HubSpot and Salesforce: what is each entity missing?" and get answers backed by live Google Knowledge Graph and Wikidata data, plus ready-to-paste JSON-LD schema.
google_knowledge_panel_mcp
│
├── find_entities every entity matched for a name
├── analyze_entity_prominence which match has the strongest KG presence, and why
├── compare_entities 2-5 entities side by side
└── get_entity full profile + readiness checklist + JSON-LDContents
Related MCP server: Google Knowledge Graph MCP
What you can do with it
Find every entity behind a name. See each Knowledge Graph match for "sara taher" or "tesla", with its ID (
/m/0dr90d), type, description and Google's result score.Work out which entity is strongest. Rank same-name entities on a transparent 0–100 prominence score, with a plain-English reason for each.
Benchmark competitors. Compare 2–5 brands or people side by side, see who leads on each signal and what each one is missing.
Audit one entity. Get its knowledge panel data, real-world connections (founders, CEO, HQ, products, parent company…), official social profiles and an 8-point readiness checklist.
Generate schema. Get
OrganizationorPersonJSON-LD withsameAslinks built from the entity's actual graph data.
Quick start
You need Node.js 18 or newer.
Claude Code:
claude mcp add knowledge-panel -e GOOGLE_KG_API_KEY=your-key-here -- npx -y github:theseoriddler/google_knowledge_panel_mcpClaude Desktop: open Settings → Developer → Edit Config, add the block below, then restart Claude Desktop.
{
"mcpServers": {
"knowledge-panel": {
"command": "npx",
"args": ["-y", "github:theseoriddler/google_knowledge_panel_mcp"],
"env": { "GOOGLE_KG_API_KEY": "your-key-here" }
}
}
}Then ask: "Find every Knowledge Graph entity for 'tesla'. Which one is strongest?"
The API key is optional. Without it the server runs on Wikidata only (see below).
Setup in detail
1. Get a free Google API key (recommended)
Without a key the server still works, but uses Wikidata only. That covers well-known entities, but many people and smaller brands exist in Google's Knowledge Graph and not in Wikidata. The key is free.
Open the Google Cloud Console and create or pick a project.
Go to APIs & Services → Library, search for Knowledge Graph Search API and click Enable.
Go to APIs & Services → Credentials → Create credentials → API key.
Click the new key, and under API restrictions restrict it to the Knowledge Graph Search API. The free quota is 100,000 requests/day.
Test the key in a terminal:
curl "https://kgsearch.googleapis.com/v1/entities:search?query=tesla&limit=1&key=YOUR_KEY"You should get JSON with an itemListElement array.
Mode | What you get |
With | Google Knowledge Graph matches, IDs, types, result scores, descriptions, images, detailed descriptions, and all 8 readiness checks, plus Wikidata connections and profiles. |
Without a key | Wikidata search, connections, profiles and 5 of the 8 readiness checks. Every result says |
2. Add the server to your MCP client
The server runs over stdio. Every client needs the same three things: the command npx, the args -y github:theseoriddler/google_knowledge_panel_mcp, and the GOOGLE_KG_API_KEY environment variable.
The first run downloads and builds the server, which takes a minute. Later runs are fast.
claude mcp add knowledge-panel -e GOOGLE_KG_API_KEY=your-key-here -- npx -y github:theseoriddler/google_knowledge_panel_mcpAdd --scope user to make it available in every project. Check it with claude mcp list, or /mcp inside a session.
Open Settings → Developer → Edit Config. This opens claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add the server under mcpServers (merge with any servers already there):
{
"mcpServers": {
"knowledge-panel": {
"command": "npx",
"args": ["-y", "github:theseoriddler/google_knowledge_panel_mcp"],
"env": { "GOOGLE_KG_API_KEY": "your-key-here" }
}
}
}Fully quit and restart Claude Desktop. The four tools appear under the tools (🔨) menu.
Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"knowledge-panel": {
"command": "npx",
"args": ["-y", "github:theseoriddler/google_knowledge_panel_mcp"],
"env": { "GOOGLE_KG_API_KEY": "your-key-here" }
}
}
}Add to .vscode/mcp.json:
{
"servers": {
"knowledge-panel": {
"type": "stdio",
"command": "npx",
"args": ["-y", "github:theseoriddler/google_knowledge_panel_mcp"],
"env": { "GOOGLE_KG_API_KEY": "your-key-here" }
}
}
}git clone https://github.com/theseoriddler/google_knowledge_panel_mcp.git
cd google_knowledge_panel_mcp
npm install # also builds to dist/Then point your client at:
command: node
args: /absolute/path/to/google_knowledge_panel_mcp/dist/index.js
env: GOOGLE_KG_API_KEY=your-key-hereWindows: if your client can't find
npx, use"command": "cmd"and"args": ["/c", "npx", "-y", "github:theseoriddler/google_knowledge_panel_mcp"].
3. Check it works
Ask your assistant: "Use find_entities to look up 'nike'." The reply's source field tells you the mode:
"Google Knowledge Graph + Wikidata": the API key is working."Wikidata only (set GOOGLE_KG_API_KEY …)": no key was found. Check theenvblock and restart the client.
Tools reference
All tools are read-only and return JSON.
find_entities
Find every Knowledge Graph entity associated with a name, highest Google result score first.
Input | Type | Default | Description |
| string | required | Name to search, e.g. |
| number (1–20) |
| Max entities to return |
| string |
| Language code, e.g. |
| string[] | – | Only these schema.org types, e.g. |
Returns each match's id, name, types, description, resultScore and a googleUrl (https://www.google.com/search?kgmid=…) that opens its knowledge panel.
analyze_entity_prominence
Rank the entities matched for a name by how strong their Knowledge Graph presence is.
Inputs: same as find_entities.
Returns:
strongest: the winner, itsprominencescore, itsleadOverNextin points, and thereason. If Google's own top result differs, anotesays so.ranking: every match withrank,prominence,reasonand the rawsignals.method: how the score was calculated.
"strongest": {
"name": "Tesla",
"id": "Q478214",
"prominence": 96,
"leadOverNext": 28,
"reason": "105 Wikipedia editions; 322 Wikidata statements; 7 official profiles"
}compare_entities
Compare 2–5 entities side by side.
Input | Type | Default | Description |
| string[] (2–5) | required | Knowledge Graph IDs ( |
| string |
| Language code |
A name resolves to an exact-name match on Google, then on Wikidata, then Google's top result. For same-name entities, pass IDs from find_entities.
Returns:
leaders: who leads on prominence, readiness, Wikipedia editions, Wikidata statements and official profiles.entities: per entity,prominence,readiness,missing(failed checks), keyfacts,keyConnections(founder, CEO, HQ, industry, parent…) andprofiles.
get_entity
The full profile of one entity. Pass an id for a specific entity, or a query to profile the top match.
Input | Type | Default | Description |
| string | – | Knowledge Graph ID ( |
| string | – | Name to search; the top match is profiled |
| number (1–20) |
| Max |
| string |
| Language code |
| string[] | – | Only these schema.org types |
Returns:
Field | Contents |
| Name, types, description, |
| Founded, dissolved, birth/death dates, employees, official website |
| Founders, CEO, chairperson, HQ, country, industry, products, parent organization, subsidiaries, owners, occupation, employer, education, awards, notable works and more |
| X, Facebook, Instagram, LinkedIn, YouTube, TikTok, GitHub, Crunchbase |
| Score, basis and each checklist item |
| Ready-to-paste schema.org markup |
| The other entities that matched the query |
Example jsonLd for /m/0dr90d:
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://www.tesla.com/#organization",
"name": "Tesla",
"description": "American automotive, energy storage and solar power company",
"url": "https://www.tesla.com/",
"logo": "https://commons.wikimedia.org/wiki/Special:FilePath/Tesla%20Motors.svg",
"sameAs": [
"https://en.wikipedia.org/wiki/Tesla,_Inc.",
"https://www.wikidata.org/wiki/Q478214",
"https://www.google.com/search?kgmid=%2Fm%2F0dr90d",
"https://x.com/Tesla",
"https://www.linkedin.com/company/tesla-motors/",
"https://github.com/teslamotors"
]
}Wrap it in <script type="application/ld+json">…</script> on your homepage (Organization) or about page (Person).
The readiness checklist
get_entity and compare_entities score each entity on 8 checks:
Check | Why it matters |
Has a Google Knowledge Graph entry | Google has recognised the entity |
Has a Google description | The short line under the panel title |
Linked to a detailed source (e.g. Wikipedia) | The longer panel description and its source |
Has an entity image | Panels with an image are more complete |
Has an official website | Anchors the entity to a domain you control |
Has a Wikidata item | The main open source Google cross-references |
Has a Wikipedia article | The strongest single notability signal |
Has 2+ linked official profiles (sameAs) | Confirms which social accounts belong to the entity |
The readiness score is the share of checks passed. The three Google checks are skipped ("passed": null) without an API key, and the score uses the remaining five.
How prominence is scored
The prominence score is a transparent 0–100 heuristic, not a Google metric:
Signal | Weight | Full marks at |
Google result score, relative to the top match | 40 | top match |
Knowledge panel fields (description, detailed source, image, website) | 20 | all 4 |
Wikipedia language editions | 20 | 100+ |
Wikidata statements | 10 | 1,000+ |
Linked official profiles | 10 | 5+ |
Wikipedia editions and Wikidata statements are scored on a log scale, so going from 0 to 10 counts for more than going from 90 to 100.
Signals that aren't available are left out and the rest re-weighted. compare_entities leaves out Google's result score, because it's only comparable within one search. Google signals are also skipped without an API key.
Example prompts and workflows
Quick lookups
"Find every Knowledge Graph entity for 'sara taher'. Which one is strongest?"
"Which 'tesla' entity has the strongest Knowledge Graph presence, and why?"
"Get the full profile of /m/0dr90d, including its connections."
"Generate Organization schema for Nike from its knowledge graph data."
Personal brand audit
"Find every Knowledge Graph entity for '[your name]'." Does Google have an entity for you? Is another person with the same name stronger?
"Get the full profile of [your entity ID]." Review the readiness checklist.
"What should I do first to fix the failed checks?" Typical fixes: a Wikidata item, linked social profiles, and
Personschema on your site."Give me the JSON-LD for my about page."
Competitor benchmark
"Compare HubSpot, Salesforce and Zoho. Who has the strongest entity, and what is each missing?"
"Compare /m/0dr90d and Q1428953." (two entities with the same name: Tesla the company and Tesla the band)
Disambiguation
"Find all 'Apple' entities of type Organization."
"Which 'Mercury' entity would Google most likely show a panel for?"
Data sources and limits
Google Knowledge Graph Search API supplies entity IDs, types, descriptions, images and result scores. It is the same graph behind knowledge panels, but it doesn't return everything a panel shows (reviews, "people also search for", etc.).
Wikidata supplies connections, facts, official profiles and Wikipedia coverage. The server finds an entity's Wikidata item through its Knowledge Graph ID (Freebase
P646for/m/…IDs,P2671for/g/…IDs). If an entity has no Wikidata item, those sections are empty. Adding one is one of the most effective ways to strengthen an entity.resultScoreis Google's raw match score for that search. It's only meaningful relative to other results for the same query.Google's search doesn't always return the obvious entity. For example,
salesforcereturns Salesforce Marketing Cloud, not Salesforce, Inc.compare_entitiesworks around this by preferring exact name matches and checking Wikidata. With the other tools, usefind_entitiesand pass the right ID.Connections show current values only. Statements with an end date (a former CEO, say) and deprecated statements are dropped. Up to 10 values per property are returned.
Review the JSON-LD before publishing. Check the URL, logo and
sameAslinks, and add anything missing.
This project isn't affiliated with or endorsed by Google.
Troubleshooting
Problem | Fix |
Results say | The client isn't passing the env var. Check the |
| The Knowledge Graph Search API isn't enabled for the key's project, or the key's restrictions block it. |
| The key is invalid or mistyped. |
| Quota exceeded (100,000/day by default). |
Tools don't appear | Run |
First start times out | The first run downloads and builds the server. Run the |
| Without a key, only exact Wikidata name matches are profiled. Pass one of the |
Wrong entity profiled | Run |
Development
git clone https://github.com/theseoriddler/google_knowledge_panel_mcp.git
cd google_knowledge_panel_mcp
npm install # installs and builds to dist/
npm run build # recompile after editing src/
npm test # builds, starts the server and calls every tool against live dataSet GOOGLE_KG_API_KEY before npm test to include Google results. SMOKE_LIMIT=2000 npm test prints more of each response.
To try the tools interactively, use the MCP Inspector:
npx @modelcontextprotocol/inspector node dist/index.jsProject layout:
src/index.ts MCP server and tool definitions
src/knowledge.ts Google KG + Wikidata lookups, scoring, JSON-LD
scripts/smoke-test.mjs end-to-end test over stdioContributing
Issues and pull requests are welcome. Run npm test before submitting.
License
Available Tools
4 toolsanalyze_entity_prominenceAnalyze entity prominenceARead-only
Analyze the entities matched for a name and determine which has the strongest Knowledge Graph presence. Ranks them on a transparent 0-100 prominence score combining Google's result score, knowledge panel completeness, Wikipedia coverage, Wikidata depth, and linked official profiles, with a plain-English reason for each. Google data needs GOOGLE_KG_API_KEY; without it, results come from Wikidata only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entities to return. | |
| query | Yes | Name to search, e.g. "tesla" or "sara taher". | |
| types | No | Only return these schema.org types (Google results only), e.g. ["Organization"] or ["Person"]. | |
| language | No | Language code, e.g. "en", "fr". | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description usefully adds that the output is a transparent 0-100 prominence score combining Google result score, knowledge panel completeness, Wikipedia coverage, Wikidata depth, and linked official profiles, plus a plain-English reason for each. It also discloses the API-key dependency and Wikidata-only fallback, though it omits rate limits, pagination, or score stability details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses three sentences: the first front-loads the purpose, the second explains the scoring methodology, and the third states the prerequisite. Each sentence earns its place with no redundant or vague filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analysis tool with 100% schema coverage and no output schema, the description covers the important behavioral context: score composition, plain-English reasoning, and data-source fallback. It could say more about the exact return shape, but the key gaps are closed well enough for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with query, limit, types, and language all documented in the schema. The description adds no meaningful parameter semantics beyond what the schema already states, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Analyze') and resource ('entity prominence') and explains the outcome: determining which entity matched for a name has the strongest Knowledge Graph presence. It is distinguishable from get_entity and compare_entities by its ranking focus, but does not explicitly name a sibling tool for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by describing the analysis and ranking it performs, and it supplies a key prerequisite: Google data requires GOOGLE_KG_API_KEY, otherwise results come from Wikidata only. However, it gives no explicit when-to-use or when-not-to-use guidance relative to find_entities, compare_entities, or get_entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_entitiesCompare entitiesARead-only
Compare 2-5 entities side by side: types, descriptions, prominence and readiness scores, what each is missing, key facts and connections, and official profiles. Use it for same-name entities (pass their IDs from find_entities) or for competitors (pass names like "hubspot" and "salesforce"). Google data needs GOOGLE_KG_API_KEY; without it, results come from Wikidata only.
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes | Entities to compare: Knowledge Graph IDs ("/m/0dr90d"), Wikidata IDs ("Q478214"), or names (a name resolves to its top match). | |
| language | No | Language code, e.g. "en", "fr". | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint and openWorldHint, so the bar is lower. The description adds real behavioral context beyond them: the external Google KG dependency, the required API key, and that results silently narrow to Wikidata when it is absent. It does not describe result sizing beyond the 2-5 input bound.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the comparison scope and the compared dimensions, then the usage patterns, then the auth caveat. Two dense sentences with no filler, though the enumerated dimension list is long enough to slightly dilute the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully previews what comes back (types, scores, gaps, facts, connections, profiles). Combined with input formats, cardinality, use-case routing, and the API-key fallback, an agent can select and invoke this correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the accepted ID formats (KG IDs, Wikidata IDs, names) are already documented in the schema. The description nonetheless reinforces name-resolution semantics with concrete examples ('hubspot', 'salesforce') and cross-references find_entities as the ID source, adding practical value over the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (compare) and resource (entities) with an explicit 2-5 cardinality, then enumerates exactly what is compared: types, descriptions, prominence/readiness scores, gaps, key facts, connections, and profiles. This distinguishes it from siblings like get_entity or analyze_entity_prominence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete use cases with the exact argument pattern for each: same-name entities by passing IDs 'from find_entities', competitors by passing names like "hubspot" and "salesforce". It also states a prerequisite (GOOGLE_KG_API_KEY) and the degraded fallback behavior, so the agent knows when the tool will under-deliver.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_entitiesFind entitiesARead-only
Find all Knowledge Graph entities associated with a name (the entities behind Google's knowledge panels). Returns each match's Knowledge Graph ID, type, description, and Google's result score, highest first. Google data needs GOOGLE_KG_API_KEY; without it, results come from Wikidata only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of entities to return. | |
| query | Yes | Name to search, e.g. "tesla" or "sara taher". | |
| types | No | Only return these schema.org types (Google results only), e.g. ["Organization"] or ["Person"]. | |
| language | No | Language code, e.g. "en", "fr". | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover safety (readOnlyHint, openWorldHint), and the description adds genuinely new behavior: results are sorted by Google's result score highest-first, and there is a credentialed path (GOOGLE_KG_API_KEY) versus a degraded Wikidata-only fallback without it. That auth/degradation disclosure is exactly the kind of context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with the core purpose and return fields followed by the auth caveat. No filler, though the parenthetical definition could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned fields, and it discloses the auth-dependent data source. An agent can call this correctly and interpret the ranking. Only the Wikidata fallback's effect on field availability is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, query, types, and language are already fully documented in the schema, setting the baseline at 3. The description reinforces result ordering and the Google-only nature of typed results but adds no syntax or format detail beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Find all Knowledge Graph entities") and clarifies the concept as "the entities behind Google's knowledge panels." It also enumerates the returned fields, which makes the tool's scope obvious. It does not explicitly name how it differs from siblings like get_entity, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by "associated with a name" (a name-based lookup, versus the ID-based get_entity), but no alternatives are named and there is no explicit when-to-use/when-not guidance. The auth-fallback note gives operational context but not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entityGet entityARead-only
Full profile of one entity: description, detailed description, image, official site, Wikipedia/Wikidata links, facts, real-world connections (founders, CEO, HQ, products, parent company...), official social profiles, an entity-readiness checklist, and ready-to-paste JSON-LD schema. Pass an id for a specific entity, or a query to profile the top match. Google data needs GOOGLE_KG_API_KEY; without it, results come from Wikidata only.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | A Knowledge Graph ID ("/m/0dr90d", "/g/11...") or a Wikidata ID ("Q478214"). | |
| limit | No | Maximum number of entities to return. | |
| query | No | Name to search, e.g. "tesla" or "sara taher". | |
| types | No | Only return these schema.org types (Google results only), e.g. ["Organization"] or ["Person"]. | |
| language | No | Language code, e.g. "en", "fr". | en |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only and open-world safety, so the bar is lower, and the description still adds genuine behavioral context: an API-key requirement and, crucially, degraded results (Wikidata only) without it. That fallback behavior is exactly the kind of trait an agent needs and is not present in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The long opening enumeration is front-loaded and justified because no output schema exists, and the two follow-up sentences (usage mode, auth caveat) each earn their place. It is dense but not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry return-value disclosure and it does so thoroughly, plus the auth/fallback caveat. Annotations handle the safety profile. Only minor gaps remain, such as not noting the limit parameter's relevance to query-based lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented; baseline is 3. The description adds the id-vs-query selection semantics (query returns the top match) but says nothing about limit, types, or language beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with a specific verb+resource ("Full profile of one entity") and enumerates the return contents (description, facts, connections, JSON-LD, etc.), which is unusually concrete. It doesn't explicitly name find_entities as the sibling it complements, but the 'id for a specific entity, or a query to profile the top match' framing distinguishes its single-entity profiling role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States clearly when to pass an id (specific entity) versus a query (top match to profile), which is real selection guidance for the two main parameters. It also discloses the GOOGLE_KG_API_KEY requirement and the Wikidata-only fallback. It stops short of naming find_entities/compare_entities as the alternatives for other tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
analyze_entity_prominence - First observed
compare_entities - First observed
find_entities - First observed
get_entity
TDQS
Scored across 4 tools
Tools are mostly distinct: find_entities for discovery, analyze_entity_prominence for ranking, compare_entities for side-by-side comparison, and get_entity for full profiles. However, find_entities and analyze_entity_prominence both take a name and return entities, which could cause slight confusion if an agent just wants entity matches without prominence scoring.
All names use snake_case and follow a verb_noun pattern (find_entities, analyze_entity_prominence, compare_entities, get_entity). The only minor deviation is analyze_entity_prominence, which adds a qualifier to the noun, but it remains predictable and readable.
Four tools is well-scoped for a focused read-only domain; each tool has a clear purpose and no tool feels redundant. It covers discovery, analysis, comparison, and detail without bloat.
The set covers the main lifecycle: finding entities, assessing prominence, comparing, and retrieving full profiles with readiness checklists. Minor gaps exist, such as searching by entity type or domain, but these are not critical for the stated purpose.
Maintenance
Related MCP Connectors
Machine-readable entity discovery with provenance, trust and verified source evidence.
Brand visibility auditing across LLMs, AI search, and answer engines with GEO reports and scores.
SEOOracle v2 - 7 next-gen SEO tools: AI overview tracking, GEO/AEO, entity coverage.
Track where your product is listed, score its AI search visibility, and audit a domain's SEO.
Related MCP Servers
- AlicenseAqualityCmaintenanceUnifies traditional SEO and Generative Engine Optimization (GEO) for Google, Bing, Yandex, and major LLMs, providing tools for search performance analysis, citation tracking, on-page audits, and internal link graph analysis.363MIT
- AlicenseAqualityBmaintenanceEnables searching Google's Knowledge Graph for real-world entities via two tools: search by query or lookup by Machine ID, returning structured data including entity types, descriptions, and URLs.243 npm11MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Google Search Console and Google Analytics 4 through natural language, with tools for SEO analysis like anomaly detection, cannibalization detection, and opportunity scoring.16 npm1MIT
- -licenseNot gradedqualityCmaintenanceEnables AI assistants to perform comprehensive SEO and GEO measurements, including site audits, keyword research, ranking tracking, and brand visibility analysis across search engines and generative AI platforms.-