accueil / serveurs / Recherche & Web / io.github.cyanheads/inaturalist-mcp-server
io.github.cyanheads/inaturalist-mcp-server
serveur MCP (Model Context Protocol) · inaturalist-mcp-server 0.2.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.cyanheads/inaturalist-mcp-server est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.cyanheads/inaturalist-mcp-server » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 10 outils
- inaturalist_find_places≈ 2802 tokens
Resolve a place name to a place id, or list the places containing a map area. Pass q to match a place-name PREFIX, or all four of nelat, nelng, swlat and swlng to list every place covering that box — exactly one of the two, never both. Each result carries the bounding box, place type, and containment chain an area search needs. Place geometry is stripped: a single nearby response carries 247 KB of boundary polygons upstream, none of which reaches the caller.
Paramètres, retour & exemple (6)
Paramètresq· string · optionnel
Place-name prefix to search. Matches the start of a name, not words inside it. Mutually exclusive with the bounding box.nelat· number · optionnel
North-east corner latitude of the map area, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the map area. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.swlat· number · optionnel
South-west corner latitude of the map area. All four corners or none.swlng· number · optionnel
South-west corner longitude of the map area. All four corners or none.per_page· integer · optionnel
Maximum places per list. Honoured on the bounding-box arm only, where it bounds the standard and community lists separately, so up to twice this many places come back. The name-prefix endpoint publishes no page size and returns a fixed page.
Exemple d'appel{"name": "inaturalist_find_places", "arguments": {"q": "texte", "nelat": 1, "nelng": 1, "swlat": 1, "swlng": 1, "per_page": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "notice": "texte", "places": [], "standard": [], "community": [], "truncated": true, "totalCount": 1}} - inaturalist_get_histogram≈ 2212 tokens
Build a phenology histogram for a taxon in an area — which months, weeks, or years it is recorded in. The default month_of_year interval answers "when does this bloom or appear here" in twelve buckets; the absolute intervals (year, month, week, day, hour) bucket real dates and upstream applies a default start date to them. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Omit taxon_id to chart every taxon in the area. Narrow to one life stage or reproductive state with an annotation pair (term_id and term_value_id, e.g. Life Stage = Larva, or Flowers and Fruits = Flowers), or to broad groups with iconic_taxa. Defaults to research-grade, wild-only records and echoes those defaults back.
Paramètres, retour & exemple (18)
Paramètresd1· string · optionnel
Earliest observation date, YYYY-MM-DD. Inclusive. Must be on or before d2. With interval set to day or hour, a wide range can exceed the 800-bucket cap — narrow d1/d2 to reach buckets past it.d2· string · optionnel
Latest observation date, YYYY-MM-DD. Inclusive.lat· number · optionnel
Latitude of the search centre, in decimal degrees. Requires lng and radius.lng· number · optionnel
Longitude of the search centre, in decimal degrees. Requires lat and radius.nelat· number · optionnel
North-east corner latitude of the bounding box, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the bounding box. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.swlat· number · optionnel
South-west corner latitude of the bounding box. All four corners or none.swlng· number · optionnel
South-west corner longitude of the bounding box. All four corners or none.radius· number · optionnel
Search radius around lat/lng, in KILOMETRES, greater than 0. Requires lat and lng. The upstream publishes no bound; 500 is a verified ceiling this server imposes.captive· boolean · optionnel
Whether to include captive and cultivated records — zoo animals, garden plantings. Defaults to wild organisms only.term_id· array · optionnel
Annotation attribute ids, from inaturalist_list_reference topic controlled_terms — e.g. 1 for Life Stage.interval· string · optionnel · year | month | week | day | hour | month_of_year | week_of_year
Bucketing. month_of_year and week_of_year fold every year together into a seasonal curve; the rest bucket absolute dates. day and hour over a wide date range can generate thousands of buckets — the response is capped at 800, kept from the start of the range; narrow d1/d2 or use a coarser interval to see the rest.place_id· integer · optionnel
Numeric iNaturalist place id from inaturalist_find_places. Mutually exclusive with the lat/lng/radius triple and the bounding box. A non-numeric value answers HTTP 500 upstream.taxon_id· integer · optionnel
Restrict to this taxon and its descendants. Omit to chart every taxon in the area. Resolve a name to an id with inaturalist_resolve_name.date_field· string · optionnel · observed | created
Which date to bucket by: when the organism was observed, or when the record was uploaded.iconic_taxa· array · optionnel
Broad organism groups, by their scientific iconic-taxon name. A common-name value such as "Birds" matches nothing upstream, so only the listed values are accepted.quality_grade· array · optionnel
Identification confidence tiers to include. Defaults to research-grade only; adding "needs_id" roughly doubles the corpus and lowers identification confidence.term_value_id· array · optionnel
Annotation value ids, from the same attribute listing — e.g. 6 for Larva. Requires term_id; sent alone it is ignored upstream and the unfiltered corpus comes back.
Exemple d'appel{"name": "inaturalist_get_histogram", "arguments": {"d1": "texte", "d2": "texte", "lat": 1, "lng": 1, "nelat": 1, "nelng": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "total": 1, "notice": "texte", "buckets": [], "interval": "year", "truncated": true, "applied_filters": {}}} - inaturalist_get_leaderboard≈ 1898 tokens
Rank the most active observers or identifiers for an area, period, and taxon — who knows this place or this group. kind selects which: observers are ranked by how many observations they recorded, identifiers by how many identifications they made. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Both endpoints rank only the top 500 entries, so page multiplied by per_page must stay at or below 500 — narrow the area, period, or taxon to bring someone further down into reach. For the most-recorded species rather than the most active people, use inaturalist_get_species_counts.
Paramètres, retour & exemple (15)
Paramètresd1· string · optionnel
Earliest observation date, YYYY-MM-DD. Inclusive. Must be on or before d2.d2· string · optionnel
Latest observation date, YYYY-MM-DD. Inclusive.lat· number · optionnel
Latitude of the search centre, in decimal degrees. Requires lng and radius.lng· number · optionnel
Longitude of the search centre, in decimal degrees. Requires lat and radius.kind· string · requis · observers | identifiers
Which leaderboard: "observers" ranks by observations recorded, "identifiers" by identifications made.page· integer · optionnel
Page number. Defaults to 1.nelat· number · optionnel
North-east corner latitude of the bounding box, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the bounding box. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.swlat· number · optionnel
South-west corner latitude of the bounding box. All four corners or none.swlng· number · optionnel
South-west corner longitude of the bounding box. All four corners or none.radius· number · optionnel
Search radius around lat/lng, in KILOMETRES, greater than 0. Requires lat and lng. The upstream publishes no bound; 500 is a verified ceiling this server imposes.per_page· integer · optionnel
Entries per page, maximum 250. An entry costs roughly 140 bytes across structuredContent and the rendered text together, so 250 is a full page near 34 KB — and two such pages cover the whole 500-entry window these endpoints rank.place_id· integer · optionnel
Numeric iNaturalist place id from inaturalist_find_places. Mutually exclusive with the lat/lng/radius triple and the bounding box. A non-numeric value answers HTTP 500 upstream.taxon_id· integer · optionnel
Restrict to this taxon and its descendants. Resolve a name to an id with inaturalist_resolve_name.quality_grade· array · optionnel
Identification confidence tiers to include. Defaults to research-grade only; adding "needs_id" roughly doubles the corpus and lowers identification confidence.
Exemple d'appel{"name": "inaturalist_get_leaderboard", "arguments": {"kind": "observers"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "kind": "observers", "error": {}, "shown": 1, "notice": "texte", "entries": [], "truncated": true, "count_metric": "observations", "total_results": 1, "applied_filters": {}}} - inaturalist_get_observation≈ 4604 tokens
Fetch up to 10 observations by id with their community identification thread — who identified what, whether each identification agrees, and the consensus taxon the community landed on. The whole batch costs one upstream request, so resolving ten ids here is far cheaper than ten separate lookups. Records come back in the requested order. A missing id is reported per id in unresolved rather than failing the batch; the call fails only when nothing resolved. Long threads and long observation-field lists are cut to fit one response budget shared across the batch — up to 40 identifications, 40 comments, and 40 filled fields for a single id, 4 of each per record for ten — and every record reports the size of each array beside what it kept.
Paramètres, retour & exemple (2)
Paramètresinclude· array · optionnel
Embedded arrays to expand per record. identifications is the default and is what carries the thread; the others cost context, so check photo_count and sound_count first. identifications and comments — like the observation_fields every record carries — share a 40-entry budget across the batch: each record keeps at most 40 ÷ records returned entries per array (never fewer than 4), and reports identifications_total, comments_total, and observation_fields_total beside what it kept — request one id alone for the 40-entry view.observation_id· array · requis
Observation ids to fetch, 1 to 10. Find current ids for an area with inaturalist_search_observations.
Exemple d'appel{"name": "inaturalist_get_observation", "arguments": {"observation_id": []}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "notice": "texte", "unresolved": [], "observations": []}} - inaturalist_get_similar_species≈ 2112 tokens
List the taxa this one is most often misidentified as, ranked by how many times identifiers made the correction — the field-identification check before committing to a look-alike. Scope it to an area in exactly one form (place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box) to see the confusion set a specific region actually produces, or leave the area off for the global set. The taxon must be a genus or finer (genus, species, or below) — upstream keeps no confusion set for a family, order, or anything coarser. Resolve the organism name to a taxon id with inaturalist_resolve_name first.
Paramètres, retour & exemple (14)
Paramètresd1· string · optionnel
Earliest observation date, YYYY-MM-DD. Inclusive. Must be on or before d2.d2· string · optionnel
Latest observation date, YYYY-MM-DD. Inclusive.lat· number · optionnel
Latitude of the search centre, in decimal degrees. Requires lng and radius.lng· number · optionnel
Longitude of the search centre, in decimal degrees. Requires lat and radius.limit· integer · optionnel
Maximum look-alikes to return. Applied in-process — the upstream endpoint publishes no page size and returns its whole confusion set.nelat· number · optionnel
North-east corner latitude of the bounding box, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the bounding box. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.swlat· number · optionnel
South-west corner latitude of the bounding box. All four corners or none.swlng· number · optionnel
South-west corner longitude of the bounding box. All four corners or none.radius· number · optionnel
Search radius around lat/lng, in KILOMETRES, greater than 0. Requires lat and lng. The upstream publishes no bound; 500 is a verified ceiling this server imposes.captive· boolean · optionnel
Whether to include captive and cultivated records — zoo animals, garden plantings. Defaults to wild organisms only.place_id· integer · optionnel
Numeric iNaturalist place id from inaturalist_find_places. Mutually exclusive with the lat/lng/radius triple and the bounding box. A non-numeric value answers HTTP 500 upstream.taxon_id· integer · requis
Numeric taxon id to find look-alikes for, at genus or finer — a genus, species, or subspecies; a family or anything coarser is refused. Resolve a name to an id with inaturalist_resolve_name.quality_grade· array · optionnel
Identification confidence tiers to include. Defaults to research-grade only; adding "needs_id" roughly doubles the corpus and lowers identification confidence.
Exemple d'appel{"name": "inaturalist_get_similar_species", "arguments": {"taxon_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "notice": "texte", "taxon_id": 1, "truncated": true, "totalCount": 1, "similar_species": [], "truncationCeiling": 1}} - inaturalist_get_species_counts≈ 2760 tokens
Rank the distinct species recorded in an area and period, most-observed first — the "what lives here" answer, without paging through individual sightings. An area is given in exactly one form: place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box. Narrow to a clade by passing taxon_id, e.g. the birds of a park, or to one observer or one project by user_id, user_login, or project_id. Defaults to research-grade, wild-only records and echoes those defaults back. For the most active people rather than the most recorded species, use inaturalist_get_leaderboard.
Paramètres, retour & exemple (21)
Paramètresd1· string · optionnel
Earliest observation date, YYYY-MM-DD. Inclusive. Must be on or before d2.d2· string · optionnel
Latest observation date, YYYY-MM-DD. Inclusive.lat· number · optionnel
Latitude of the search centre, in decimal degrees. Requires lng and radius.lng· number · optionnel
Longitude of the search centre, in decimal degrees. Requires lat and radius.page· integer · optionnel
Page number. Defaults to 1.nelat· number · optionnel
North-east corner latitude of the bounding box, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the bounding box. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.swlat· number · optionnel
South-west corner latitude of the bounding box. All four corners or none.swlng· number · optionnel
South-west corner longitude of the bounding box. All four corners or none.radius· number · optionnel
Search radius around lat/lng, in KILOMETRES, greater than 0. Requires lat and lng. The upstream publishes no bound; 500 is a verified ceiling this server imposes.captive· boolean · optionnel
Whether to include captive and cultivated records — zoo animals, garden plantings. Defaults to wild organisms only.term_id· array · optionnel
Annotation attribute ids, from inaturalist_list_reference topic controlled_terms — e.g. 1 for Life Stage.user_id· integer · optionnel
Restrict to one observer, by numeric user id from inaturalist_resolve_name type user. Mutually exclusive with user_login.per_page· integer · optionnel
Species per page, maximum 50. A ranked species costs roughly 860 bytes across structuredContent and the rendered text together, so 50 is a full page near 43 KB. Upstream would serve 500 in one page — raise page rather than asking for it.place_id· integer · optionnel
Numeric iNaturalist place id from inaturalist_find_places. Mutually exclusive with the lat/lng/radius triple and the bounding box. A non-numeric value answers HTTP 500 upstream.taxon_id· integer · optionnel
Restrict to this taxon and its descendants. Resolve a name to an id with inaturalist_resolve_name.project_id· integer · optionnel
Restrict to observations in one project, by numeric project id from inaturalist_resolve_name type project.user_login· string · optionnel
Restrict to one observer, by login — the login on an inaturalist_resolve_name user candidate, a leaderboard entry, or an observation’s observer. Mutually exclusive with user_id.iconic_taxa· array · optionnel
Broad organism groups, by their scientific iconic-taxon name. A common-name value such as "Birds" matches nothing upstream, so only the listed values are accepted.quality_grade· array · optionnel
Identification confidence tiers to include. Defaults to research-grade only; adding "needs_id" roughly doubles the corpus and lowers identification confidence.term_value_id· array · optionnel
Annotation value ids, from the same attribute listing — e.g. 6 for Larva. Requires term_id; sent alone it is ignored upstream and the unfiltered corpus comes back.
Exemple d'appel{"name": "inaturalist_get_species_counts", "arguments": {"d1": "texte", "d2": "texte", "lat": 1, "lng": 1, "page": 1, "nelat": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "notice": "texte", "species": [], "truncated": true, "total_results": 1, "applied_filters": {}, "truncationCeiling": 1}} - inaturalist_get_taxon≈ 2696 tokens
Fetch a taxon profile: the taxonomic path, per-authority conservation listings, the encyclopedia summary, the photo gallery, immediate children, and observation counts. Resolve a name to a taxon id with inaturalist_resolve_name first. The upstream record is 95 KB for a common species, so it is projected before anything else happens; a taxon that still overflows comes back as an outline of its sections with their byte sizes, and naming those sections in a re-call returns only those. The valid section names are summary, taxonomy, children, conservation, photos, and encyclopedia.
Paramètres, retour & exemple (2)
Paramètressections· array · optionnel
Sections to return: summary, taxonomy, children, conservation, photos, encyclopedia. Omit for the whole profile, or an outline of it when it overflows. A selection returns whatever it names, at whatever size, so sum the byte sizes from the outline before asking for several.taxon_id· integer · requis
Numeric taxon id. A non-numeric value answers HTTP 422 with an empty message upstream, so the integer is enforced here. Resolve a name to an id with inaturalist_resolve_name.
Exemple d'appel{"name": "inaturalist_get_taxon", "arguments": {"taxon_id": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": 1, "kind": "full", "name": "texte", "rank": "texte", "error": {}, "notice": "texte", "photos": [], "vision": true, "extinct": true, "children": [], "sections": [], "taxonomy": []}} - inaturalist_list_reference≈ 1494 tokens
Decode the vocabularies the other iNaturalist tools take as input: annotation attributes and values, quality grades, license codes, taxonomic ranks, iconic taxa, and IUCN conservation-status codes. An unrecognized filter value is not rejected upstream — it silently returns nothing — so read the codes here before filtering. Note that the conservation codes are the normalised csi search filter; a taxon record’s own conservation_statuses[].status is authority-specific free text and reads differently. With topic controlled_terms and a taxon_id, the response also carries which annotations identifiers have actually recorded for that taxon, with counts.
Paramètres, retour & exemple (2)
Paramètrestopic· string · requis · controlled_terms | quality_grades | licenses | ranks | iconic_taxa | conservation_status_codes
Which vocabulary to decode. controlled_terms is fetched live and cached; the rest are spec-derived static tables.taxon_id· integer · optionnel
Add observed annotation usage for this taxon, ranked by how often each attribute/value pair has been recorded. Valid only with topic controlled_terms. Resolve a name to an id with inaturalist_resolve_name.
Exemple d'appel{"name": "inaturalist_list_reference", "arguments": {"topic": "controlled_terms"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "topic": "controlled_terms", "notice": "texte", "source": "upstream", "entries": [], "observed_usage": []}} - inaturalist_resolve_name≈ 1574 tokens
Resolve a common or scientific name to a taxon id, or a place, project, or observer name to its id. Returns ranked candidates carrying the identifiers every other tool takes. A miss is a result rather than a failure: found comes back false with guidance naming why. Taxon lookup matches a name PREFIX, not words inside a name, so "monarch butterfly" misses where "monarch" hits.
Paramètres, retour & exemple (4)
Paramètresq· string · requis
The name to resolve. On type "taxon" this is a name prefix or an exact taxon id; on the other types it is matched across the record text.rank· string · optionnel · stateofmatter | kingdom | phylum | subphylum | superclass | class | subclass | superorder
Restrict taxon candidates to one rank. Honoured only on type "taxon" — the cross-kind search has no rank filter.type· string · optionnel · taxon | place | project | user | any
Which kind of record to resolve. "taxon" uses the taxon autocomplete; the rest use the scored cross-kind search, and "any" searches every kind at once. For a place’s bounding box and containment chain rather than just its id, use inaturalist_find_places instead.limit· integer · optionnel
Maximum candidates to return, applied to every type.
Exemple d'appel{"name": "inaturalist_resolve_name", "arguments": {"q": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"error": {}, "found": true, "guidance": "texte", "candidates": [], "totalCount": 1}} - inaturalist_search_observations≈ 7112 tokens
Search georeferenced wildlife sightings by area, date, taxon, quality grade, annotation, conservation status, observer, project, and licence. Returns a projected record per sighting with coordinates, licence, first photo, and identification counts. An area is given in exactly one form — place_id, the lat/lng/radius triple in kilometres, or a four-corner bounding box — and defaults to research-grade, wild-only records, which are echoed back on every call. Identifications and comments are deliberately not expandable here (one thread is 28 KB); fetch them for specific records with inaturalist_get_observation. page walks the first 10,000 results under any ordering; past 10,000, order by id descending (order_by "id", order "desc") and pass each page’s next_cursor as cursor.
Paramètres, retour & exemple (38)
Paramètresq· string · optionnel
Free text matched across observation properties.d1· string · optionnel
Earliest observation date, YYYY-MM-DD. Inclusive. Must be on or before d2.d2· string · optionnel
Latest observation date, YYYY-MM-DD. Inclusive.csi· array · optionnel
IUCN-normalised conservation status codes to include, e.g. ["EN","CR"]. Decode them with inaturalist_list_reference topic conservation_status_codes.lat· number · optionnel
Latitude of the search centre, in decimal degrees. Requires lng and radius.lng· number · optionnel
Longitude of the search centre, in decimal degrees. Requires lat and radius.page· integer · optionnel
Page number within the first 10,000 results, under any ordering. Defaults to 1. Mutually exclusive with cursor.hrank· string · optionnel · stateofmatter | kingdom | phylum | subphylum | superclass | class | subclass | superorder
Highest (coarsest) taxonomic rank of the identification to accept. Must be at or above lrank; ranks compare by rank level.lrank· string · optionnel · stateofmatter | kingdom | phylum | subphylum | superclass | class | subclass | superorder
Lowest (finest) taxonomic rank of the identification to accept. Equal to hrank for an exact-rank match.nelat· number · optionnel
North-east corner latitude of the bounding box, at or north of swlat. All four corners or none.nelng· number · optionnel
North-east corner longitude of the bounding box. All four corners or none. West of swlng is accepted: it describes a box crossing the antimeridian.order· string · optionnel · asc | desc
Sort direction.swlat· number · optionnel
South-west corner latitude of the bounding box. All four corners or none.swlng· number · optionnel
South-west corner longitude of the bounding box. All four corners or none.cursor· string · optionnel
next_cursor from a previous id-descending page, to continue past the 10,000-result window — a positive integer observation id, sent upstream as id_below. Mutually exclusive with page, and forces order_by "id", order "desc".native· boolean · optionnel
Restrict to taxa native to the observation location.radius· number · optionnel
Search radius around lat/lng, in KILOMETRES, greater than 0. Requires lat and lng. The upstream publishes no bound; 500 is a verified ceiling this server imposes.captive· boolean · optionnel
Whether to include captive and cultivated records — zoo animals, garden plantings. Defaults to wild organisms only.endemic· boolean · optionnel
Restrict to taxa endemic to the observation location.include· array · optionnel
Embedded arrays to expand per record. Check photo_count and sound_count first — expanding costs context.license· array · optionnel
Restrict to records whose own license_code is one of these, e.g. ["cc-by","cc0"] for reuse with attribution only. Decode the codes with inaturalist_list_reference topic licenses; all-rights-reserved records have no code to pass.term_id· array · optionnel
Annotation attribute ids, from inaturalist_list_reference topic controlled_terms — e.g. 1 for Life Stage.user_id· integer · optionnel
Restrict to one observer, by numeric user id from inaturalist_resolve_name type user. Mutually exclusive with user_login.licensed· boolean · optionnel
Restrict to records whose own license_code is not null — any licence, NonCommercial and NoDerivatives variants included. For specific licences, use license.order_by· string · optionnel · created_at | geo_score | id | observed_on | random | species_guess | updated_at | votes
Sort field. Set "id" with order "desc" to walk past 10,000 results: that is the one ordering next_cursor continues, so it is the only one that issues a next_cursor. A cursor forces it.per_page· integer · optionnel
Records per page, maximum 25. A projected record costs roughly 1.9 KB across structuredContent and the rendered text together, so 25 is a full page near 49 KB and the default of 10 near 20 KB. Walk further with page or cursor rather than a larger page.place_id· integer · optionnel
Numeric iNaturalist place id from inaturalist_find_places. Mutually exclusive with the lat/lng/radius triple and the bounding box. A non-numeric value answers HTTP 500 upstream.taxon_id· integer · optionnel
Restrict to this taxon and its descendants. Resolve a name to an id with inaturalist_resolve_name.search_on· string · optionnel · names | tags | description | place
Narrow what q matches against. Requires q.introduced· boolean · optionnel
Restrict to taxa introduced to the observation location.project_id· integer · optionnel
Restrict to observations in one project, by numeric project id from inaturalist_resolve_name type project.threatened· boolean · optionnel
Restrict to taxa considered threatened where observed.user_login· string · optionnel
Restrict to one observer, by login — the login on an inaturalist_resolve_name user candidate, a leaderboard entry, or an observation’s observer. Mutually exclusive with user_id.iconic_taxa· array · optionnel
Broad organism groups, by their scientific iconic-taxon name. A common-name value such as "Birds" matches nothing upstream, so only the listed values are accepted.photo_license· array · optionnel
Restrict to records carrying at least one photo under one of these licence codes. Matched independently of the record’s own license_code, so check each photo’s license_code before reusing it.quality_grade· array · optionnel
Identification confidence tiers to include. Defaults to research-grade only; adding "needs_id" roughly doubles the corpus and lowers identification confidence.term_value_id· array · optionnel
Annotation value ids, from the same attribute listing — e.g. 6 for Larva. Requires term_id; sent alone it is ignored upstream and the unfiltered corpus comes back.photo_licensed· boolean · optionnel
Restrict to records with at least one licensed photo, under any licence. For specific licences, use photo_license.
Exemple d'appel{"name": "inaturalist_search_observations", "arguments": {"q": "texte", "d1": "texte", "d2": "texte", "csi": [], "lat": 1, "lng": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"cap": 1, "error": {}, "shown": 1, "notice": "texte", "has_more": true, "truncated": true, "next_cursor": "texte", "observations": [], "total_results": 1, "applied_filters": {}}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».