SEO keyword research -- Google Suggest, intent classification, long-tail discovery, related queries. Content planning.
Single tool 'seo_research_keywords' has a well-structured input schema with proper type and description for the 'query' parameter. The tool description is comprehensive (380+ chars) and includes use cases, output structure, and anti-patterns (what NOT to use it for). However, the output schema is documented only in prose within the description rather than as a formal JSON Schema object. Parameter descriptions are present but minimal. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are declared. The tool follows verb_noun naming ('seo_research_keywords') and accepts a natural-language parameter ('query' as a string seed keyword), which aligns with chat-data-model principles. Risk classification as READ_ONLY is correct but not formally encoded in the schema.
Use this when you need keyword ideas, SEO research, or content planning data for a topic. Returns keyword suggestions and intent data in JSON. Returns: 1. suggestions array (Google autocomplete) 2. relatedQueries with modifiers (vs, for, how to, best, what is) 3. longTailKeywords array 4. searchIntent classification (informational/transactional/navigational/commercial) 5. totalKeywords count. Example output: {"query":"bitcoin trading","suggestions":["bitcoin trading platform","bitcoin trading bot","bitcoin trading for beginners"],"relatedQueries":{"vs":["bitcoin trading vs investing"],"howTo":["how to start bitcoin trading"]},"longTailKeywords":["best bitcoin trading app 2026","bitcoin trading strategy for beginners"],"searchIntent":"commercial","totalKeywords":47} Use this BEFORE writing blog posts, FOR SEO content strategy, topic cluster planning, content gap analysis, and competitive keyword research. Do NOT use for page SEO audit -- use seo_audit_page instead. Do NOT use for content extraction -- use web_scrape_to_markdown instead. Do NOT use for domain intelligence -- use domain_lookup_intelligence instead.
Output schema not formally defined in JSON Schema format. Documentation is prose-only (embedded in tool description). LLMs cannot parse expected response structure programmatically.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared in schema. Risk is noted as READ_ONLY in config but not exposed to clients via formal annotation.
Input parameter 'query' lacks format constraints (min/max length, pattern). No guidance on valid seed keyword formats or length limits.
No pagination or result-limiting parameters. Tool returns 'totalKeywords count' (47 in example) but no mechanism to cap or paginate results if dataset grows large.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2025-06-18+ | v2 |
Error handling not documented. No guidance on what happens if query is empty, malformed, or if external SEO data source fails.