eBird

liveScienceBiology

Cornell Lab bird sightings — 1B+ observations worldwide, with notable-sighting flags and rich region trees.

5tools
0msauth
free tier50 calls/day

Tools

recent_observationsrequired: region_code

Recent sightings in a region.

Parameters
NameTypeDescription
region_codereqstringeBird region code
species_codeoptstringOptional species filter
backoptnumber1-30 days
max_resultsoptnumber1-10000
include_provisionaloptbooleanInclude unconfirmed
Try it
recent_notablerequired: region_code

Rare / out-of-range sightings in a region.

Parameters
NameTypeDescription
region_codereqstringeBird region code
backoptnumber1-30 days
max_resultsoptnumber1-10000
detailoptstringsimple | full
Try it
nearby_observationsrequired: latitude, longitude

Sightings within a radius of a lat/lon.

Parameters
NameTypeDescription
latitudereqnumberLatitude
longitudereqnumberLongitude
dist_kmoptnumber1-50
backoptnumber1-30 days
max_resultsoptnumber1-10000
species_codeoptstringOptional species filter
Try it
find_speciesrequired: query

Search eBird taxonomy by common/scientific name.

Parameters
NameTypeDescription
queryreqstringSpecies name
Try it
list_subregionsrequired: region_type

Child regions of a parent.

Parameters
NameTypeDescription
region_typereqstringcountry | subnational1 | subnational2
parent_region_codeoptstringParent region (default "world")
Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/ebird/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/ebird/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"recent_observations","arguments":{"region_code": "example"}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("recent_observations", {"region_code":"example"});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("cornell lab bird sightings — 1b+ observations worldwide, with notable-sighting flags and rich region trees");