Backends: PASTA and DataONE¶
Since 2026-07-30 every request to EDI's PASTA+ REST API must be authenticated, including reads of public data1; an anonymous request gets HTTP 403 ("Public Access … not authorized"). DataONE still serves EDI content anonymously, so edi-mcp has two backends behind one contract:
| PASTA | DataONE | |
|---|---|---|
| Used when | the call has an EDI API key | the call has no key |
| Search and listings | pasta.lternet.edu/package/search/eml and /package/eml/… |
the coordinating node's Solr index, cn.dataone.org/cn/v2/query/solr/ |
| EML and data | pasta.lternet.edu/package/… |
the member node holding the scope (gmn.edirepository.org for edi, gmn.lternet.edu otherwise), then cn.dataone.org as a fallback |
| Freshness | authoritative | replicas; new uploads can take days to appear |
Each tool produces the same output model from either backend, and every result's
source.backend says which one answered: pasta or dataone, or local when
no upstream call was made. edi_ping reports the backend that
serves the current caller.
A bad key is an error, never a downgrade¶
If a key is configured and PASTA rejects it (HTTP 401), the tool fails with
upstream_forbidden; edi-mcp does not quietly retry on DataONE, because a silent
downgrade would hide the misconfiguration and change what the results mean. A 403
with valid credentials means the package is restricted to named users or groups; it
is also upstream_forbidden, with reason: access_restricted, and a new key will not
help. See Utilities and errors.
One deliberate exception keeps answers correct rather than changing their source: PASTA's search indexes only the newest revision of each package, so a DOI of an older revision is resolved through DataONE even with a key, and the result's notes say so.
Key-only operations¶
Some EDI services have no DataONE counterpart: quality reports, provenance
(lineage), change and upload feeds, read counts and whole-package zip downloads. The
tools planned for them (see the Roadmap) will return auth_required
without a key. edi_list_scopes needs PASTA for a
live list and falls back to edi-mcp's dated scope snapshot without a key.
Caveats of the DataONE fallback¶
- Lag. The DataONE index can trail new EDI uploads and new revisions by a day or more. Results served from DataONE carry a note saying so.
- Coverage. Not every EDI scope is replicated to DataONE;
edi_list_scopesshows DataONE package counts from the snapshot, and a scope with none needs a key. - Revisions. DataONE's obsolescence links are unreliable, so edi-mcp parses each
record's revision from its identifier, keeps the highest revision per package,
and reports search totals as an upper bound (
totalExact: false). - Proxying. The member nodes proxy PASTA, so EDI could restrict them in the same way it restricted PASTA.
- Drift. DataONE's index changes without notice: which scopes are replicated, which fields can be sorted, and the order of results for filter-only queries have all changed while edi-mcp was being built. Do not rely on DataONE's result order, and set a key when you need authoritative answers.
-
EDI news, 2026-07-27. https://edirepository.org/news/news-20260727.00 ↩