Harcourt Valuations · API Reference
NAV Query API
Returns modelled net asset value (NAV) per share for covered mining companies at caller-specified commodity prices and discount rates. Free direct access or $1/call via Qatom MCP for production agent workflows.
Overview
The Harcourt NAV Query API gives AI agents and developers programmatic access to institutional-grade mining valuations without re-running full DCF models. Each covered company has a precomputed sensitivity matrix — a grid of NAV per share values across combinations of commodity price and discount rate — stored in Cloudflare R2. When you call the API, the Worker reads the nearest grid points and performs bilinear interpolation to return the value at your exact inputs.
No live model execution. Responses are served from precomputed matrices. Typical response time is under 50ms. The model date and version are included in every response.
Two access modes:
- Direct HTTP — free, no authentication. Use for prototyping, one-off queries, or low-volume access.
- Qatom MCP — $1 USD TDN per call. Use for production agent workflows that need autonomous, paid access with Qatom-settled billing. Discovered via the Qatom MCP marketplace; no hardcoding required.
Quick Start
1. Get Ivanhoe Mines NAV at copper $6.50/lb, 8% discount rate
curlcurl "https://reports.harcourtvaluations.ai/nav-query/ivn?cu=6.5&rate=0.08"
response{
"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."
}
2. Get Aris Mining NAV at gold $4,100/oz
curlcurl "https://reports.harcourtvaluations.ai/nav-query/aris?gold=4100&rate=0.08"
response{
"ticker": "ARIS",
"nav_per_share": 59.65,
"currency": "USD",
"model_date": "2026-06-29"
}
Base URL
https://reports.harcourtvaluations.ai
All endpoints are served from this Cloudflare Worker. No versioning prefix is used; breaking changes will be announced at harcourtvaluations.ai.
GET /nav-query/{ticker}
https://reports.harcourtvaluations.ai/nav-query/{ticker}
Returns modelled NAV per share for the specified company at your inputs. No payment required for direct HTTP access.
Parameters
Path parameter
| Parameter | Type | Description |
|---|---|---|
ticker required |
string | Lowercase ticker: ivn, aris, itr, vgc, dyl |
Query parameters
| Parameter | Type | Unit | Applies To |
|---|---|---|---|
cu * |
number | USD / lb | ivn only |
gold * |
number | USD / troy oz | aris, itr, vgc |
u3o8 * |
number | USD / lb U3O8 | dyl only |
rate required |
number | decimal (0.08 = 8%) | All tickers |
* Provide the commodity parameter that matches the ticker (see Covered Tickers below).
Currency is per company, not per commodity. ARIS is a gold miner but
its sensitivity grid is denominated in USD. IVN is a copper miner but its grid is
denominated in CAD. Always read the currency field in the response — never
infer it from the commodity type.
Response Format
JSON{
"ticker": "IVN", // Uppercase ticker symbol
"model_date": "2026-06-29", // Date model was published
"model_version": "v7", // Internal model version
"inputs": {
"cu": 6.5, // Your commodity input, echoed back
"discount_rate": 0.08 // Your discount rate, echoed back
},
"nav_per_share": 12.05, // NAV per diluted share
"currency": "CAD", // Denomination of nav_per_share
"disclaimer": "..." // Standard disclaimer string
}
Response fields
Interpolation
Each company's JSON file in R2 contains a precomputed sensitivity_matrix —
a grid of NAV per share values computed at discrete commodity prices and discount rates by
running the full DCF model at each grid point. When you call the API, the Worker:
- Loads
{ticker}.jsonfrom R2 (cached) - Finds the four nearest grid points surrounding your inputs
- Performs bilinear interpolation to compute NAV at your exact (commodity, rate) pair
- Returns the result with the currency field from the matrix
Grid boundaries
If your input is outside the grid range, the Worker clamps to the nearest edge value rather than extrapolating. For IVN, the copper price grid covers approximately $4–8/lb. Inputs significantly outside this range will return the edge grid value, not an extrapolation. Check the sensitivity table in the PDF report to see the exact grid extents for each company.
IVN example grid (copper × discount rate):
Copper: $4, $5, $6, $7, $8 per lb
Discount rate: 5%, 8%, 10%, 12%
Calling ?cu=6.5&rate=0.09 interpolates between the $6 and $7 rows and
between the 8% and 10% columns.
Error Codes
| HTTP | Error body | Meaning & fix |
|---|---|---|
404 |
{"error":"ticker_not_found"} |
Ticker not in catalog, or the JSON file has not yet been uploaded to R2 for this ticker. Check /catalog for available tickers. |
404 |
{"error":"no_sensitivity_matrix"} |
The report exists but the NAV Query API has not yet been enabled for this ticker (sensitivity matrix not built). The PDF report may still be available. |
400 |
{"error":"missing_commodity_param"} |
The required commodity price parameter was not provided. Supply ?cu=, ?gold=, or ?u3o8= depending on the ticker. |
400 |
{"error":"missing_rate_param"} |
The rate discount rate parameter is missing. Supply &rate=0.08 (or your preferred rate as a decimal). |
500 |
{"error":"json_parse_error"} |
Internal error parsing the model data. Retry once; if persistent, contact [email protected]. |
Covered Tickers
NAV currency: CAD
Commodity param:
?cu={USD_per_lb}Typical range: $4–8/lb
Example:
?cu=6.5&rate=0.08
NAV currency: USD
Commodity param:
?gold={USD_per_oz}Typical range: $2,500–6,000/oz
Example:
?gold=4000&rate=0.08
NAV currency: USD
Commodity param:
?gold={USD_per_oz}Example:
?gold=4000&rate=0.08
NAV currency: USD
Commodity param:
?gold={USD_per_oz}Example:
?gold=4500&rate=0.08
NAV currency: AUD
Commodity param:
?u3o8={USD_per_lb}Example:
?u3o8=82&rate=0.08
Coverage expanding. 35 additional models planned for July 2026. Always fetch the live catalog to get the current ticker list and which ones have sensitivity matrices enabled.
Live Catalog
https://reports.harcourtvaluations.ai/catalog
Returns the full catalog of available reports as JSON. Includes all metadata needed to build a UI or drive agent decisions about which report to purchase.
response{
"reports": [
{
"id": "ivn-nav-2026",
"name": "Ivanhoe Mines NAV Report",
"ticker": "TSX: IVN · OTCQX: IVPAF",
"commodity": "Copper · Gold · PGM",
"flag": "🇨🇦",
"nav": "C$12.05 / share",
"p_nav": "0.87×",
"qatom_hash": "d15e9e6e-...", // Qatom commodity hash for payment
"assets": "Kamoa-Kakula · Platreef · Kipushi",
"free_teaser": "Three world-class assets..."
}
// ... more reports
]
}
Qatom MCP — Agent Access
For production autonomous agent workflows, use the Qatom MCP marketplace. The agent discovers and calls the tool without hardcoding URLs, and payment is settled automatically from the agent's Qatom wallet at $1 USD TDN per call.
⬡ harcourt_nav_query_api
NAV Query API tool on the Qatom MCP marketplace. Charges $1 TDN per successful call.
| Field | Value |
|---|---|
| Tool name | harcourt_nav_query_api |
| Tool ID | 77 |
| Price | $1 USD TDN per call |
| MCP server URL | https://mcp.m.todaq.net/mcp |
| Auth | Qatom OIDC (session established by Qatom SDK) |
Input schema (Qatom MCP)
JSON{
"ticker": "ivn", // lowercase
"commodity_param": "cu", // "cu" | "gold" | "u3o8"
"commodity_price": 6.5, // numeric value in appropriate unit
"discount_rate": 0.08 // decimal
}
The response shape is identical to the direct HTTP endpoint.
Claude / Claude.ai usage
If you are using Claude with the TODAQ MCP server connected, you can call the tool directly in a Claude session:
MCP tool call// In a Claude session with mcp.m.todaq.net connected:
test_tool({
tool_id: 77,
args: {
ticker: "aris",
commodity_param: "gold",
commodity_price: 4100,
discount_rate: 0.08
}
})
PDF Report Tools (Qatom MCP)
Each covered company has its own Qatom MCP tool for purchasing the full PDF report. These tools charge $15 TDN and return a download URL for the PDF.
| Tool name | Ticker | Price | Delivers |
|---|---|---|---|
get_ivanhoe_mines_nav | IVN | $15 TDN | Full IVN NAV PDF report |
get_aris_mining_nav | ARIS | $15 TDN | Full ARIS NAV PDF report |
get_integra_resources_nav | ITR | $15 TDN | Full ITR NAV PDF report |
get_valor_gold_nav | VGC | $15 TDN | Full VGC NAV PDF report |
harcourt_dyl_nav_report | DYL | $15 TDN | Full DYL NAV PDF report |
Agent Wallet Setup
To call Qatom-gated tools autonomously (no human approval per transaction), an agent requires a funded Qatom sandbox wallet.
Setup steps
- Create a primary wallet at todaq.net. This is human-controlled and MFA-gated.
- Fund the primary wallet with USD TDN via the chargeup URL
(
load.m.todaq.net). - Transfer to agent sandbox using the
transfer_to_agent_wallettool or the TODAQ Console. The sandbox wallet requires no MFA and is the one actually debited by tool calls. - Confirm balance is sufficient. $1 per NAV query, $15 per PDF report. Set a minimum balance threshold appropriate for your workflow.
Two-wallet architecture. The primary wallet (MFA-gated) and the agent sandbox wallet are separate. Tool calls debit the sandbox. Revenue from Harcourt tool calls lands in Harcourt's provider Twin and sweeps daily. Distributions to contributors (analysts) are automatic — no invoicing required.
Chat API — Klondike Mike (Free)
Free conversational access to Harcourt's data. Powered by Claude Haiku. Returns plain-language NAV analysis, P/NAV commentary, and key catalysts. No authentication or payment required.
https://reports.harcourtvaluations.ai/chat
request{
"messages": [
{ "role": "user", "content": "What's Ivanhoe's P/NAV at copper $7/lb?" }
]
}
// Content-Type: application/json
response{
"content": [
{
"type": "text",
"text": "At copper $7/lb and an 8% discount rate, IVN's modelled NAV is approximately C$14.44/share. With the stock trading around C$10.50, that's a P/NAV of roughly 0.73× — a meaningful discount to NAV. Kamoa-Kakula's smelter is now producing sulphuric acid credits (~$1M/day), which isn't fully reflected in the market yet, partner. Want the full model for $15?"
}
]
}
The chat agent's system prompt is generated server-side from live {ticker}.json
data in R2, so it always reflects the most recently published NAV. Include conversation
history in the messages array for multi-turn sessions (max 10 turns retained
server-side).
Free Sample Report
https://reports.harcourtvaluations.ai/sample
Returns a full institutional NAV report PDF as a file download. No payment or authentication required. Use this to inspect the exact format and contents of a Harcourt report before calling the paid PDF tools.