CRUD endpoints for canonical keyword records. JWT required.
POST
/keyword-research/JWT
Create keyword record.
GET
/keyword-research/JWT
List keywords (paginated).
GET
/keyword-research/:idJWT
Get single record.
PUT
/keyword-research/:idJWT
Update record.
DELETE
/keyword-research/:idJWT
Delete record.
POST
/keyword-research/export/:idJWT
Export tags (up to 10,000).
6. Agent Tools (18 registered)
Tool
Ext. API
Description
serp_search
Google SERP results via Serper
theme_extract
-
AI theme extraction from search results
theme_quality
-
Score theme quality (EXCELLENT/GOOD/FAIR/POOR)
keyword_group
-
Cluster related keywords
search_volume
Keyword search volume via DataForSEO
grounding_search
Google Gemini grounding search
perplexity_search
Perplexity Sonar topical map
google_grounding_serp
Google Gemini SERP grounding
keyword_planner
Google Ads Keyword Planner
semrush_keywords
Semrush related keywords
semrush_mcp
Semrush MCP reports
save_result
-
Save theme to database
report_progress
-
Update progress in Redis
get_saved_themes
-
Retrieve already-saved themes
check_theme_overlap
-
Check for duplicate themes
classify_search_intent
-
Classify search intent
semantic_cluster
-
Semantic theme clustering
assess_coverage
-
Assess niche coverage completeness
validate_and_save
-
Validate theme + save in one call
brainstorm_themes
-
AI brainstorm new theme ideas
= counts toward maxExternalApiCalls budget
7. Error Responses
{ "statusCode": 400, "error": "Bad Request", "message": "body must have required property 'seed'" }
Status
Meaning
400
Bad Request — Invalid input
401
Unauthorized — Missing or invalid auth token
404
Not Found — Job or resource not found
429
Too Many Requests — Rate limited
500
Internal Server Error
Typical Workflows
Third-Party (Agent API)
1. POST /api/v1/agent/research → jobId
2. GET /api/v1/agent/research/:id → poll
3. GET /api/v1/agent/research/:id/results → themes
MCP Pipeline (Step-by-Step)
1. POST /mcp/.../serp-data
2. POST /mcp/.../theme-ai
3. POST /mcp/.../group-keyword
4. POST /mcp/.../search-operator
5. POST /mcp/.../theme-intent