login
quiescence.eu
Skip to content

Connect an assistant

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.
Registry manifest
https://quiescence.eu/humantoll/mcp/server.json

The address has no trailing slash. Opened in a browser, it is this page; an MCP client that posts to it gets the server.

Connect a client

Claude Code:

claude mcp add --transport http humantoll https://quiescence.eu/humantoll/mcp

Claude (web and desktop): Settings → Connectors → Add custom connector, and paste the address.

A client configured with JSON:

{
    "mcpServers": {
        "humantoll": {
            "type": "http",
            "url": "https://quiescence.eu/humantoll/mcp"
        }
    }
}

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

What the assistant is told

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.

More