Skip to content

Tool reference

Generated from the tool registry by scripts/gen_tools_reference.py; do not edit by hand. 8 tools are registered. Inputs are snake_case and outputs camelCase. Every result also carries resolved, notes, nextSteps and source (whose backend says whether PASTA or DataONE answered), and failures return structuredContent.error with a stable code (see Utilities).

Tool Title Family EDI API key
edi_get_metadata Read a package's EML metadata packages no
edi_get_package Get an EDI data package packages no
edi_list_entities List a package's data entities entities no
edi_list_identifiers List package identifiers in a scope discovery no
edi_list_revisions List the revisions of a package discovery no
edi_list_scopes List EDI scopes discovery no
edi_ping Check edi-mcp status core no
edi_search_packages Search EDI data packages discovery no

edi_get_metadata

Read a package's EML metadata. The package's EML, projected to compact sections: overview (abstract, keywords, dates), people (creators, contacts with ORCIDs), coverage (bounding boxes, date ranges, taxa), methods, rights and license, project and funding, and entities. Choose sections with include; long text is cut at max_text_chars and lists are capped with totals. Next: call edi_list_entities for column definitions, units and codes.

Surface packages
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/metadata/eml/{scope}/{id}/{rev}
GET gmn.lternet.edu/mn/v2/object/{pid}
GET pasta.lternet.edu/package/eml/{scope}/{id}
GET cn.dataone.org/cn/v2/query/solr/

Inputs

Name Type Required Default Description
package string yes A package: knb-lter-hbr.14.22, knb-lter-hbr.14 (newest unless revision is set), a DOI, or a portal or PASTA URL; the scope may be a site code or name (jrn.210548103). (min length 1; max length 500)
revision integer \ newest \ oldest \ null
include array of overview \ people \ coverage \ methods \
max_text_chars integer 2000 Cut abstract, methods and rights to this length. (>= 200; <= 20000)

Result fields (besides the common envelope)

Field Type Description
packageId string
revisionFrom given \ newest \
emlVersion string \ null
title string \ null
shortName string \ null
abstract string \ null
abstractTruncated boolean \ null
keywords array of KeywordSet \ null
keywordsTotal integer \ null
pubDate string \ null
language string \ null
alternateIdentifiers array of string \ null
maintenance string \ null
creators array of Person \ null
creatorsTotal integer \ null
contacts array of Person \ null
associatedParties array of Person \ null
publisher Person \ null
coverage Coverage \ null
methods Methods \ null
license License \ null
project Project \ null
entities array of EntitySummary \ null
entitiesTotal integer \ null

edi_get_package

Get an EDI data package. Overview of one package revision: title, publication date, creators, license, DOI, portal and metadata URLs, whether it is the newest revision, and its data entities with sizes and the total. Accepts package ids, series (newest unless revision is set), DOIs, portal or PASTA URLs, and site codes or scope names for the scope. Next: call edi_get_metadata for the full description or edi_list_entities for columns.

Surface packages
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/metadata/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/name/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/data/size/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/doi/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/eml/{scope}/{id}
GET gmn.lternet.edu/mn/v2/object/{pid}
GET cn.dataone.org/cn/v2/query/solr/
GET cite.edirepository.org/cite/{packageId}

Inputs

Name Type Required Default Description
package string yes A package: knb-lter-hbr.14.22, knb-lter-hbr.14 (newest unless revision is set), a DOI, or a portal or PASTA URL; the scope may be a site code or name (jrn.210548103). (min length 1; max length 500)
revision integer \ newest \ oldest \ null

Result fields (besides the common envelope)

Field Type Description
packageId string
series string scope.identifier
revision integer
revisionFrom given \ newest \
newestRevision integer \ null
isNewest boolean \ null
title string \ null
pubDate string \ null
doi string \ null
doiUrl string \ null
portalUrl string
metadataUrl string PASTA EML URL (needs an EDI API key).
creators array of string
creatorsTotal integer
license License \ null
entityCount integer All entities, including any not listed below.
totalBytes integer \ null
entities array of EntitySummary The first 100; edi_list_entities pages through all.

edi_list_entities

List a package's data entities. Every data entity (table or file) of one package revision: name, type, file name, format, byte size, record count, CSV layout and the columns with definitions, storage types, units, date formats, code lists and missing-value codes; optional SHA-1 checksums. Gives the PASTA data URL and a DataONE URL readable without a key. Next: call edi_preview_entity or edi_download_entities with an entityId.

Surface entities
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/metadata/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/name/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/data/size/eml/{scope}/{id}/{rev}
GET pasta.lternet.edu/package/data/checksum/eml/{scope}/{id}/{rev}/{entity}
GET gmn.lternet.edu/mn/v2/object/{pid}
GET gmn.lternet.edu/mn/v2/meta/{pid}
GET cn.dataone.org/cn/v2/query/solr/

Inputs

Name Type Required Default Description
package string yes A package: knb-lter-hbr.14.22, knb-lter-hbr.14 (newest unless revision is set), a DOI, or a portal or PASTA URL; the scope may be a site code or name (jrn.210548103). (min length 1; max length 500)
revision integer \ newest \ oldest \ null
entity string \ null null
include_attributes boolean true Return each entity's columns (definitions, units, codes).
include_checksums boolean false Fetch missing SHA-1 checksums (one request per entity, at most 25).
limit integer 50 Entities per page (1-200). (>= 1; <= 200)
offset integer 0 Index of the first entity (paging). (>= 0)

Result fields (besides the common envelope)

Field Type Description
packageId string
revisionFrom given \ newest \
entities array of EntityDetail
page Page
attributesElided boolean \ null

edi_list_identifiers

List package identifiers in a scope. List the package identifiers in one scope, ascending and paginated (offset/limit). The scope may be exact (knb-lter-hbr), an LTER site code (HBR) or a name ('Hubbard Brook'). Identifiers are numbers; a package is scope.identifier.revision. Next: call edi_list_revisions(package='scope.identifier') for one identifier's revisions.

Surface discovery
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/eml/{scope}
GET cn.dataone.org/cn/v2/query/solr/

Inputs

Name Type Required Default Description
scope string yes A scope (knb-lter-jrn), LTER site code (JRN) or scope name or location ('Jornada', 'Hubbard Brook'); see edi_list_scopes. (min length 1; max length 100)
limit integer 200 Identifiers per page (1-1000). (>= 1; <= 1000)
offset integer 0 Index of the first identifier (paging). (>= 0)

Result fields (besides the common envelope)

Field Type Description
scope string
identifiers array of integer Package identifiers in ascending order.
page Page

edi_list_revisions

List the revisions of a package. List every revision of one data package (scope.identifier), ascending, with the newest and oldest. Accepts a series (knb-lter-hbr.14), any revision, a DOI, a portal or PASTA URL, and site codes or scope names in place of the scope. Without an API key DataONE answers and can lag new revisions. Next: call edi_get_package(package=newestPackageId).

Surface discovery
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/eml/{scope}/{identifier}
GET pasta.lternet.edu/package/search/eml
GET cn.dataone.org/cn/v2/query/solr/
GET cn.dataone.org/cn/v2/object/{pid}

Inputs

Name Type Required Default Description
package string yes A package series or any revision of it: knb-lter-hbr.14, knb-lter-hbr.14.22, knb-lter-hbr/14, a DOI, a portal or PASTA URL; the scope may be a site code or name (jrn.210548103). (min length 1; max length 500)

Result fields (besides the common envelope)

Field Type Description
series string scope.identifier
scope string
identifier integer
revisions array of integer Every revision, ascending.
newest integer
oldest integer
newestPackageId string

edi_list_scopes

List EDI scopes. List the repository's scopes (knb-lter-hbr, edi, ...) with name, kind, LTER site code, location and package counts on PASTA and DataONE. With an API key the list comes live from PASTA; without one it is edi-mcp's dated snapshot (also edi://reference/scopes). Scope arguments elsewhere also accept these site codes and names. Next: call edi_search_packages(scope=...) or edi_list_identifiers(scope=...).

Surface discovery
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/eml

Inputs

Name Type Required Default Description
kind lter \ edi \ bulk \ project \

Result fields (besides the common envelope)

Field Type Description
scopes array of ScopeInfo
page Page
live boolean True when PASTA listed the scopes just now; false = edi-mcp's snapshot.
snapshotAsOf string Date of the snapshot that supplies names and counts.

edi_ping

Check edi-mcp status. Liveness and capability report: server version and protocol, whether an EDI API key is available and therefore which backend serves this caller (pasta with a key, dataone without), which tools need a key, and whether downloads are enabled. Never reveals the key. With check_api=true it also makes one small request to that backend to confirm the key and connectivity. Next: call edi_search_packages to find data packages.

Surface core
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/eml
GET cn.dataone.org/cn/v2/query/solr/

Inputs

Name Type Required Default Description
check_api boolean false Also make one small request to the backend serving this caller (with a key: exchange it for a token and list PASTA scopes; without: one DataONE query).

Result fields (besides the common envelope)

Field Type Description
pong ok
version string
protocolVersion string
transport stdio \ http
keyConfigured boolean True when this call has an EDI API key available (never the key itself).
keySource config \ request \
backend pasta \ dataone
keyRequiredTools array of string Registered tools that need a key and fail with auth_required without one.
downloadsEnabled boolean
downloadDir string \ null
endpoints Endpoints
api ApiCheck \ null

edi_search_packages

Search EDI data packages. Search EDI/LTER data packages by free text, scope (exact, LTER site code or name such as 'Jornada'), creator last name, temporal overlap (start_year/end_year) and bounding box; sort by relevance or publication date; paginated (offset/limit). Returns the newest revision of each package with title, DOI, coverage dates, creators and keywords. Bulk generated scopes are excluded unless include_bulk=true. Next: call edi_get_package or edi_get_metadata with a packageId.

Surface discovery
EDI API key optional (PASTA with a key, DataONE without)
Transports http, stdio
Annotations readOnly=true, destructive=false, idempotent=true, openWorld=true
Upstream endpoints GET pasta.lternet.edu/package/search/eml
GET cn.dataone.org/cn/v2/query/solr/

Inputs

Name Type Required Default Description
query string \ null null
scope string \ null null
author string \ null null
start_year integer \ null null
end_year integer \ null null
bbox array of number \ null null
sort relevance \ newest \ oldest
include_bulk boolean false Include the generated bulk scopes (ecotrends, lter-landsat, lter-landsat-ledaps; ~36k records) when no scope is given.
limit integer 10 Packages per page (1-50). (>= 1; <= 50)
offset integer 0 Index of the first result (paging). (>= 0; <= 10000)

Result fields (besides the common envelope)

Field Type Description
items array of PackageHit
page Page
totalExact boolean False on DataONE: page.total is an upper bound (superseded revisions are counted, then collapsed to one hit per package).