Service Overview

Harcourt Valuations produces institutional-grade Net Asset Value (NAV) reports for mining companies. Each report contains an asset-by-asset discounted cash flow (DCF) valuation, a P/NAV ratio, and selected sensitivity analysis. The underlying Excel models, model-building code, proprietary valuation surfaces and internal interpolation implementation are not distributed.

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.

Products

Free access

Covered Companies

This page does not hard-code the coverage list. Coverage changes as models are completed, and any list written here would drift from the source. The authoritative live source is:

EndpointAnswers
GET https://reports.harcourtvaluations.ai/catalog Every active covered company: name, listings, canonical company slug, primary commodity, key assets, Published NAV, P/NAV, model date, report identifier and free teaser.

Resolving a company to its API ticker. Use the API ticker published by Harcourt's catalog and API documentation. Do not derive it from a listing symbol: listing symbols and Harcourt API tickers are not always identical.

Determining supported valuation inputs. NAV Query responses and error bodies are self-describing. A successful response identifies the inputs used and any Harcourt defaults applied; an invalid parameter response identifies the supported parameters for that ticker.

NAV Query API

The NAV Query API returns a Harcourt NAV per share for a covered company. The external contract is intentionally simple:

Results are derived using Harcourt's proprietary multidimensional valuation methodology applied to full underlying model-run outputs. The methodology is designed to preserve material nonlinear effects, including taxation, across the supported parameter range. Harcourt does not expose the underlying Excel models, model-building code, proprietary valuation surfaces or internal interpolation implementation.

Endpoint

GET https://reports.harcourtvaluations.ai/nav-query/{ticker}

Machine NAV Query is $1 per successful paid query through supported agent payment rails. A query with no valuation inputs returns Closing NAV. Add any supported valuation inputs to request a Scenario NAV.

Parameters

ParameterTypeDescriptionApplies To
gold / aunumberGold price per troy oz (e.g. 4000)Tickers whose grid carries a gold axis
silver / agnumberSilver price per troy oz (e.g. 61)Tickers whose grid carries a silver axis
cu / coppernumberCopper price per lb (e.g. 6.5)Tickers whose grid carries a copper axis
zn / zincnumberZinc price per lb (e.g. 1.62)Tickers whose grid carries a zinc axis
u3o8numberUranium price, USD per lb U3O8 (e.g. 82)Tickers whose grid carries a uranium axis
pgm4enumber4E PGM basket price, USD per ozTickers whose grid carries a 4E basket axis
ratenumberDiscount rate as a decimal (e.g. 0.08 = 8%). Omit it and the grid's own base rate is used and reported in defaulted_inputs.All

This table names the supported public parameter families. The response and any validation error identify which parameters apply to the requested ticker.

Commodity axis units are carried in the axis key, and are not always USD. Most grids expose gold_usd_per_oz, but a model reporting in Canadian dollars may expose gold_cad_per_oz — the parameter name is gold either way. Read the axis key and its bounds from the axes array before sending a price, rather than assuming the unit from the parameter name. A USD gold price sent to a CAD axis is a valid number in the wrong currency and will not be refused.

Response shape

{
  "ticker":             "{ticker}",
  "valuation_type":     "closing | scenario",
  "model_date":         "YYYY-MM-DD",
  "priced_at":          "YYYY-MM-DD",
  "requested_inputs":   { "...": 0.0 },
  "defaulted_inputs":   { "...": 0.0 },
  "nav_per_share":      0.00,
  "share_price":        0.00,
  "p_nav":              0.00,
  "currency":           "{USD | CAD | AUD}",
  "method":             "Harcourt proprietary multidimensional valuation methodology",
  "disclaimer":         "..."
}

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. Read the NAV currency from /catalog or from the currency field of the /nav-query response itself; do not infer it from the commodity or the exchange.

Example calls

# Closing NAV — no valuation inputs supplied
GET /nav-query/dpm

# Scenario NAV — one caller override, Harcourt defaults the rest
GET /nav-query/dpm?gold=5500

# Scenario NAV — several caller overrides
GET /nav-query/dpm?gold=5500&silver=80&cu=7.5&rate=0.10

Substitute {ticker} with a key from /nav-debug, and read that ticker's valid input range from its matrix_rows and matrix_cols before calling. A value outside the grid is clamped to the boundary rather than extrapolated, and the response reports that per axis in out_of_grid_detail — see “Out-of-grid inputs are clamped” below.

Defaulted inputs

When the caller omits supported assumptions, Harcourt supplies the appropriate closing/default inputs for that model and reports what was supplied. A no-specification call therefore returns Closing NAV rather than the model's publication-date valuation.

When one or more assumptions are supplied, the response identifies which values came from the caller and which were defaulted by Harcourt. This makes the result auditable without exposing the internal valuation surface.

Supported-range handling

If a supplied assumption is outside Harcourt's supported range, the API returns a self-describing response indicating that the requested input is unsupported or constrained. Callers should use the returned guidance rather than infer internal bounds or model structure.

Error responses

HTTPBodyMeaning
404{"error":"ticker_not_found"}Ticker not in catalog, or its JSON is not yet uploaded.
404{"error":"nav_query_unavailable"}A report exists but NAV Query is not enabled for this ticker.
400{"error":"unsupported_parameter"}The supplied parameter is not supported for this ticker. The response identifies supported inputs.
400{"error":"invalid_request"}The request could not be interpreted. The response identifies the accepted public parameters.
500{"error":"valuation_unavailable"}The valuation service could not return a result. Not caller-correctable; report it.

Every 400 body is designed to be acted on without re-reading this page: it names the axes, the accepted parameters and, where applicable, the exact parameter to substitute.

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":         "dpm",
  "gold":           5500,   // optional
  "silver":         80,     // optional
  "cu":             7.5,    // optional
  "rate":           0.10    // optional
}

No optional valuation inputs returns Closing NAV. Any supplied valuation input returns Scenario NAV, with Harcourt defaults used for unspecified supported assumptions.

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": "...prose citing that company's current NAV, P/NAV and price deck..."
    }
  ]
}

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.