HumanToll as tools an AI assistant can call, over the Model Context Protocol: free, read-only, and no key.
Add https://quiescence.eu/humantoll/mcp to any MCP client as a remote server (Streamable HTTP). No key and no sign-up. Every tool answers with what the REST API answers — the figure, its interval, its scenario, run, caveats and sources — and tells the assistant how to quote it.
Where it stands
No figure is published yet. The tools answer with the register — products, bills of materials, materials, conflicts, countries, channels — and every figure is null, with the reason beside it. An assistant is told to say so, and not to estimate one.
The endpoint
Address
https://quiescence.eu/humantoll/mcp
Transport
Streamable HTTP, POST only — protocol 2026-07-28, and the initialize handshake of 2025-11-25 back to 2024-11-05
Key
None needed. A research key, if you have one, counts your calls per key instead of per address.
Any other client: add a remote server of type Streamable HTTP (sometimes called “http”) with this address, and no authentication.
The six tools
Each tool is one route of the REST API, answered by the same code: the same figures through the same checks, the same licence gate, the same withholding. Their descriptions are written for the model that reads them.
humantoll_product — The human toll of a product
The deaths and injuries statistically attributed to the supply chain of making one product: per unit and per kg on the material route (what its bill of materials traces — a floor), and per €1,000 on the monetary route (its industry's whole supply chain). With the bill of materials, the raw inputs and the scenario switch. Use it for "how many people are harmed making a smartphone / a croissant / a car?". Example: {"slug": "electric-car"} → metrics.deaths.material.per_unit = {value, low, high, confidence}.
Arguments:
slug(required) — The product's permanent slug, as in its page's address.
scenario — The attribution scenario. The default is the published default (S-MAX).
humantoll_compare — Two products compared
Two products drawn together under one seed: each one's figures, and the interval of their ratio with a verdict — a_larger, b_larger, or not_distinguishable. The verdict holds only when the whole paired interval lies on one side of 1: report not_distinguishable as such and never pick a winner the verdict does not give. Example: {"a": "electric-car", "b": "petrol-car"}.
Arguments:
a(required) — The first product's slug.
b(required) — The second product's slug.
metric — deaths or injuries.
scenario — The attribution scenario. The default is the published default (S-MAX).
humantoll_spend — Harm in €X of spending
The harm attributed to €X of EU households' spending in a consumption category (COICOP 2018), each read against all spending together (code 00): clearly above it, clearly below it, or not distinguishable. Categories are grouped, never ranked: most differences between them lie inside the model's uncertainty, so do not rank them either. Example: {"category": "07", "amount": 250} — €250 of spending on transport.
Arguments:
category — A COICOP 2018 category code; all of them when absent.
amount — Euros spent; every figure and its interval scale with it.
scenario — The attribution scenario. The default is the published default (S-MAX).
humantoll_explain — What carries a product's figure
The audit chain of one product's figure: what carries it, by raw material, country, harm channel and conflict on the material route, and by industry on the monetary route. Every breakdown sums to the headline. A share is a central estimate with no interval of its own — the headline carries the interval. The breakdowns are separate views of the same total: never chain them into paths (do not say which country supplied which material). A residue row is harm the run could not place. Example: {"slug": "smartphone", "depth": "summary"}.
Arguments:
slug(required) — The product's permanent slug, as in its page's address.
depth — summary: one route's breakdowns (by material, country, channel and conflict; or by industry). full: the whole audit trail — both routes, every stage, and the material quantities.
metric — deaths or injuries.
method — material (the route through the bill of materials) or mrio (per €1,000). Only with depth=summary.
scenario — The attribution scenario. The default is the published default (S-MAX).
humantoll_material — A raw material
A raw material in the register: who produces it (the publisher's counts, not the model's), which catalogue products use it, and in a published run which products its harm reaches and the share it carries of each. Example: {"slug": "cobalt"}.
Arguments:
slug(required) — The material's permanent slug, as in its page's address.
scenario — The attribution scenario. The default is the published default (S-MAX).
humantoll_search — Find a product, material, conflict, country or channel
Find the slug or code of a product, raw material, conflict, country or harm channel by name — call this first when you do not know one. Returns names and keys, no figures. Example: {"q": "coffee"} → products "roasted-coffee", "coffee-cup" and the material "coffee".
Arguments:
q(required) — Two to 64 characters.
What the assistant is told
Every result opens with its status and every figure in it written out with its interval and grade, before the JSON.
Quote a figure with its interval, grade, scenario and run, at two significant figures; an INDICATIVE figure is a range only.
Say “attributed to the supply chain of”, never “caused by”. Production phase only; every figure is a floor.
While no figure is published, say so — and never estimate one.
The daily allowance
A tool call spends one of the REST API’s 100 requests a day from one address; listing the tools and discovering the server spend nothing. Each response says how many remain. No address is stored.
HumanToll is a research project, not a commercial service. For advanced access, contact us at info@quiescence.eu. info@quiescence.eu
From a browser
MCP clients send no Origin header, and are answered. A request from a web page is answered only for an origin the operator has listed, as the protocol requires of a server — the REST API is open to every origin, if that is what a page needs.