Skip to main content
← All documentation

Warren MOAT evaluation

Buffett-style competitive advantage scoring, AI narrative, screener, and saved reports.

framework
Warren Buffett durable competitive advantage (economic moat)
scoring
criteria count
8
max score per criterion
12.5
max total score
100
criteria
key
earnings_consistency
name
Earnings Consistency
benchmark
Steady growth, no erratic swings
key
gross_margin
name
Gross Margin
benchmark
Stable or improving gross margin over 10 years
key
net_margin
name
Net Margin
benchmark
Healthy and stable net margin
key
retained_earnings
name
Retained Earnings
benchmark
Growing retained earnings over time
key
return_on_equity
name
Return on Equity
benchmark
Consistent ROE without excessive leverage
key
debt_sustainability
name
Debt Sustainability
benchmark
Manageable debt relative to earnings
key
capex_efficiency
name
CapEx Efficiency
benchmark
Capital expenditure aligned with maintenance vs growth
key
product_durability
name
Product Durability
benchmark
Business model resilience and pricing power
verdicts
minPct
70
label
Strong Durable Competitive Advantage
minPct
50
label
Moderate Competitive Advantage
minPct
35
label
Narrow Moat — Proceed with Caution
minPct
0
label
No Clear Moat Detected
valuation signals
pe ratio
Price/earnings; sell trigger at ≥40 in the Buffett framework
forward pe
Price vs next-year estimated earnings
peg ratio
P/E divided by earnings growth; below 1 suggests growth-adjusted value
augmented payout ratio
Dividends + buybacks as % of net income
endpoints
method
GET
path
/api/stock-evaluation
auth
session
tier
Pro quota for fresh evaluation (`stock_evaluation`); cached reads are session-only
query
symbol
required ticker, e.g. AAPL
fresh
optional `1` to bypass cache and re-fetch fundamentals
response
MoatEvaluation JSON (criteria, verdict, valuation block)
method
POST
path
/api/stock-evaluation/ai
auth
session
tier
Pro (`ai_consult` quota)
body
evaluation
MoatEvaluation object from GET /api/stock-evaluation
language
optional BCP-47 language code (default en)
response
text/event-stream — Warren AI narrative markdown
method
GET
path
/api/moat-screener
auth
session
query
action
`meta` for cache stats
scoreMin
number
scoreMax
number
verdict
string
sector
string
industry
string
peMin
number
peMax
number
marketCapMin
number
marketCapMax
number
sortBy
score | symbol | pe | marketCap (default score)
sortDir
asc | desc
page
number
limit
number (default 20)
response
Paginated moat cache rows
method
GET
path
/api/moat-reports
auth
session
query
tags
optional comma-separated filter
response
User saved MOAT reports
method
POST
path
/api/moat-reports
auth
session
body
symbol
required
companyName
optional
evaluationJson
required stringified MoatEvaluation
totalScore
number
maxScore
number
verdict
string
tags
string[]
typical flow
  • MCP getMoatEvaluation { symbol: "KO" } — or GET /api/stock-evaluation?symbol=KO
  • MCP generateMoatNarrative { symbol: "KO" } — or POST /api/stock-evaluation/ai
  • MCP saveMoatReport — or POST /api/moat-reports
  • MCP screenMoat — or GET /api/moat-screener
ui path
/tools/moat-evaluation
data source
FMP or Alpha Vantage fundamentals (server-selected)

JSON API: https://trefolio.com/api/docs/warren-moat