Search the web for a topic and produce a structured summary with key findings, sources, and actionable takeaways. Best for quick research briefs, competitive landscape scans, and topic overviews.
Coding
kenkyu research
Try itRun deep, multi-source research queries via the kenkyu API and get back a cited answer with sources. Use for any question that benefits from a thorough, sourced investigation rather than a quick answer.
What it does
Run deep, multi-source research queries via the kenkyu API and get back a cited answer with sources. Use for any question that benefits from a thorough, sourced investigation rather than a quick answer.
The skill document
kenkyu research API
kenkyu turns a natural-language research request into a plan, fans out parallel searches (papers, books, web, twitter, reddit), filters and ranks the sources, and returns a written answer plus the sources it drew from.
Base URL: https://kenkyu.dev. All endpoints are POST with a JSON body that
must include your token.
POST /research
Body:
{
"token": "YOUR_TOKEN",
"query": "string — an opinionated natural-language research request; be specific about the sources or angle you care about",
"time_limit_s": "int — seconds the run may spend, minimum 40; longer = more thorough; allow more than 180 for reasonable responses and more than 500 for a serious question that is pivotal to what the user is trying to do",
"background": "bool, default false — false blocks until the run finishes and returns the full result; true returns {research_id} immediately, poll POST /check/research; prefer true for time_limit_s over ~60 so your HTTP call doesn't sit open",
"extra_filter": "string, default \"primary-only\" — a filter applied to every source on top of the filters the planner writes; \"primary-only\" keeps only primary sources (papers, original data, filings, listings, firsthand accounts — not journalism or summaries of them); \"for-learning\" biases toward primary sources but keeps substantive secondary ones (review papers, Wikipedia, rich explainers); \"\" applies nothing; any other string is used directly as a custom filter rule the sources must satisfy",
"followup": "int, default 0 — research_id of one of your finished runs to build on; the new run starts with that run's kept sources already loaded, the planner reads their extracts and only searches for what the new query still misses, then answers on the combined sources; use it to drill into, extend, or re-angle a prior result without paying for the ground already covered; the original run and its answer are not modified",
"no_summary": "bool, default false — when true the run stops after collecting sources: the result has the sources with their extracts but answer and detailed_answer are empty strings; use it when you want the raw material to reason over yourself and skip paying for the answer-writing LLM calls"
}
Returns:
{
"research_id": "int",
"query": "string — the request as run",
"followup_of": "int — research_id of the run this one followed up on, 0 if standalone",
"status": "complete | running | refused | failed | stopped",
"answer": "string — a short one-sentence plain-text answer, 1 to 16 words; empty if the run was made with no_summary",
"detailed_answer": "string — the full written answer, up to 500 words, markdown; empty if the run was made with no_summary",
"cost_usd": "float — what the run cost your balance",
"elapsed_s": "float",
"total_sources_considered": "int — sources fetched and judged, whether kept or not",
"errors_parsing_source": "int — non-fatal source parse failures",
"errors_executing_queries": "int — non-fatal subquery failures",
"sources": [
{
"link": "string",
"title": "string",
"summary": "string — short summary of the source",
"extract": "string — verbatim passages relevant to the query",
"content": "string — full text when available",
"weight": "high | medium | low — importance to the answer"
}
]
}
Errors: 401 invalid token; 402 balance too low (/research requires a balance
above $10); 422 the planner refused the query (detail says why — rephrase and
retry); 404 the run failed (detail holds the error).
POST /check/research
Body:
{
"token": "YOUR_TOKEN",
"research_id": "int — from a background: true research call",
"include_excluded_sources": "bool, default false — when true and the run is complete, also returns an excluded_sources array of sources that were fetched but not used in the answer"
}
Returns: while the run is in progress, {research_id, query, status, error, created_at, time_limit_s} with status one of running | refused | failed | stopped. Once status is complete, the same full result shape as /research
(plus excluded_sources if you asked for it). Poll every few seconds until the
status leaves running.
POST /researches
Body: just {"token": "YOUR_TOKEN"}.
Returns every run you own, newest first:
[
{
"research_id": "int",
"query": "string",
"followup_of": "int — research_id this run followed up on, 0 if standalone",
"status": "complete | running | refused | failed | stopped",
"created_at": "float — unix epoch seconds",
"time_limit_s": "int",
"icon_url": "string — cosmetic icon, may be empty"
}
]
Use it to find a research_id you lost, see which runs are still running, or pick
a finished run to pass as followup. Fetch a run's full result (answer, sources)
via POST /check/research.
POST /user
Returns account info for the token, including balance_usd. Check it before
starting runs; /research needs a balance above $10.
Related skills
Search academic literature and return structured, source-grounded results for questions about methods, markers, findings, or representative figures. Use this...
Get a synthesized 30-day research summary from Reddit, X, YouTube, and the web.
Produce current, cited multi-source research briefs
literature retrieval and single-pdf analysis for academic research. use when the user asks to find papers by topic, author, keyword, or latest papers in the...
Generate likely thesis, dissertation, undergraduate paper, or graduation-project defense questions and strong reference answers from a user's complete thesis...