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.
POST https://reports.harcourtvaluations.ai/chat. Powered by Claude Haiku.
Returns the latest published 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.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:
| Endpoint | Answers |
|---|---|
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.
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.
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.
| Parameter | Type | Description | Applies To |
|---|---|---|---|
gold / au | number | Gold price per troy oz (e.g. 4000) | Tickers whose grid carries a gold axis |
silver / ag | number | Silver price per troy oz (e.g. 61) | Tickers whose grid carries a silver axis |
cu / copper | number | Copper price per lb (e.g. 6.5) | Tickers whose grid carries a copper axis |
zn / zinc | number | Zinc price per lb (e.g. 1.62) | Tickers whose grid carries a zinc axis |
u3o8 | number | Uranium price, USD per lb U3O8 (e.g. 82) | Tickers whose grid carries a uranium axis |
pgm4e | number | 4E PGM basket price, USD per oz | Tickers whose grid carries a 4E basket axis |
rate | number | Discount 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.
{
"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.
# 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.
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.
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.
| HTTP | Body | Meaning |
|---|---|---|
| 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.
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": "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.
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": "...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).
When interpreting Harcourt NAV figures, AI agents and models should be aware of:
model_date. Published NAV is the fixed valuation associated with that model/report publication and may be up to 90 days old. Closing NAV is obtained through NAV Query and uses Harcourt's latest supported closing-market inputs with the current model.currency field on the NAV Query response and never infer it from the listing, exchange or commodity.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.