Tool reference¶
Generated from the tool registry by scripts/gen_tools_reference.py; do not edit by hand. 20 tools are registered; neon_download_files is offered only over stdio, so HTTP deployments list one fewer. Inputs are snake_case; NEON's camelCase spellings (productCode, startDateMonth) are accepted too. Every result also carries resolved, notes, nextSteps and source, and failures return structuredContent.error with a stable code (see Utilities).
| Tool | Title | Family | Token |
|---|---|---|---|
neon_download_files |
Download NEON files | data | required |
neon_find_locations |
Find NEON locations | locations | no |
neon_get_availability |
Get NEON data availability | catalog | no |
neon_get_citation |
Cite NEON data | releases | no |
neon_get_document |
Get a NEON document | documents | no |
neon_get_location |
Get a NEON location | locations | no |
neon_get_product |
Get a NEON data product | catalog | no |
neon_get_prototype_dataset |
Get a NEON prototype dataset | prototype | no |
neon_get_release |
Get a NEON data release | releases | no |
neon_get_sample |
Get a NEON sample | samples | required |
neon_get_site |
Get a NEON field site | catalog | no |
neon_graphql |
Run a NEON GraphQL query | graphql | no |
neon_list_files |
List NEON data files | data | required |
neon_list_releases |
List NEON data releases | releases | no |
neon_list_sample_classes |
List NEON sample classes | samples | no |
neon_ping |
Check neon-mcp status | core | no |
neon_search_products |
Search NEON data products | catalog | no |
neon_search_prototype_datasets |
Search NEON prototype datasets | prototype | no |
neon_search_sites |
Search NEON field sites | catalog | no |
neon_search_taxonomy |
Search NEON taxonomy | taxonomy | no |
neon_download_files¶
Download NEON files. Download data files (or package ZIPs), a prototype dataset's files, or a NEON document into the configured download directory (stdio only; data files need a token). The plan is checked against file/byte caps before any transfer; MD5s are verified; identical existing files are skipped. Next: read the CSVs (pandas.read_csv) and cite with neon_get_citation.
| Surface | data |
| NEON API token | required for NEON data files; prototype and document downloads need none |
| Transports | stdio |
| Annotations | readOnly=false, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /data/package/{productCode}/{siteCode}/{yearMonth}GET /prototype/data/{uuid}GET /documents/{specNumber}POST /data/query |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
product |
string \ | null | null | |
site_codes |
array of string \ | null | null | |
start_month |
string \ | null | null | |
end_month |
string \ | null | null | |
package |
basic \ |
expanded |
"basic" |
|
release |
string \ | null | null | |
include_provisional |
boolean | true | Include PROVISIONAL (unreleased) months. | |
kind |
data \ |
variables \ |
readme \ |
sensor_positions \ |
table |
string \ | null | null | |
hor |
string \ | null | null | |
ver |
string \ | null | null | |
tmi |
string \ | null | null | |
name_contains |
string \ | null | null | |
as_zip |
boolean | false | Download NEON's package ZIP per site-month instead of files. | |
prototype_uuid |
string \ | null | null | |
file_names |
array of string \ | null | null | |
spec_number |
string \ | null | null | |
dest_subdir |
string \ | null | null | |
if_exists |
skip \ |
error |
"skip" |
|
max_bytes |
integer \ | null | null |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
downloadDir |
string | |
requested |
integer | |
files |
array of DownloadedFileOut | |
totals |
DownloadTotals |
neon_find_locations¶
Find NEON locations. Locations under a site, domain, REALM or named location, filtered by locationType (towers, huts, megapits, soil plots, observation plots, ...) or text, with coordinates and optional proximity. REALM and domain walks need location_type; site walks without it report typesAvailable. Next: call neon_get_location for one location's detail.
| Surface | locations |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /locations/{locationName}GET /locations/sitesPOST /graphql |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
root |
string \ | null | null | |
site_codes |
array of string \ | null | null | |
location_type |
string \ | null | null | |
query |
string \ | null | null | |
latitude |
number \ | null | null | |
longitude |
number \ | null | null | |
radius_km |
number | 50.0 |
> 0; <= 5000 | |
include_coordinates |
boolean | true | Look up coordinates for the returned page (batched). | |
max_depth |
integer | 6 |
Deepest hierarchy level to return. (>= 1; <= 12) | |
limit |
integer | 50 |
>= 1; <= 200 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
roots |
array of LocationRoot | |
locationType |
string \ | null |
typesAvailable |
object of integer \ | null |
hierarchyNodesScanned |
integer | |
items |
array of LocationSummary | |
page |
Page |
neon_get_availability¶
Get NEON data availability. Which sites and months have data for a product (one row per site), which products have data at a site (one row per product), or one product-site cell; month ranges per release including PROVISIONAL, optionally windowed and filtered. Works without a token and is small (GraphQL). Next: call neon_list_files for a product, site and month range.
| Surface | catalog |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | POST /graphqlGET /products/{productCode}GET /sites/{siteCode} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
product |
string \ | null | null | |
site |
string \ | null | null | |
site_codes |
array of string \ | null | null | |
domain_code |
string \ | null | null | |
product_codes |
array of string \ | null | null | |
release |
string \ | null | null | |
provisional |
include \ |
exclude \ |
only |
|
start_month |
string \ | null | null | |
end_month |
string \ | null | null | |
format |
ranges \ |
months \ |
counts \ |
null |
limit |
integer | 100 |
>= 1; <= 500 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
mode |
product \ |
site \ |
productCode |
string \ | null |
productName |
string \ | null |
siteCode |
string \ | null |
siteName |
string \ | null |
release |
string \ | null |
provisional |
include \ |
exclude \ |
window |
Window \ | null |
format |
ranges \ |
months \ |
summary |
AvailabilityTotals | |
rows |
array of AvailabilityRow | |
page |
Page |
neon_get_citation¶
Cite NEON data. NEON-format citation text and BibTeX for a data product in a release (DOI, default the newest release with a DOI), for provisional data (no DOI; archive what you used), or for a prototype dataset. Wording follows NEON's data policy (CC BY 4.0). Next: include the citation with any results; read neon://guide/citing-neon-data for the rules.
| Surface | releases |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /releasesGET /prototype/datasets/{uuid} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
product |
string \ | null | null | |
prototype_uuid |
string \ | null | null | |
release |
string | "latest" |
RELEASE-YYYY, a release uuid, or 'latest' (newest with a DOI). | |
provisional |
boolean | false | Cite provisional data (no DOI). Not with an explicit release. | |
format |
text \ |
bibtex \ |
all |
|
accessed_on |
string \ | null | null | |
site_codes |
array of string \ | null | null |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
productCode |
string \ | null |
prototypeUuid |
string \ | null |
productName |
string \ | null |
projectTitle |
string \ | null |
release |
string \ | null |
provisional |
boolean | |
doi |
string \ | null |
doiUrl |
string \ | null |
accessedOn |
string | |
citationText |
string \ | null |
bibtex |
string \ | null |
dataPolicyUrl |
string |
neon_get_document¶
Get a NEON document. Metadata of a NEON document (ATBD, protocol, user guide) by spec number or documents URL: type, size, file name, description and the products that reference it; optionally its text, extracted in memory and paged by character offset. No token. Next: page through text with char_offset, or call neon_download_files(spec_number=...) on stdio.
| Surface | documents |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /documents/{specNumber} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
spec_number |
string \ | null | null | |
url |
string \ | null | null | |
product |
string \ | null | null | |
extract_text |
boolean | false | Extract the text (PDF via pypdf; needs neon-mcp[pdf]). | |
max_chars |
integer | 20000 |
>= 500; <= 100000 | |
char_offset |
integer | 0 |
>= 0 | |
pages |
string \ | null | null |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
specNumber |
string | |
url |
string | |
contentType |
string \ | null |
size |
integer \ | null |
filename |
string \ | null |
specDescription |
string \ | null |
specType |
string \ | null |
referencedByProducts |
array of string | |
text |
string \ | null |
textTruncated |
boolean | |
nextCharOffset |
integer \ | null |
charsTotal |
integer \ | null |
pageCount |
integer \ | null |
pages |
string \ | null |
neon_get_location¶
Get a NEON location. One named location in depth: coordinates, UTM, elevation, orientation and offsets, properties, active periods; optionally its parent chain, location history, polygon and paged children (pruned by location_type). Names are case-sensitive. Next: call neon_find_locations to list locations of a type under it.
| Surface | locations |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /locations/{locationName} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | yes | Location name (case-sensitive), e.g. HARV, TOWER100450, D01. (min length 1; max length 200) | |
include |
array of properties \ |
hierarchy \ |
history \ |
children \ |
location_type |
string \ | null | null | |
children_limit |
integer | 50 |
>= 1; <= 500 | |
children_offset |
integer | 0 |
>= 0 | |
hierarchy_max_depth |
integer | 3 |
>= 1; <= 12 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
locationName |
string | |
locationDescription |
string \ | null |
locationType |
string \ | null |
domainCode |
string \ | null |
siteCode |
string \ | null |
locationDecimalLatitude |
number \ | null |
locationDecimalLongitude |
number \ | null |
locationElevation |
number \ | null |
locationUtmEasting |
number \ | null |
locationUtmNorthing |
number \ | null |
locationUtmHemisphere |
string \ | null |
locationUtmZone |
integer \ | null |
alphaOrientation |
number \ | null |
betaOrientation |
number \ | null |
gammaOrientation |
number \ | null |
xOffset |
number \ | null |
yOffset |
number \ | null |
zOffset |
number \ | null |
offsetLocation |
object \ | null |
activePeriods |
array of object | |
hasPolygon |
boolean | |
propertyCount |
integer | |
locationProperties |
object \ | null |
locationPropertiesRaw |
array of object \ | null |
locationPolygon |
object \ | null |
locationParent |
string \ | null |
locationParentUrl |
string \ | null |
parentChain |
array of ParentRef \ | null |
childrenByType |
object of integer \ | null |
children |
array of LocationSummary \ | null |
childrenPage |
Page \ | null |
hierarchyNodesScanned |
integer \ | null |
locationHistory |
array of HistoryEntry \ | null |
historyTruncated |
boolean |
neon_get_product¶
Get a NEON data product. One data product: codes, name, team, status, themes, keywords, releases with DOIs and an availability summary; opt-in include[] sections add abstract and design text, packages, specs (ATBDs, protocols), change logs (paged), per-site availability rows and biorepository collections. Accepts a code or a name. Next: call neon_get_availability or neon_get_citation for the product.
| Surface | catalog |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | POST /graphqlGET /products/{productCode} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
product |
string | yes | Product code (DP1.10003.001, DP1.10003) or name ('breeding landbird'). | |
release |
string \ | null | null | |
include |
array of abstract \ |
design \ |
study \ |
sensor \ |
change_logs_limit |
integer | 25 |
>= 1; <= 200 | |
change_logs_offset |
integer | 0 |
>= 0 | |
availability_limit |
integer | 100 |
>= 1; <= 300 | |
availability_offset |
integer | 0 |
>= 0 | |
text_budget |
integer | 4000 |
Characters kept per text section. (>= 100; <= 20000) |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
productCode |
string | |
productCodeLong |
string | |
productCodePresentation |
string | |
productName |
string | |
productDescription |
string \ | null |
productStatus |
string | |
productCategory |
string | |
productScienceTeam |
string \ | null |
productScienceTeamAbbr |
string \ | null |
productPublicationFormatType |
string \ | null |
productHasExpanded |
boolean | |
themes |
array of string | |
keywords |
array of string | |
latestRelease |
string \ | null |
releases |
array of ReleaseInfo | |
availability |
AvailabilitySummary | |
specsCount |
integer | |
changeLogCount |
integer \ | null |
urls |
ProductUrls | |
productAbstract |
string \ | null |
productDesignDescription |
string \ | null |
productStudyDescription |
string \ | null |
productSensor |
string \ | null |
productRemarks |
string \ | null |
productBasicDescription |
string \ | null |
productExpandedDescription |
string \ | null |
textTruncated |
array of string | Text fields clipped to text_budget. |
specs |
array of SpecInfo \ | null |
changeLogs |
array of ChangeLog \ | null |
changeLogsPage |
Page \ | null |
availabilityRows |
array of AvailabilityRow \ | null |
availabilityPage |
Page \ | null |
biorepositoryCollections |
array of BiorepositoryCollection \ | null |
neon_get_prototype_dataset¶
Get a NEON prototype dataset. One prototype dataset: title, abstract, years, version, DOI, themes, teams, sites, and by default its files with sizes, MD5s and signed URLs; optional project/design/metadata descriptions, publication citations and related products. Next: call neon_download_files(prototype_uuid=...) on stdio, or neon_get_citation(prototype_uuid=...).
| Surface | prototype |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /prototype/datasets/{uuid}GET /prototype/data/{uuid} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
uuid |
string | yes | Prototype dataset uuid. | |
include |
array of files \ |
descriptions \ |
locations \ |
citations \ |
include_urls |
boolean | true | Include signed download URLs (valid ~7 days). | |
files_limit |
integer | 100 |
>= 1; <= 500 | |
files_offset |
integer | 0 |
>= 0 | |
text_budget |
integer | 4000 |
>= 100; <= 20000 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
uuid |
string | |
projectTitle |
string | |
datasetAbstract |
string \ | null |
abstractTruncated |
boolean | |
startYear |
integer \ | null |
endYear |
integer \ | null |
version |
string \ | null |
isPublished |
boolean \ | null |
doi |
DoiInfo \ | null |
dataThemes |
array of string | |
scienceTeams |
array of string | |
siteCodes |
array of string | |
fileTypes |
array of string | |
keywords |
array of string | |
dateUploaded |
string \ | null |
projectDescription |
string \ | null |
designDescription |
string \ | null |
metadataDescription |
string \ | null |
studyAreaDescription |
string \ | null |
versionDescription |
string \ | null |
relatedVersions |
array of object | |
locations |
array of object \ | null |
publicationCitations |
array of object \ | null |
relatedDataProducts |
array of object \ | null |
dataUrl |
string \ | null |
dataLocations |
array of object | |
files |
array of PrototypeFile \ | null |
filesPage |
Page \ | null |
urlsElided |
boolean |
neon_get_release¶
Get a NEON data release. One release (tag, uuid or 'latest'): its data products with DOIs (paged, filterable), optionally its sites and manifest artifacts, or one product/site exactly as published in that release. Unknown tags fail with the list of valid releases. Next: call neon_get_citation for a product in the release.
| Surface | releases |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /releases/{releaseIdentifier}POST /graphqlGET /releases/{releaseTag}/products/{productCode}GET /releases/{releaseTag}/sites/{siteCode} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
release |
string | yes | RELEASE-YYYY, a release uuid, or 'latest'. | |
include |
array of products \ |
sites \ |
artifacts \ |
all |
product_query |
string \ | null | null | |
products_limit |
integer | 50 |
>= 1; <= 500 | |
products_offset |
integer | 0 |
>= 0 | |
product_code |
string \ | null | null | |
site_code |
string \ | null | null | |
include_artifact_urls |
boolean | false | Include signed manifest URLs. |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
release |
string | |
uuid |
string \ | null |
generationDate |
string \ | null |
productCount |
integer | |
artifacts |
array of Artifact \ | null |
dataProducts |
array of ReleaseProduct \ | null |
productsPage |
Page \ | null |
sites |
array of ReleaseSite \ | null |
product |
ProductCore \ | null |
site |
SiteCore \ | null |
neon_get_sample¶
Get a NEON sample. A physical sample's custody chain (NEON API token required): identifiers, events with their field values, parents and children; degree=N adds relatives N steps away. Identify it by tag (+class), UUID, barcode or archive GUID; an ambiguous tag asks which class (MRTR) or lists candidates. Next: follow parent or child identifiers with another neon_get_sample call.
| Surface | samples |
| NEON API token | required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| Multi round-trip | may return input_required (elicitation) |
| NEON endpoints | GET /samples/viewGET /samples/downloadGET /samples/classes |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
sample_tag |
string \ | null | null | |
sample_class |
string \ | null | null | |
sample_uuid |
string \ | null | null | |
barcode |
string \ | null | null | |
archive_guid |
string \ | null | null | |
degree |
integer \ | null | null | |
include_events |
boolean | true | Include custody events (field entries folded into objects). | |
events_limit |
integer | 50 |
>= 1; <= 500 | |
fields |
array of string \ | null | null | |
limit |
integer | 20 |
>= 1; <= 100 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of SampleView | |
degree |
integer \ | null |
identifier |
object of string | |
page |
Page |
neon_get_site¶
Get a NEON field site. One field site: name, type, state, domain, coordinates, DEIMS id, and (by default) every data product available there with month ranges and provisional counts; optional releases, full description and location record (elevation, UTM, properties). Next: call neon_get_availability or neon_list_files for a product at this site.
| Surface | catalog |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /sites/{siteCode}GET /locations/{locationName} |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
site |
string | yes | Site code (HARV) or name ('Harvard Forest'). | |
release |
string \ | null | null | |
include |
array of products \ |
releases \ |
description \ |
location \ |
products_query |
string \ | null | null | |
products_limit |
integer | 100 |
>= 1; <= 300 | |
products_offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
siteCode |
string | |
siteName |
string | |
siteDescription |
string \ | null |
siteType |
string | |
siteLatitude |
number \ | null |
siteLongitude |
number \ | null |
stateCode |
string | |
stateName |
string | |
domainCode |
string | |
domainName |
string | |
deimsId |
string \ | null |
productCount |
integer | |
latestRelease |
string \ | null |
urls |
SiteUrls | |
releases |
array of SiteReleaseInfo \ | null |
dataProducts |
array of SiteProduct \ | null |
dataProductsPage |
Page \ | null |
location |
SiteLocation \ | null |
neon_graphql¶
Run a NEON GraphQL query. Read-only GraphQL against NEON's public metadata endpoint for shapes the other tools do not cover. Guard rails: queries only, allow-listed root fields, depth <= 8, one __type/__schema, results pruned to max_bytes with truncatedPaths. No token is sent. Prefer the dedicated tools for products, sites and availability. Next: read neon://reference/graphql-schema for types.
| Surface | graphql |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | POST /graphql |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string \ | null | null | |
introspect_type |
string \ | null | null | |
variables |
object \ | null | null | |
operation_name |
string \ | null | null | |
max_bytes |
integer | 50000 |
Response budget; larger lists are pruned. (>= 1000; <= 200000) |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
data |
any | |
errors |
array of object \ | null |
bytesTotal |
integer | |
truncated |
boolean | |
truncatedPaths |
array of string | |
schemaHint |
string |
neon_list_files¶
List NEON data files. Data files for a product at sites over months (NEON API token required): names, kinds, tables, HOR/VER/TMI, sizes, MD5s and signed URLs (~7 days), plus package ZIP links for a single site-month. detail='summary' or 'site_months' sizes a pull without listing files. Next: call neon_download_files with the same selectors (stdio), or use the URLs.
| Surface | data |
| NEON API token | required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /data/{productCode}/{siteCode}/{yearMonth}GET /data/{productCode}/{siteCode}/{yearMonth}/{filename}POST /data/query |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
product |
string | yes | Product code or name. | |
site_codes |
array of string | yes | Site codes or names (up to 30). (min items 1) | |
start_month |
string | yes | First month (YYYY-MM). | |
end_month |
string \ | null | null | |
package |
basic \ |
expanded |
"basic" |
|
release |
string \ | null | null | |
include_provisional |
boolean | true | Include PROVISIONAL (unreleased) months. | |
kind |
data \ |
variables \ |
readme \ |
sensor_positions \ |
table |
string \ | null | null | |
hor |
string \ | null | null | |
ver |
string \ | null | null | |
tmi |
string \ | null | null | |
name_contains |
string \ | null | null | |
detail |
files \ |
site_months \ |
summary |
|
include_urls |
boolean | true | Include signed URLs (valid ~7 days; they dominate result size). | |
filename |
string \ | null | null | |
limit |
integer | 50 |
>= 1; <= 200 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
productCode |
string | |
package |
string | |
release |
string \ | null |
includeProvisional |
boolean | |
siteCodes |
array of string | |
window |
Window | |
detail |
files \ |
site_months \ |
summary |
FileSummary | |
siteMonths |
array of SiteMonthRow \ | null |
files |
array of FileRecord \ | null |
packages |
array of PackageLink | |
externalData |
array of ExternalData | |
urlExpiresAt |
string \ | null |
urlsElided |
boolean | |
curlHint |
string \ | null |
page |
Page \ | null |
neon_list_releases¶
List NEON data releases. All NEON data releases (RELEASE-2021 ... RELEASE-2026 today), newest first, with generation dates, product counts and manifest artifacts. Releases are immutable and carry per-product DOIs; newer data are PROVISIONAL. Next: call neon_get_release for one release's products and DOIs.
| Surface | releases |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /releases |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
include_artifact_urls |
boolean | false | Include signed manifest URLs (large, expire in 7 days). |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of ReleaseSummary | |
latestRelease |
string \ | null |
page |
Page |
neon_list_sample_classes¶
List NEON sample classes. NEON's supported sample classes (e.g. bet_IDandpinning_in.individualID) with descriptions, filterable by text, or the classes one sample tag belongs to. No token. Next: call neon_get_sample with a tag and class, a sample UUID, a barcode or an archive GUID.
| Surface | samples |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /samples/supportedClassesGET /samples/classes |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
sample_tag |
string \ | null | null | |
query |
string \ | null | null | |
limit |
integer | 50 |
>= 1; <= 500 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
sampleTag |
string \ | null |
items |
array of SampleClass | |
page |
Page | |
sourceEndpoint |
classes \ |
supportedClasses |
neon_ping¶
Check neon-mcp status. Liveness and capability report: server version and protocol, whether a NEON API token is available (it unlocks data files and sample views), whether downloads are enabled, catalog warmth, cache and rate-limit headroom. With check_api=true it makes one ~1 KB NEON request. Never reveals the token. Next: call neon_search_products to find a data product.
| Surface | core |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /taxonomy |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
check_api |
boolean | false | Also make one tiny NEON request (~1 KB) to test reachability and read rate-limit headers. |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
pong |
ok |
|
version |
string | |
protocolVersion |
string | |
transport |
stdio \ |
http |
tokenConfigured |
boolean | True when this call has a NEON API token available. |
tokenSource |
config \ |
request \ |
downloadsEnabled |
boolean | |
downloadDir |
string \ | null |
apiBaseUrl |
string | |
graphqlUrl |
string | |
catalog |
CatalogStatus | |
cache |
CacheInfo | |
rateLimit |
RateLimitInfo \ | null |
api |
ApiCheck \ | null |
neon_search_products¶
Search NEON data products. Find NEON data products by keywords, theme, science team, level, status, site, domain or date coverage; ranked results with facets and each product's site count and month range. Served from a cached catalog (no token). A bare code such as DP1.10003.001 matches exactly. Next: call neon_get_availability with a productCode, or neon_get_product for detail.
| Surface | catalog |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | POST /graphqlGET /products |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string \ | null | null | |
theme |
string \ | null | null | |
science_team |
AIS \ |
AOP \ |
AOS \ |
TIS \ |
status |
ACTIVE \ |
FUTURE \ |
RETIRED \ |
ALL |
level |
integer \ | null | null | |
has_expanded |
boolean \ | null | null | |
site |
string \ | null | null | |
domain_code |
string \ | null | null | |
release |
string \ | null | null | |
available_from |
string \ | null | null | |
available_to |
string \ | null | null | |
sort |
relevance \ |
productCode \ |
productName |
|
limit |
integer | 25 |
>= 1; <= 100 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of ProductSummary | |
page |
Page | |
facets |
object of object of integer | |
didYouMean |
array of string \ | null |
indexSource |
graphql \ |
rest |
indexAgeSeconds |
integer |
neon_search_prototype_datasets¶
Search NEON prototype datasets. Search NEON's prototype datasets (early or experimental data outside the standard products) by text, theme, science team, site, years, file type or publication flag, with facets. Each has its own DOI and version. No token. Next: call neon_get_prototype_dataset with a uuid for files.
| Surface | prototype |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /prototype/datasets |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string \ | null | null | |
theme |
string \ | null | null | |
science_team |
string \ | null | null | |
site_code |
string \ | null | null | |
start_year |
integer \ | null | null | |
end_year |
integer \ | null | null | |
file_type |
string \ | null | null | |
is_published |
boolean \ | null | null | |
limit |
integer | 25 |
>= 1; <= 200 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of PrototypeDatasetSummary | |
page |
Page | |
facets |
object of object of integer |
neon_search_sites¶
Search NEON field sites. Find NEON's 81 field sites by code, name, state, domain, site type, product availability or proximity (latitude/longitude + radius_km, nearest first); optional elevation and UTM. Cached catalog, no token. Next: call neon_get_site or neon_get_availability(site=...) for a siteCode.
| Surface | catalog |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | POST /graphqlGET /sitesGET /locations/sites |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string \ | null | null | |
domain_code |
string \ | null | null | |
state_code |
string \ | null | null | |
site_type |
CORE \ |
GRADIENT \ |
null | |
product |
string \ | null | null | |
release |
string \ | null | null | |
latitude |
number \ | null | null | |
longitude |
number \ | null | null | |
radius_km |
number | 100.0 |
Proximity radius when latitude/longitude are set. (> 0; <= 5000) | |
include_elevation |
boolean | false | Add elevation and UTM (one extra cached request). | |
limit |
integer | 50 |
>= 1; <= 100 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of SiteSummary | |
page |
Page | |
facets |
object of object of integer | |
didYouMean |
array of string \ | null |
indexSource |
graphql \ |
rest |
indexAgeSeconds |
integer |
neon_search_taxonomy¶
Search NEON taxonomy. NEON's taxonomy lists, paged: every taxon of a type (BIRD, PLANT, SMALL_MAMMAL, ...) or taxa by rank (kingdom ... genus) or exact scientific name with a genus fallback. Rows keep NEON's Darwin Core keys (dwc:scientificName, dwc:vernacularName, ...). No token. Next: follow page.nextOffset, or call neon_search_products for data about the taxa.
| Surface | taxonomy |
| NEON API token | not required |
| Transports | http, stdio |
| Annotations | readOnly=true, destructive=false, idempotent=true, openWorld=true |
| NEON endpoints | GET /taxonomy |
Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
taxon_type_code |
ALGAE \ |
BEETLE \ |
BIRD \ |
FISH \ |
kingdom |
string \ | null | null | |
phylum |
string \ | null | null | |
division |
string \ | null | null | |
class_ |
string \ | null | null | |
order |
string \ | null | null | |
family |
string \ | null | null | |
genus |
string \ | null | null | |
scientific_name |
string \ | null | null | |
verbose |
boolean | false | All ranks and extra fields (nulls dropped); limit capped at 100. | |
fuzzy_genus_fallback |
boolean | true | Retry an unmatched 'Genus species' by genus and filter. | |
limit |
integer | 25 |
>= 1; <= 500 | |
offset |
integer | 0 |
>= 0 |
Result fields (besides the common envelope)
| Field | Type | Description |
|---|---|---|
items |
array of object | |
page |
Page | |
filters |
object | |
fuzzyFallbackUsed |
boolean |