The kinetk MCP exposes three tools that map to the async-job lifecycle.
create_context_jobSubmit an async job. Pick kind based on the analysis depth you want:
intelligence_search and intelligence_discover require query (string).campaign_brief and llm_context require campaign (string — the campaign name).Common filters (work across all kinds):
If the backend has a fresh cached run for this input, status is succeeded and fromCache: true — get_context_job_result returns in O(1) on the next call.
Use kinetk to submit an
intelligence_discoverjob forluxury watch culture 2026on TikTok and Instagram over the last 30 days.
get_context_job_statusCheap poll. Pass the jobId you got from create_context_job.
Status values: queued | running | completed | failed. Latency: ~300 ms — safe to poll every 2–5 seconds.
get_context_job_resultFetch the result. Defaults to the slim envelope (token-efficient).
Skipped by default: raw vectors, full retrieval diagnostics, debug breakdowns.
The full QueryNarrativeDiscoveryResponse (or QueryIntelligenceSearchResponse for intelligence_search) — see the API Reference for the complete schema.
If the job is still queued or running when called, returns { "status": "pending" } instead of erroring. Useful for agents that want to call get_context_job_result directly and back off on pending without a separate status check.
If the job’s TTL has passed (~24 h after completion), returns the underlying 410 from the API:
Resubmit via create_context_job to recompute.
A typical agent loop for intelligence_discover:
create_context_job({ kind: "intelligence_discover", input: { query, platforms, window } }) → jobId.fromCache: true, jump to step 4.get_context_job_status({ jobId }) every 3 s until status: "completed" (or "failed").get_context_job_result({ jobId }) → slim envelope. If you need raw vectors, pass verbose: true.Most agents handle this entirely autonomously once you cue them with “use kinetk.”