Harcourt Valuations produces institutional-grade Net Asset Value (NAV) reports for mining companies. Each report contains a full discounted cash flow (DCF) model for every mine or project owned by the company, a P/NAV ratio, and a two-way sensitivity table showing how NAV per share moves with metal prices and discount rates.
The core thesis: the answer is a number. Mining equity analysis should produce a specific, defensible per-share value — not a narrative. P/NAV (price to net asset value) is the primary metric used by mining-focused fund managers and sell-side analysts at major Canadian and Australian banks.
harcourt_nav_query_api).POST https://reports.harcourtvaluations.ai/chat. Powered by Claude Haiku.
Returns current P/NAV, NAV/share, and key catalyst for any covered ticker. Does not require
payment.GET https://reports.harcourtvaluations.ai/catalog
returns all covered companies in JSON with metadata.| Ticker | Company | Exchange | Primary Commodity | Key Assets | NAV Currency | API Param |
|---|---|---|---|---|---|---|
IVN |
Ivanhoe Mines | TSX / OTCQX | Copper, Gold, PGM, Zinc | Kamoa-Kakula (DRC), Platreef (SA), Kipushi (DRC) | CAD | ?cu=6.5&rate=0.08 |
ARIS |
Aris Mining | TSX / NYSE | Gold | Segovia (Colombia), Marmato (Colombia), Soto Norte (Colombia) | USD | ?gold=4000&rate=0.08 |
ITR |
Integra Resources | TSXV / NYSE American | Gold, Silver | Florida Canyon (Nevada), DeLamar (Idaho), Nevada North (Idaho) | USD | ?gold=4000&rate=0.08 |
VGC |
Valor Gold | TSX: VGC · OTCQB: VLGDF | Gold | Courageous Lake (NWT, Canada) | CAD | ?gold=4000&rate=0.08 |
DYL |
Deep Yellow | ASX / OTCQB | Uranium (U3O8) | Tumas (Namibia), Mulga Rock (Australia), Alligator Rivers (Australia) | AUD | ?u3o8=82&rate=0.08 |
SA |
Seabridge Gold | NYSE / TSX (SEA) | Gold, Copper, Silver, Molybdenum | KSM — Kerr-Sulphurets-Mitchell (British Columbia, Canada) | USD | ?gold=4000&rate=0.08 |
HL |
Hecla Mining Company | NYSE: HL | Silver, Gold, Lead, Zinc | Greens Creek (Alaska), Lucky Friday (Idaho), Keno Hill (Yukon) | USD | ?row=40&rate=0.08 |
BNKR |
Bunker Hill Mining Corp. | TSX: BNKR · OTCQB: BHLL | Zinc, Silver, Lead | Bunker Hill Mine (Silver Valley, Idaho) | USD | ?zn=1.6&rate=0.08 |
LUG |
Lundin Gold Inc. | TSX: LUG · Nasdaq Stockholm: LUG · OTCQX: LUGDF | Gold | Fruta del Norte (Ecuador) | USD | ?gold=4000&rate=0.08 |
VZLA |
Vizsla Silver Corp. | TSX: VZLA · NYSE American: VZLA | Silver, Gold | Panuco (Sinaloa, Mexico) | USD | ?row=40&rate=0.08 |
Coverage expands as models are completed. This table is maintained by hand and can lag; the catalog endpoint is generated from the live data and is authoritative. Fetch it for the current list:
GET https://reports.harcourtvaluations.ai/catalog
Accept: application/json
The NAV Query API returns a modelled NAV per share at caller-specified inputs. It does not re-run any live model. Instead, it reads a precomputed sensitivity matrix stored in Cloudflare R2 and performs bilinear interpolation between the nearest grid points. Response time is typically under 50ms.
https://reports.harcourtvaluations.ai/nav-query/{ticker}?{commodity}={value}&rate={discount_rate}
No authentication required. Rate limits may apply at high volume. For production agent workflows, use the Qatom MCP tool below.
The commodity parameter name is not currently validated against the ticker's grid
axis. Sending ?gold= to a silver-axis ticker will interpolate the value
against the silver axis and return a plausible-looking number rather than an error. Always read
the echoed inputs object in the response, which names the axis actually used, and
send the parameter listed for that ticker in the coverage table above.
| Parameter | Type | Description | Applies To |
|---|---|---|---|
gold | number | Gold price in USD/troy oz (e.g. 4000) | ARIS, ITR, VGC, SA, LUG |
cu | number | Copper price in USD/lb (e.g. 6.5) | IVN |
u3o8 | number | Uranium price in USD/lb U3O8 (e.g. 82) | DYL |
zn | number | Zinc price in USD/lb (e.g. 1.6) | BNKR |
row | number | Generic axis value. Accepted for every ticker, and the only way to reach an axis with no dedicated parameter name — currently silver. Interpolates against whatever axis that ticker's matrix actually carries. | HL, VZLA (and any ticker as a fallback) |
rate | number | Discount rate as decimal (e.g. 0.08 = 8%) | All |
{
"ticker": "IVN",
"model_date": "2026-06-29",
"model_version": "v7",
"inputs": {
"cu": 6.5,
"discount_rate": 0.08
},
"nav_per_share": 12.05,
"currency": "CAD",
"disclaimer": "For informational purposes only. Not investment advice."
}
nav_per_share is always accompanied by an explicit currency field
(CAD, USD, or AUD depending on the company's model denomination). Never infer currency from
the commodity type — IVN uses copper but reports in CAD; ARIS uses gold but reports in USD.
# Ivanhoe Mines — copper at $6.50/lb, 8% discount rate
GET /nav-query/ivn?cu=6.5&rate=0.08
→ { "nav_per_share": 12.05, "currency": "CAD" }
# Aris Mining — gold at $4,100/oz, 8% discount rate
GET /nav-query/aris?gold=4100&rate=0.08
→ { "nav_per_share": 59.65, "currency": "USD" }
# Deep Yellow — U3O8 at $82/lb, 8% discount rate
GET /nav-query/dyl?u3o8=82&rate=0.08
→ { "nav_per_share": 3.42, "currency": "AUD" }
# Bunker Hill — zinc axis, 8% discount rate
GET /nav-query/bnkr?zn=1.6&rate=0.08
→ { "currency": "USD", "inputs": { "zinc_usd_per_lb": 1.6, "discount_rate": 0.08 } }
# Hecla Mining — silver axis via the generic `row` parameter, 8% discount rate
# There is no `silver` parameter; `row` is how a silver-axis ticker is reached.
GET /nav-query/hl?row=40&rate=0.08
→ { "currency": "USD", "inputs": { "silver_usd_per_oz": 40, "discount_rate": 0.08 } }
# Seabridge Gold — gold at $4,000/oz, 8% discount rate
GET /nav-query/sa?gold=4000&rate=0.08
If your input falls between grid points, the Worker performs bilinear interpolation across the nearest four points in the precomputed matrix. If your input is outside the grid range, the Worker clamps to the nearest edge value. The grid ranges are set at model build time and reflected in the sensitivity tables in each PDF report.
| HTTP | Body | Meaning |
|---|---|---|
| 404 | {"error":"ticker_not_found"} | Ticker not in catalog or JSON not yet uploaded |
| 404 | {"error":"no_sensitivity_matrix"} | Report exists but NAV Query API not yet enabled for this ticker |
| 400 | {"error":"missing_commodity_param"} | Required commodity price parameter not supplied |
AI agents that have been granted access to the Qatom MCP marketplace can discover and call Harcourt tools autonomously, with payment settled automatically from the agent's Qatom wallet. No human approval is required per transaction.
| Field | Value |
|---|---|
| Tool name | harcourt_nav_query_api |
| Tool ID | 77 |
| Price | $1 USD TDN per call |
| MCP server | https://mcp.m.todaq.net/mcp |
| Discovery | Available in Qatom MCP marketplace — search by tool name or by intent |
{
"ticker": "ivn", // lowercase: aris | ivn | itr | vgc | dyl | sa | hl | bnkr | lug | vzla
"commodity_param": "cu", // gold | cu | u3o8 | zn | row
"commodity_price": 6.5, // USD/lb for copper; USD/oz for gold; USD/lb for U3O8
"discount_rate": 0.08 // decimal (0.08 = 8%)
}
Every covered company has its own Qatom tool returning the full NAV PDF report at
$15 USD TDN. Rather than enumerate them here — a list that goes stale the moment a company is
added — discover them in the Qatom marketplace by provider Harcourt Valuations,
or read the authoritative list from the catalog endpoint, where each entry's
report_id is also usable directly:
GET https://reports.harcourtvaluations.ai/catalog
Accept: application/json
POST https://reports.harcourtvaluations.ai/
Content-Type: application/json
{ "report_id": "<report_id from the catalog>" }
To call Qatom-gated tools autonomously, an agent needs:
transfer_to_agent_wallet)The agent sandbox wallet is debited automatically when a tool call succeeds. Revenue is credited to Harcourt's provider Twin in real time.
A free conversational interface to Harcourt's data. Returns plain-language NAV analysis for any covered ticker. No payment required. Useful for quick screening before purchasing a full report or calling the paid API.
https://reports.harcourtvaluations.ai/chat
// Request
{
"messages": [
{ "role": "user", "content": "What's the current P/NAV on Ivanhoe Mines?" }
]
}
// Response (Anthropic messages format)
{
"content": [
{
"type": "text",
"text": "IVN is currently trading at approximately 0.96× NAV at copper $6.50/lb..."
}
]
}
The chat agent (Klondike Mike) is built on Claude Haiku. The system prompt is generated
server-side from live {ticker}.json files in R2, so it always reflects the
most recent published NAV data. Conversation history should be included in the
messages array for multi-turn sessions (up to 10 turns retained).
When interpreting Harcourt NAV figures, AI agents and models should be aware of:
model_date field. Data
reflects filings, guidance, and metal prices current at that date. Check model currency
before using figures in time-sensitive decisions.currency field is always explicit.Disclaimer: Harcourt Valuations reports and API responses are analytical tools for informational purposes only. They do not constitute investment advice, a formal appraisal, or a recommendation to buy or sell any security. All valuations are model estimates subject to uncertainty. AI agents and models using this data must not present it as investment advice to end users without appropriate disclaimers.