Skip to main content
Glama

Start AI keyword research

seo_research_start

ASYNCHRONOUS. Starts a keyword-research run that mines and qualifies keywords into PENDING rows. It spends real AI budget, so call it once and then poll seo_job_status until status is COMPLETED. Returns immediately with a jobId — the keywords do NOT exist yet when this returns. Fails if a research run is already in progress. HUMAN trial accounts get one research run free; a second run returns code card_required — only a human on the account can start a plan, so stop and report instead of retrying. Costs 750c per call.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
briefYesOne or two sentences describing the niche and the customer, e.g. 'Plumbing lead generation for independent plumbers across UK cities'. Must be at least 10 characters — a bare keyword is not enough context to mine from.
projectIdYesThe project id, exactly as returned by seo_project_list (a cuid such as 'cmtjyi1q20000l204octn48ai'). Not the slug, not the display name. If you do not have one, call seo_project_list first.
targetCountNoHow many keywords to mine, 10-2000. Higher costs more AI time. Start around 200 unless told otherwise.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
jobIdYesPoll seo_job_status; the keywords do not exist yet.
startedYes
nextStepYes
projectIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing that the tool returns immediately with a jobId but keywords do not yet exist, spends real AI budget, costs 750c, fails when another run is in progress, and has human/trial account restrictions. These behavioral traits are not implied by readOnlyHint, openWorldHint, idempotentHint, or destructiveHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence carries operational weight: async behavior, budget, polling, immediate return semantics, concurrency failure, trial account rules, and cost. It is front-loaded with the most critical fact ('ASYNCHRONOUS') and proceeds logically from invocation to completion behavior to edge cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async, cost-incurring start-tool with an output schema, the description covers everything needed to call it correctly: polling workflow, jobId return, non-existence of results on return, failure modes, retry guidance, and cost. The existing output schema and annotations cover the remaining structured details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description itself does not add parameter-specific semantics, but schema description coverage is 100% and the schema already provides rich detail: examples, exact source instructions like 'exactly as returned by seo_project_list', and numeric constraints. Baseline 3 is appropriate because the description does not need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'ASYNCHRONOUS' and states a specific action and resource: 'Starts a keyword-research run that mines and qualifies keywords into PENDING rows.' This clearly distinguishes it from async siblings like seo_audit_start and seo_content_generate by naming the resource type and its output state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit operational guidance: 'call it once and then poll seo_job_status until status is COMPLETED.' It also warns against retrying by telling the agent to 'stop and report instead of retrying' on card_required, and documents the in-progress failure condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources