Service Overview

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.

Two product tiers

Free access

Covered Companies

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

NAV Query API

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.

Direct endpoint (free, no payment)

GET 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.

Parameters

ParameterTypeDescriptionApplies To
goldnumberGold price in USD/troy oz (e.g. 4000)ARIS, ITR, VGC, SA, LUG
cunumberCopper price in USD/lb (e.g. 6.5)IVN
u3o8numberUranium price in USD/lb U3O8 (e.g. 82)DYL
znnumberZinc price in USD/lb (e.g. 1.6)BNKR
rownumberGeneric 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)
ratenumberDiscount rate as decimal (e.g. 0.08 = 8%)All

Response shape

{
  "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.

Example calls

# 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

Interpolation behaviour

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.

Error responses

HTTPBodyMeaning
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

Qatom MCP — For Autonomous Agents

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.

NAV Query tool

FieldValue
Tool nameharcourt_nav_query_api
Tool ID77
Price$1 USD TDN per call
MCP serverhttps://mcp.m.todaq.net/mcp
DiscoveryAvailable in Qatom MCP marketplace — search by tool name or by intent

Tool input schema

{
  "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%)
}

PDF report tools (one per covered company)

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>" }

Agent wallet setup

To call Qatom-gated tools autonomously, an agent needs:

  1. A Qatom primary wallet (human-controlled, MFA-gated) — created at todaq.net
  2. An agent sandbox wallet (no MFA, funded from the primary wallet via transfer_to_agent_wallet)
  3. Sufficient TDN balance to cover the calls ($1 per NAV query, $15 per PDF report)

The agent sandbox wallet is debited automatically when a tool call succeeds. Revenue is credited to Harcourt's provider Twin in real time.

Free Chat API (Klondike Mike)

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.

POST 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).

Methodology Notes for AI Consumers

When interpreting Harcourt NAV figures, AI agents and models should be aware of:

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.