MCP Tools
The kinetk MCP exposes three tools that map to the async-job lifecycle.
create_context_job
Submit an async job. Pick kind by what you want back:
Rule of thumb: a query → records (the content) or insights (the synthesized analysis).
Input
recordsandinsightsrequirequery(string).recordsalso requireslimit(integer, 100–10000) — how many records to retrieve. Jobs are billed per record, so there is no default: you choose the spend (1000is a sensible starting point). A limit above10000is rejected with a 400.insightsdoes not acceptlimit(its scan size is server-fixed).
Filters apply to the records kind. insights takes only query — its time window, scan size and platforms are managed by the service, and the MCP drops any filters/options before submit so the call still succeeds.
Returns
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.
Example agent prompt
Use kinetk to submit an
insightsjob forluxury watch culture 2026.
get_context_job_status
Cheap poll. Pass the jobId you got from create_context_job.
Returns
Status values: queued | running | completed | failed. Latency: ~300 ms — safe to poll every 2–5 seconds.
get_context_job_result
Fetch the result. Defaults to the slim envelope (token-efficient).
Inputs
Returns (slim envelope)
The envelope shape depends on kind:
Creator identity (handle/display name) and source URLs are never returned; a
creator carries only a non-identifying followerCount.
Returns (verbose)
Set verbose: true for the full untouched graph-service payload for the kind —
see the API Reference for the complete response shapes.
Pending behavior
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.
Expired
If the job’s TTL has passed (~24 h after completion), the API’s 410 surfaces as a failed envelope (the API no longer reports the kind at that point):
Resubmit via create_context_job to recompute.
Putting it together
A typical agent loop for insights:
create_context_job({ kind: "insights", query: "..." })→jobId.- If
fromCache: true, jump to step 4. get_context_job_status({ jobId })every 3 s untilstatus: "completed"(or"failed").get_context_job_result({ jobId })→ slim envelope. Passverbose: truefor the full untouched payload (more tokens).
Most agents handle this entirely autonomously once you cue them with “use kinetk.”