API & MCP access

Research Intensity (RI/RIS/HRI) for 118 elements and thousands of research topics, for developers and agents.

Getting a key

Create a free account, then generate a key from your account page. Send it as a bearer token:

curl -H "Authorization: Bearer elk_live_..." https://www.elements-live.com/v1/elements/Fe

What's free vs. gated

Current element scores need no key at all; element history and topic search are free with any key — this is the open, citable tier meant for indexing and agent grounding. Topic/keyword data (/v1/subjects/...) and paper lists need a Personal account, and the Lab a Professional one, the same plans that show them on the site; all of them can also be paid per call with no account at all. History resolution follows your plan, as on the site: yearly with any key, monthly from Personal, daily element history from Professional (?resolution=). HRI is also a Personal feature: below Personal it comes back as null, with a note saying where to get it. Every response carries a canonical_url for attribution and a notes block flagging how each metric should (and shouldn't) be read — see methodology for the full explanation.

REST endpoints

EndpointWith a keyWithout a keyReturns
GET /v1/research?q=Personal$0.05Start here: communities + three reading lists for a question or paper (per page)
GET /v1/elementsNo keyFreeAll 118 elements
GET /v1/elements/<symbol>No keyFreeOne element
GET /v1/elements/<symbol>/historyFree$0.05Full history (yearly; monthly on Personal, daily on Professional)
GET /v1/subjects/search?q=Free$0.01Resolve a query to a subject id
GET /v1/subjects/<type>/<id>Personal$0.01Topic/keyword RI/RIS/HRI
GET /v1/subjects/<type>/<id>/historyPersonal$0.10Full history (yearly or monthly)
GET /v1/subjects/<type>/<id>/elementsPersonal$0.10Elements most associated with the topic (top 10)
GET /v1/elements/<symbol>/papersPersonal$0.02 (up to 20 papers), $0.10 (up to 100)Top papers for an element
GET /v1/subjects/<type>/<id>/papersPersonal$0.02 (up to 20 papers), $0.10 (up to 100)Top papers for a topic

Research search: one call for a literature question

GET /v1/research?q=<question>, or the MCP tool research (listed first for agents), takes a question in plain words, or ?paper= a DOI or title to start from. It returns the research communities and element sub-communities the question is about, with why each matched and whether it is rising, and reading lists in three lenses: foundational (the classics the question's own papers cite most, found by citation, not keywords), now (highest impact, young papers' citations projected) and newest (the last two years). Each paper has a DOI and a one-line reason. With a key it needs a Personal account. $0.05 per page without a key.

  • ?page_size= sets papers per lens (1–10, default 10); ?lenses=foundational,now picks lenses.
  • Each page is one call. The response's next gives page 2's URL and price before you ask for it; pages run to 5.
  • Matching reads community descriptions and paper titles, so shorthand such as LLZO works; papers whose titles carry the question's words lead each list. Words found nowhere come back in unmatched_terms. A question nothing matches is a 404 and never charged.

Lab quote: price a research question

Describe the papers you want with a filter and get back how many match, how they spread over the years and over research communities, and a binding price for each deliverable. GET /v1/lab/quote?q=..., POST /v1/lab/quote with {"query": ...} or {"markdown": ...} (the filter in a ```query block), or the MCP tool lab_quote. With a key, the Lab needs a Professional account. $0.01 per quote without a key.

+Li +Co year:2015..2026
(Nb OR Ta) +superconduct*
+"lithium niobate" -O
  • +term or a bare term is required; -term excludes; (a OR b) accepts either; "two words" is one exact topic name; word* expands over topic names (up to 25); year:2015..2026, year:2020.. or year:2024.
  • Terms are element symbols or names and our topic names. A term we don't know is listed under ignored, never silently dropped.
  • Matches are papers mapped to every required term. Papers map to their headline elements and topics, so a narrow AND can be 0; the quote then lists the nearest broader queries under broader.
  • The same query on the same data gives the same numbers, prices and quote_id. Above 2,000 matches, years and communities come from a fixed sample (flagged); above 100,000 matches the packet is a licence, not a price.
  • An unusable query (400) or a data error (503) is never charged.
  • Buying: GET /v1/lab/run?quote_id=...&depth=papers_20 (or papers_100), POST /v1/lab/run, or the MCP tool lab_run returns the top papers matching the quoted query, ranked by impact. It costs the depth's quoted price less the $0.01 the quote cost. An expired, edited or stale quote (the data updated since) is refused before any payment is asked.

Pay per call (x402), no account

Agents and scripts without a key can pay for each call in USDC on Base or Solana using x402. Call any priced endpoint without a key: the 402 response's PAYMENT-REQUIRED header lists the price and how to pay. Sign the payment with an x402 client and repeat the request with a PAYMENT-SIGNATURE header; the receipt comes back in PAYMENT-RESPONSE. On the MCP server the same works inside the tool call: the unpaid call returns the payment terms, and the paid call carries the payment in params._meta["x402/payment"].

  • You pay only for answers. An unknown id, a topic with no element links, or a temporary data error is never charged, even when a signed payment was sent.
  • Machine-readable list of priced calls: /.well-known/x402; each operation in the OpenAPI spec also carries x-payment-info.
  • MCP tools: lab_quote $0.01, lab_run the quoted price of the depth, less the $0.01 quote credit, search_subjects $0.01, get_subject_ri $0.01, get_subject_history $0.10, get_subject_papers $0.02, get_element_papers $0.02, research $0.05.

Paper lists

The paper endpoints return title, DOI, venue, year, citations and a link — enough to ground an answer or build a reading list, plus the curation behind each paper's place: impact_score (the ranking score, with young papers' citations projected), citation_percentile and cluster. Accepts ?sort=impact|newest|foundational (foundational = most-cited first), ?limit= (default 20, max 100), and on the element route ?keyword=. Three things to know:

  • Only the top 100 papers per entity are ranked at all, and there is no pagination past them — this is what the upstream pipeline publishes, not a paywall lever. total_ranked is how many are reachable here; total_papers (topics only) is how many the topic really has. If you need the whole corpus, that's a bulk export.
  • No abstracts. The DOI is the pointer to the source of record.
  • Don't re-sort by ris_contribution. It's the paper's contribution weight toward that entity's aggregate score, not a measure of the paper's importance. rank is the real ordering — citation impact with a projection for papers too recent to have accrued citations yet.

Full machine-readable reference: /v1/openapi.json.

MCP server

Add https://www.elements-live.com/mcp as a remote MCP connector with your key in the Authorization header. Tools: get_element_ri (no key needed), search_subjects (free with a key), and get_subject_ri, get_subject_history, get_subject_papers, get_element_papers (Personal, or paid per call without a key). The paper tools are the grounding ones — use them when the question is what to read, not how active a topic is.

Agent skill

A ready-made skill teaches your AI assistant which tool to call, how to read RI, RIS and HRI without misquoting them, and how to cite them. Download elements-live-skill.zip and upload it in Claude's skill settings, or drop the folder into ~/.claude/skills/ for Claude Code. The skill checks the latest version itself and tells you when there is a newer one.

Bulk / Enterprise data

Enterprise API access, or the full corpus rather than per-call access? Contact us.