We have packaged the method behind our research reports as an agent skill. It is called TopxAI Equity Research, it is free, and it is licensed under Apache-2.0. Install it in Claude Code, Codex, Cursor or another agent that reads Agent Skills, and the agent works the way our reports on topxea.com are made: numbers come from primary filings, each one carries a source and an evidence grade, a bull and a bear argue before any rating is set, the draft goes through two adversarial audits, and every call in the report goes into a ledger and is settled when it comes due. The full package is a direct download from TopxAI Labs, and the source is on GitHub.
Reading fast is not the same as doing research
Getting an agent to write a company analysis is easy. It reads ten filings in a minute and returns tidy paragraphs full of numbers. The trouble is in the details. An estimate shows up written as if it were a reported figure. An intraday price is treated as a close. Scenario probabilities default to 25/50/25. And the conclusions are phrased so that nothing could ever prove them wrong, which is the worst of these, because a reader cannot act on a call that cannot fail.
We made each of these mistakes in our own reports at some point, and we wrote a rule every time. There are twelve now. They sit at the top of the skill, and breaking any one of them stops the report from shipping. Five of them:
- Every key number traces to a source with a link. If it cannot be found, the report says "not verified" instead of filling the gap with an estimate.
- Every piece of evidence is graded: [A] primary filings and company disclosures, [B] major news organisations, [C] institutional estimates or our own calculation (labelled as an estimate, with the formula), [D] unconfirmed reports. No [D] input may hold up a core conclusion.
- A report has one basis date, printed on the title page in three layers: the price is the last closed session, the financials are as of a stated period end and filing date, and nothing filed after the cutoff is used.
- Every core conclusion states what would prove it wrong. If that sentence cannot be written, the conclusion is demoted to an observation.
- Valuation numbers come from one model file and its saved output. No hand arithmetic in the text.
From kickoff to publication
The pipeline has ten steps, and each one names the files it must produce and the gate it must pass. Kickoff compares the topic against other candidates, reads the lessons left by past calls, and fixes the three basis dates and the benchmark. Research runs in parallel lanes (financials, contracts, governance, peers), each writing its own notes. Separately, the editor pulls the numbers from SEC XBRL data and checks them against the notes line by line; anything that disagrees goes on a conflict list.
Before the rating is set there is a debate. A bull agent and a bear agent may cite only the notes. Each makes three points, then rebuts the other once. The timing matters. By the time the editor reaches the valuation chapter, a first story has usually formed, and hearing the strongest case on both sides first keeps that story from setting the rating on its own.
The draft then goes through two audit rounds, and the auditors are there to find errors. One lane is a skeptic whose job is to change the model's inputs until the rating flips, and to write down how far that took. Every finding gets a recorded disposition (accepted, rejected or partly changed) in the report's appendix.
Ratings you can check later
A rating covers twelve months, against a named benchmark, measured from the closing price on the publication date. Beating the benchmark by more than 15% is a buy, 5% to 15% is overweight, −10% to +5% is neutral, and trailing it by more than 10% is underweight. On the due date, anyone can tell whether the call was right.
After publication, the core conclusions, the annual rating and the monthly and quarterly outlooks all go into the ledger. The ledger is append-only. Settling a call requires the evidence and one sentence of lesson. The hit rate is hits divided by hits plus misses; calls that have not come due are left out.
We added this part after finding our own gap. When we counted the topxea.com ledger this week, 55 calls had been registered and one had been settled. Several monthly outlooks had expired and nobody had gone back to check them. Nothing was watching, so the skill now has a coverage script, desk.py, that matches new SEC filings against the falsifiers in the ledger and lists the calls that are coming due or already overdue. After backfilling, the ledger holds 69 calls; two have been settled, and both were hits. Two is far too small a sample for the hit rate to mean anything, and most of the rest come due with the earnings reports between late October and early November. The scorecard on the research membership page will be updated as they settle, misses included.
What is in the package
The method files set out the research framework: cause, process and outcome; a first-principles layer; the chain that runs from liquidity down to a single stock. There are nine-step flows for single-stock, industry and macro reports, a quality bar, and a catalogue of measurement traps. The indicator library says where to get primary data for each measure, from SEC EDGAR and FRED to BLS, Census and FINRA.
The plugin adds five role agents: research collector, bull, bear, auditor and translator. They cannot spawn agents of their own, and each hands back at most 120 words, so the editor's context holds conclusions rather than raw notes. In tools without subagents, the main agent plays the roles one after another.
Three scripts use only the Python standard library. sec.py pulls the last eight quarters of revenue, gross profit, operating income, net income, operating cash flow and capex from the SEC, and keeps the raw JSON in a local cache instead of the agent's context. We tried it on NVIDIA: the raw companyfacts response was 4.5 MB, and sec.py handed the agent 3.3 KB. ledger.py keeps the ledger and desk.py runs the coverage watch. Templates cover the kickoff note, the source cross-check, audit decisions, the pre-publication checks and the disclosures.
Installing it
In Claude Code, install the plugin to get the five agents as well:
/plugin marketplace add UnbelievableT/topxai-equity-research
/plugin install topxai-equity-research@topxai
For Codex, Cursor, Gemini CLI, OpenClaw and other agents that read Agent Skills, use skills.sh:
npx skills add UnbelievableT/topxai-equity-research
Or download the zip from the Labs page and copy skills/topxai-equity-research into your agent's skills folder (~/.claude/skills/ for Claude Code). The SEC asks every client to identify itself with a name and email; the plugin asks for one when you enable it, or you can set SEC_USER_AGENT yourself. After that, plain requests work, such as "write a deep-dive report on NVDA" or "run the coverage watch and tell me which calls are due".
What it does not do
The skill supplies the method, not market data. Prices for the coverage watch come from a CSV you provide. The scripts contact only sec.gov and data.sec.gov, send no telemetry and need no account.
A full run is expensive in tokens. A company deep dive with several research lanes, two audit rounds and a second language edition can use millions of tokens, most of them spent on reading. Decide the lanes and the budget at kickoff, and if a lane runs over, stop and ask rather than quietly cutting scope.
The ceiling is still set by the underlying model. The rules stop invented numbers and conclusions with no falsifier; they cannot stop a wrong read of an industry. That is why the ledger and the settlements are half of the method. What the skill produces is general research information, not personalised investment advice, and its ratings are research judgments, not orders.
Download and install notes are at ai.topxea.com/labs. Questions and suggestions go to GitHub issues. The reports made with this method are at topxea.com/research.
An introduction to a research method; not investment advice.