DOI Resolver

Resolve a DOI to its publication details: title, authors, journal, publisher, date, volume and pages, ISSN, licence and citation count. Covers datasets too.

Pay by wallet (x402) doi-resolve

Example

Input
{
  "doi": "10.1038/nature12373"
}
Answer
{
  "doi": "10.1038/nature12373",
  "url": "https://doi.org/10.1038/nature12373",
  "issn": [
    "0028-0836"
  ],
  "type": "journal-article",
  "issue": "7460",
  "pages": "54-58",
  "title": "Nanometre-scale thermometry in a living cell",
  "volume": "500",
  "authors": [
    "G. Kucsko",
    "P. C. Maurer"
  ],
  "abstract": null,
  "language": "en",
  "published": "2013-07-31",
  "publisher": "Springer Science and Business Media LLC",
  "license_url": "http://www.springer.com/tdm",
  "container_title": "Nature",
  "reference_count": 30,
  "referenced_by_count": 1815,
  "registration_agency": "Crossref"
}

Inputs

FieldTypeRequiredWhat it is
doistringYesA bare DOI (10.1038/nature12373), a doi: prefixed string, or any doi.org URL

Output fields

How reliably each field appears in a successful answer.

FieldTypeAppears
doistringAlways (present in every successful answer)
urlstringAlways (present in every successful answer)
titlestringUsually (present for most inputs)
authorsarrayAlways (present in every successful answer)
referenced_by_countnumberUsually (present for most inputs)
registration_agencystringAlways (present in every successful answer)
issn—Always (present in every successful answer)
type—Usually (present for most inputs)
container_title—Usually (present for most inputs)
publisher—Usually (present for most inputs)
published—Usually (present for most inputs)
reference_count—Usually (present for most inputs)
volume—Sometimes (present only for some inputs)
issue—Sometimes (present only for some inputs)
pages—Sometimes (present only for some inputs)
abstract—Sometimes (present only for some inputs)
language—Sometimes (present only for some inputs)
license_url—Sometimes (present only for some inputs)

How to call it

The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.

# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
  -H "Authorization: Bearer $STRALE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "capability_slug": "doi-resolve",
    "inputs": {
      "doi": "10.1038/nature12373"
    },
    "max_price_cents": 2
  }'

Limitations

  • Two registration agencies of the eleven that exist

    Crossref and DataCite together register the large majority of DOIs, but mEDRA, JaLC, KISTI, Airiti and the EU Publications Office run their own. A DOI registered with one of those resolves at doi.org but returns not-registered here.

  • Metadata is only as complete as the publisher's deposit

    Metadata reflects the publisher’s deposit. Abstracts, licences, ORCIDs and page ranges are optional and can be absent even for major journals.

  • DataCite records are thinner than Crossref records

    The DataCite fallback path returns title, publisher, year, creators and type. Journal-specific fields (container title, volume, issue, pages, ISSN) are null because dataset DOIs do not carry them.

  • Citation count is Crossref's, not a consensus figure

    `referenced_by_count` counts citations from works deposited at Crossref. Other citation indexes can report different totals for the same paper.

    What to do instead: Call [withdrawn] for the OpenAlex figure and the citing works themselves.