add_research_column
ChatGPTStart the research column that plan_research_column priced. Takes the plan and nothing else, so what runs is exactly what was quoted. This spends the account's research budget — only call it once the user has seen the cost and agreed. A plan belongs to the list as it stood when it was priced: if the list is rebuilt or refined in between, the plan stops working and you plan again for the new list. Start each plan once — a column that is already running is not started a second time. The research runs over the list company by company; follow it with get_list, whose research_column_details show how far it has got. Answers appear per company as they land.
company_lookup
ChatGPTLook up what conclusia knows about a single company, by its website or its name. Returns the company's country, region, headcount band, industry and a short summary. Reads conclusia's own base of companies — it does not go and look at the company's site, and it does not search anything outside conclusia, so a company conclusia has never seen is simply not found. The website is the reliable way to ask: names are not unique, and a name that matches more than one company is refused rather than guessed. This is the one tool that does not need a list_id, and it changes nothing. Use it to answer a question about a company; use get_list to read the companies on a list.
create_list
ChatGPTBuild a new company list. Describe what you are looking for - the market, what a company must do to belong, which countries, roughly what size - and an analyst run builds the list, usually 4–9 minutes. With market_ids (from find_markets or get_market) the analyst starts from those markets and checks every company in them against your brief: the same build, taking minutes, so the message must still say what kind of company is wanted. Returns a list_id immediately; poll get_list (limit: 0) until turn.status is no longer "running" - turn.note says how much longer. Use refine_list, not this, to change a list that already exists.
export_list
ChatGPTExport one complete company list as an Excel file — every company and every research column, no paging. Returns a download link for the user, valid for one hour. The file is for the user: you cannot open or read it yourself. Usually the link comes back directly; if the answer says "preparing", call this tool again a few seconds later. Use this instead of paging through get_list whenever the user wants the whole list or a file.
find_markets
ChatGPTFind markets in conclusia's market tree by free text. The tree groups companies that actually compete, from broad sectors down to narrow niches, and every node carries a name, a description, keywords and an approximate number of companies. Search in English. Returns the matching nodes on every level with the path down from their sector; open one with get_market. Free, structure only, no company names. Show the user the matches before building; pass a hit's market_id to create_list's market_ids and the analyst builds the list from that market, checking every company in it against the brief.
get_list
ChatGPTRead one company list (AI-generated, can be wrong): its criteria, a page of companies and, on the first page only, a summary of the whole list, research_column_details per research column (question, shape, nothing-found answer, progress), the market-segment split and the analyst's market_brief if any. Companies are paged: ask for the next page with offset while pagination.has_more is true. pagination.hidden counts companies the plan does not show. Each company carries its segment label and the answers to the list's research columns; null means researched and nothing found, a missing key means not researched yet. A multiple-choice column records "nothing found" as an option too ("Independent" on ownership, "No Activity" on M&A); pass include_reasons: true to see which it was, per company. Use it after list_cases, or with limit: 0 to check on a list being built; turn.note says how long the run still needs. To hand the user the whole list or a file, use export_list instead of paging.
get_market
ChatGPTBrowse conclusia's market tree. Without market_id it returns the sectors. With one it returns that market: name, description, keywords, approximate size, the mix of manufacturers, traders, service and software companies, its children with their sizes, and the path up to its sector. Drill down by calling it again with a child's market_id; several very small children are summarised as one "other" row, and a single very small child is simply not shown. Sizes are approximate and every answer names the build date. Free, structure only, no company names. Same create_list handoff as find_markets: pass a market_id to create_list's market_ids and the analyst builds the list from that market.
list_cases
ChatGPTList the company lists you have in conclusia, newest activity first. Start here: every other tool needs a list_id, and this is where you get one.
plan_research_column
ChatGPTWork out what a new research column would cost before anything is started. A research column asks one question about every company on a list — "how many units do they manage", "who owns them", "do they sell to public bodies" — and researches the answer per company from the open web, so the list can then be filtered and compared on it. This tool only prices and checks the column: it starts nothing and charges nothing. It returns the number of companies, an estimated cost range, the account balance, and a plan. Show the user the cost, and call add_research_column with that plan once they agree. The plan is good for fifteen minutes.
refine_list
ChatGPTChange a list by telling the analyst what you want in plain language: add or drop a criterion, widen or narrow the geography, ask for more companies, ask a question about the list. On a list started from markets, the first refinement is what defines its criteria and checks every company against them - this is how a raw market list becomes the user's list. This starts an analyst run - usually 30 seconds to 5 minutes, longer on a list of several thousand companies; a question about the list takes seconds. It returns immediately, and you poll get_list (with limit: 0) until its turn.status is no longer "running"; each poll tells you how much longer the run probably needs and when to check again, and the poll nearest the end waits and returns the finished turn directly. Only one run per list at a time.
report_problem
ChatGPTTell the conclusia team that something the product promises could not be delivered — the list cannot be narrowed the way the user needs, an answer is wrong, a tool refuses what the user is entitled to. It reaches the team in the same place the web app's feedback button does. Tell the user what you reported: it is the honest move where a workaround would be a quiet one. The last resort, never a shortcut. Try the tool that does the job first — set_list_filters for geography and company size, refine_list for what a company must do to belong on the list, plan_research_column for a question the list cannot answer yet. Report only what you actually observed: the team reads these as product signals and cannot tell your guess from a finding, so a limitation you assume exists costs them a real investigation. This is not a support ticket, so do not promise the user a reply, and do not put anything in it the user has not effectively said themselves. One report per list every ten minutes.
set_list_filters
ChatGPTNarrow or widen a list by geography and company size without briefing the analyst — the criteria are applied to the market again under the new filter, so companies that no longer fit drop out AND companies the old filter kept out come in. It takes 30 seconds to 2 minutes, never more than 5. Country, region and company size are the ONLY dimensions a list can be filtered on — a city, postal code, radius or catchment area does not exist here and must never be reported as applied; a region (state, province, département) is the finest geography. Only the dimensions you pass change; the others keep what the list already had, and an empty array clears one. Read the current selection from get_list's criteria first. For anything else — what a company must do to belong on the list, a new criterion, more companies, a question about the list — use refine_list instead. Afterwards poll get_list (limit: 0): while it reports validation, the companies you read are still the previous version of the list.