Skip to main content
The connector exposes a set of tools that your assistant calls on your behalf. You don’t call these directly. You ask in natural language, your assistant picks the right tools and chains them together, and you read the result. This page documents what each tool does, what it takes, and what it returns, so you understand what is happening and can guide your assistant when you want to. Kepler runs are asynchronous, so the tools fall into four groups: start a run, wait for its result, manage existing runs, and look up reference data without a run.

Tools at a glance

ToolGroupWhat it doesBlocks?
run_financial_researchStartBegin a new research run or model requestNo
continue_researchStartSend a follow-up into an existing conversationNo
get_run_resultWaitWait for a run and return its final resultYes
continue_waitingWaitResume waiting on a long runYes
is_run_doneWaitOne-shot check of whether a run has finishedNo
cancel_runManageStop a running conversationNo
list_recent_runsManageList your recent conversationsNo
lookup_companyLook upResolve a company and list its filings and transcriptsNo
get_workbook_dataLook upExport a workbook sheet as CSVNo

How your assistant chains the tools

Because a run continues in the background, starting one and reading its result are two separate steps. Your assistant orchestrates the loop for you: A run usually finishes in a few minutes, though deeper models can take longer. The waiting tools hold the connection open and stream progress while Kepler reads sources, so you see narration in the conversation rather than a spinner.

Start a run

run_financial_research

Start a new Kepler run. This is the entry point for any research question or model request.
ParameterTypeRequiredDescription
requeststringYesThe research question or artifact request in natural language. Include the company, the periods, and any structure or formatting preferences.
Returns immediately with a conversation_id and a status of running. The run itself continues in the background. Your assistant then calls get_run_result to wait for the answer.
{
  "conversation_id": "c_8f3a…",
  "status": "running",
  "next_step": "Call get_run_result with this conversation_id.",
  "conversation_link": "https://app.kepler.ai/c/8f3a…"
}

continue_research

Send a follow-up into an existing conversation. Refine a model, ask about prior results, or extend the research. The agent keeps full context from the earlier run.
ParameterTypeRequiredDescription
conversation_idstringYesThe conversation to continue.
messagestringYesThe follow-up request in natural language.
Returns a conversation handle, the same shape as run_financial_research. Follow it with a wait.

Wait for results

get_run_result

Fetch a run’s final result. It blocks while the run is still going and streams progress while it waits. Finished runs return immediately, so this is also how your assistant pulls the result of an earlier run. Your assistant calls this right after starting or continuing a run.
ParameterTypeRequiredDescription
conversation_idstringYesThe conversation to wait on.
A wait holds the connection open for a few minutes. A very long run can come back with status: running before it finishes. That is expected, and your assistant resumes with continue_waiting. The returned object carries everything about the result:
FieldTypeDescription
statusstringrunning, completed, failed, or access_denied.
answerstringThe final answer text, with inline citation links, when completed.
failurestringThe reason, when status is failed.
recent_progressarrayThe latest narration updates from the run.
citationsarrayThe sources cited in the answer (see citation shape).
all_sourcesarrayEverything Kepler consulted, cited or not, newest period first.
workbooksarrayAny workbooks the run produced (see workbook shape).
sourcingobjectA citation-coverage report (see sourcing report).
conversation_linkstringA deep link to the conversation in the Kepler app.

continue_waiting

Resume waiting after get_run_result returned running. Identical blocking behavior, used for follow-up waits on long runs. Your assistant calls it in a loop until the run completes or fails.
ParameterTypeRequiredDescription
conversation_idstringYesThe conversation to keep waiting on.
Returns the same shape as get_run_result.

is_run_done

A one-shot, non-blocking check of whether a run has finished. Returns right away. This is a status check, not a polling loop. To actually get the result, blocking on a running run or fetching a finished one, use get_run_result.
ParameterTypeRequiredDescription
conversation_idstringYesThe conversation to check.
Returns done (boolean) and the current status.

Manage runs

cancel_run

Stop a running conversation, for example when you changed your mind, mistyped a ticker, or started a duplicate. Non-destructive: the conversation and any partial results survive, and continue_research can re-engage it with full context. No effect on finished runs.
ParameterTypeRequiredDescription
conversation_idstringYesThe running conversation to stop.
Returns the conversation_id and a status of cancelling.

list_recent_runs

List your most recent Kepler conversations. Useful for finding an earlier run, such as “the Netflix model from yesterday,” to continue or fetch results from.
ParameterTypeRequiredDescription
limitintegerNoMaximum conversations to return. Default 10, clamped to 1 through 25.
Returns a list of runs, newest first, each with a conversation_id, title, created and updated timestamps, and a conversation_link.

Look up reference data

lookup_company

Resolve a company and list the SEC filings and earnings-call transcripts Kepler has on file. Instant, with no run required. It answers questions like “is the Q3 call available?”, “when did they last file a 10-K?”, or “does Kepler cover this company?”. It returns metadata only. For the contents of a filing, the numbers, quotes, or analysis, run a research request instead.
ParameterTypeRequiredDescription
companystringYesCompany name, ticker symbol, or SEC CIK.
form_typesstringNoComma-separated SEC form filter, for example "10-K,10-Q".
limitintegerNoMaximum filings and transcripts to list. Default 10, clamped to 1 through 50 each.
Returns:
FieldTypeDescription
statusstringok or no_match.
companyobjectThe resolved match: cik, name, ticker, total_filings, last_filing_date.
other_matchesarrayAlternative matches when the query is ambiguous, each with cik, name, ticker.
filingsarrayAvailable filings, each with form_type, filed_date, period_end_date, and fiscal_period (for example Q1 FY2026).
transcriptsarrayAvailable earnings-call transcripts, each with title, fiscal_period, and event_date.

get_workbook_data

Get the full cell data of one workbook sheet as CSV (RFC 4180), for downstream analysis beyond the tables shown in a result. Omit sheet_name to list a multi-sheet workbook’s sheets first.
ParameterTypeRequiredDescription
workbook_idstringYesWorkbook id from a run result.
sheet_namestringNoSheet to export, case-insensitive. Optional when the workbook has a single sheet.
Returns the sheet as CSV text, alongside the workbook_id, the workbook name, and the list of available sheets.

Result shapes

The result-bearing tools share a few nested structures. Knowing the field names helps you read what your assistant brings back, and ask it for more.

Citations and sources

Each entry in citations and all_sources describes one source:
FieldTypeDescription
nintegerThe citation number, matching the inline marker in the answer (citations only).
labelstringA human-readable source label, for example Apple 10-K (FY2024).
urlstringA link to the source, when one is available.
kindstringThe source type: filing, transcript, market-data, presentation, news, web, and a few others.
citations are the sources actually referenced in the answer. all_sources is everything Kepler consulted, whether cited or not, ordered newest period first.

Workbooks

Each workbook in a result includes:
FieldTypeDescription
workbook_idstringThe id to pass to get_workbook_data.
namestringThe workbook title.
sheetsarrayThe sheet names in the workbook.
linkstringA link to open the workbook in the Kepler app.
download_urlstringA link to download the workbook as .xlsx.

Sourcing report

The sourcing object summarizes how much of the answer is backed by citations:
FieldTypeDescription
cited_countintegerThe number of distinct figures cited.
uncited_figuresintegerThe count of numbers in the answer with no citation.
fully_citedbooleanWhether every number in the answer is cited.
Lead with this when work has to be right: it tells you, at a glance, whether an answer is fully sourced before you rely on it.
Tool names, parameters, and behavior are set by the connector and may evolve. Your assistant always sees the current definitions when it connects, so you don’t need to track changes yourself. For the canonical list, point your client at the connector and read its advertised tools.