A wire protocol for AI-native equity research. Defines what a falsifiable investment hypothesis tree looks like, how it is co-designed with a user, how it is researched, and how its verdicts are scored over time.
This repository holds the normative specification of the Draw Tree Protocol — the schema, the verdict vocabulary, the aggregation rules, the validation invariants, and the client contract that governs how AI clients behave. Anyone can read this spec, implement a server, and produce trees that interoperate with the ones running on drawtree.capital.
A reference Python validator lives in drawtree/drawtree-validator.
The shipped skill bundle (SKILL.md / AGENTS.md / system prompt) lives in
drawtree/drawtree-skill.
Today's investment research lives in a kind of pre-scientific era — sell-side notes, hot takes, and AI-generated reports all share the same fragile shape: authoritative tone, no falsification criteria, no version history, no way to tell two months later whether the author was right. Different reports disagree, and there is no procedure for resolving the disagreement other than deciding which author you trust more.
Modern science walked out of that kind of culture by adopting a shared method — public procedure, repeatable experiments, falsifiable predictions. The Draw Tree Protocol is an attempt to do the equivalent for investment research: define what a research artifact must look like in order to be treated as research, not as opinion.
The protocol does not tell you what to believe about a company. It tells you what shape your belief must take before anyone (including future-you) can check it.
Five layers, strictly ordered:
Narrative → The current market consensus, plus the specific claim you contest.
H-0 → One falsifiable sentence with a time window.
Branches → 3-4 MECE branches, each bound to a named analytical framework.
Leaves → 2-4 sub-hypotheses per branch, each with an explicit kill condition.
Scenarios → Bull / Base / Bear, valued via Peer Group multiples.
The full normative spec is in SPEC.md. The JSON Schemas for
draft trees and committed trees are in schema/.
- Spec version: v0.3 (2026-06)
- License: MIT (this spec and its schemas)
- Stability: the schema is frozen for v0.3; clarifications and non-breaking additions will land before v0.4 cuts.
- Reference implementation: drawtree.capital runs the protocol over MCP (Model Context Protocol) on streamable HTTP. The same protocol could be implemented over plain REST or gRPC.
- Read
SPEC.mdend-to-end. - Validate your trees against
schema/tree.schema.jsonusing the reference validator (pip install drawtree-validator) or any JSON Schema 2020-12 implementation. - Compute conviction and expected return using the algorithm in
SPEC.md §6 Aggregation. - Honour the verdict vocabulary in
schema/verdict.md— the six states are normative, the scores are normative, the default for unresearched leaves is normative. - Ship an AI client contract derived from
drawtree-skillif you want the AI behaviour to match.
A tree produced by any compliant server can be read by any other compliant server. That is the property a protocol has to have for it to deserve being called a protocol.
Open an issue using one of the templates:
- Spec question — something in
SPEC.mdis ambiguous or contradictory. - Compliance issue — a published spec rule appears to be violated by the reference implementation.
We do not currently accept feature PRs against the spec — substantive changes are proposed in issues first, discussed publicly, then drafted into a versioned spec update.
The protocol does not define:
- Valuation by DCF / reverse DCF / DDM. These methods encode noise as
precision; they conflict with the falsifiability requirement. Use Peer
Group Valuation as defined in
SPEC.md §5. - A public directory of trees. Trees are private by default to the account that authored them. Discovery is out of scope.
- The LLM you use. Any model that can read
SKILL.mdand follow its hard rules produces compliant trees. The protocol is model-agnostic.
MIT. See LICENSE.
Draw Tree is a project of 90s.pm.investing.