Satellite passes, live positions, visibility, cloud forecasts and radio Doppler. Free, no key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Find the best upcoming pass(es) over a location, ranked by the rating seeksat.com shows ("what's the best pass tonight?"). Give `satellite` to rank that one satellite's passes. Omit it to scan: in visual mode (default) the popular satellites plus every satellite in CelesTrak's visual group (the brightest objects in the sky, about 160, many of them spent rocket bodies), over 72 hours by default (168 at most); in radio mode every satellite with known downlinks (about a thousand), optionally only those with a downlink in `bands` or of a kind in `modes`, over 24 hours by default (72 at most). A scan reports satellitesScanned, leaves out satellites whose orbital elements are more than 14 days old at the start (skippedStaleElements) and any pass more than 14 days from its satellite's elements, counts what else it skipped, and radio passes list the satellite's downlinks. Returns `best` (the top pass) plus a `passes` array of the top-ranked options, each tagged with its satellite. Each pass has rise/peak/set times (UTC, plus riseLocal etc. on the observer's clock), peak elevation, azimuths with compass words (direction), the range at the peak (peakRangeKm), duration, brightness (magnitude, lower is brighter; peakMagnitudeEstimated means no measured magnitude is known for it, so it is a cautious guess; most of the bright satellites have a measured one, and a Starlink still flying in its launch train uses a typical train brightness, a rule of thumb rather than a measurement), and when it can be seen by eye: visibleFrom/visibleUntil (null if never on that pass) plus leavesShadow/entersShadow when it appears or fades mid-sky. rating is the rating seeksat.com shows for the pass: { word (Poor, Fair, Good, Great, Excellent), bars (1-5), level (low, ok, good), reason }. In visual mode it is how much brighter than the faintest visible star the pass gets for skyType (headroomMag), stepped down for a cloudy forecast up to 4 days ahead, and no higher than Fair when the brightness is estimated; in radio mode it is the peak height, a bar lower for each 6 dB of extra path loss when the satellite is more than 2,000 km away at the peak (8,000 km costs two bars), and no higher than Fair when SatNOGS stations tried at least 3 times in 30 days and heard nothing (the result then carries the satellite's reception and receptionSource). captureProbability (0-1) is the chance a camera captures the pass: sky darkness, height, clear-sky odds and length, with brightness playing no part; quality is its old name, the same number. Rise and set are when it crosses minElevation, not the horizon. In visual mode rise and set are the part of the pass that can be seen, so they can start or end mid-sky, and peak, peakElevationDeg and direction.peak are the highest point of that part (the whole pass may climb higher). passUrl opens that pass on seeksat.com, from that place, to hand to the user. Visual passes rank by rating bars, then a known brightness before an estimated one, then headroomMag, then captureProbability; the cloud forecast for the location is folded in where it reaches (cloudCoverPct at the peak; `weather` says whether a forecast was used). Radio scans rank satellites with a downlink a hobby receiver can tune (30 MHz to 1 GHz) ahead of the rest unless `bands` is given, then by rating bars, then how recently SatNOGS stations heard the satellite (last 48 hours, 7 days, 30 days, unknown, probably silent), then peak elevation, then captureProbability. A probably silent satellite (SatNOGS stations tried at least 3 times in 30 days and heard nothing) rates no higher than Fair; unknown is never held down. Radio rows carry the satellite's reception (its best downlink's). Downlinks carry reception from SatNOGS Network observations when known: { state (heard, silent: stations tried and heard nothing, or unknown: no observations, never a sign it is dead), heardLast48h, heardLast7d, heardLast30d, failedLast30d, lastHeard }, listed most recently heard first; receptionSource names the source (CC BY-SA 4.0). An empty result comes with a note saying why. Set chart:true to also render the winning pass's sky chart in this same call.
observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead.
observer longitude in decimal degrees, east positive and west negative (-180 to 180).
"visual" (default): naked-eye passes, sunlit while the sky is dark; "radio": every line-of-sight pass, day or night.
radio scan only: keep satellites with a downlink in these bands: hf (3-30 MHz), wx (137 MHz weather), 2m (144-148 MHz), 70cm (420-450 MHz), l (1-2 GHz), s (2-4 GHz), other. Default: any band.
true to also render the winning pass's polar sky chart (PNG) and return it in this same result. Default false.
how many ranked passes to return, 1 to 20. Default 3.
radio scan only: keep satellites with a downlink of one of these kinds, matched on its mode or label, e.g. ["fm", "apt", "sstv"]. Default: any.
old name for minElevation; still accepted.
how dark the observer's sky is, for the visual rating as on seeksat.com: "city" (stars to magnitude 3.5), "suburban" (stars to magnitude 4.5), "rural" (stars to magnitude 5.5), "dark" (stars to magnitude 6.5). Default "suburban".
where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup.
NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". Omit to scan: visual mode scans the popular satellites plus CelesTrak's visual group, radio mode every satellite with known downlinks.
how far ahead to look, in hours, up to 240 (10 days). Default 72. With no satellite named, a visual scan stops at 168, and a radio scan defaults to 24 and stops at 72.
lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10.
old name for minElevation; still accepted.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http seeksat https://seeksat.com/api/mcp
Find the best upcoming pass(es) over a location, ranked by the rating seeksat.com shows ("what's the best pass tonight?"). Give `satellite` to rank that one satellite's passes. Omit it to scan: in visual mode (default) the popular satellites plus every satellite in CelesTrak's visual group (the brightest objects in the sky, about 160, many of them spent rocket bodies), over 72 hours by default (168 at most); in radio mode every satellite with known downlinks (about a thousand), optionally only those with a downlink in `bands` or of a kind in `modes`, over 24 hours by default (72 at most). A scan reports satellitesScanned, leaves out satellites whose orbital elements are more than 14 days old at the start (skippedStaleElements) and any pass more than 14 days from its satellite's elements, counts what else it skipped, and radio passes list the satellite's downlinks. Returns `best` (the top pass) plus a `passes` array of the top-ranked options, each tagged with its satellite. Each pass has rise/peak/set times (UTC, plus riseLocal etc. on the observer's clock), peak elevation, azimuths with compass words (direction), the range at the peak (peakRangeKm), duration, brightness (magnitude, lower is brighter; peakMagnitudeEstimated means no measured magnitude is known for it, so it is a cautious guess; most of the bright satellites have a measured one, and a Starlink still flying in its launch train uses a typical train brightness, a rule of thumb rather than a measurement), and when it can be seen by eye: visibleFrom/visibleUntil (null if never on that pass) plus leavesShadow/entersShadow when it appears or fades mid-sky. rating is the rating seeksat.com shows for the pass: { word (Poor, Fair, Good, Great, Excellent), bars (1-5), level (low, ok, good), reason }. In visual mode it is how much brighter than the faintest visible star the pass gets for skyType (headroomMag), stepped down for a cloudy forecast up to 4 days ahead, and no higher than Fair when the brightness is estimated; in radio mode it is the peak height, a bar lower for each 6 dB of extra path loss when the satellite is more than 2,000 km away at the peak (8,000 km costs two bars), and no higher than Fair when SatNOGS stations tried at least 3 times in 30 days and heard nothing (the result then carries the satellite's reception and receptionSource). captureProbability (0-1) is the chance a camera captures the pass: sky darkness, height, clear-sky odds and length, with brightness playing no part; quality is its old name, the same number. Rise and set are when it crosses minElevation, not the horizon. In visual mode rise and set are the part of the pass that can be seen, so they can start or end mid-sky, and peak, peakElevationDeg and direction.peak are the highest point of that part (the whole pass may climb higher). passUrl opens that pass on seeksat.com, from that place, to hand to the user. Visual passes rank by rating bars, then a known brightness before an estimated one, then headroomMag, then captureProbability; the cloud forecast for the location is folded in where it reaches (cloudCoverPct at the peak; `weather` says whether a forecast was used). Radio scans rank satellites with a downlink a hobby receiver can tune (30 MHz to 1 GHz) ahead of the rest unless `bands` is given, then by rating bars, then how recently SatNOGS stations heard the satellite (last 48 hours, 7 days, 30 days, unknown, probably silent), then peak elevation, then captureProbability. A probably silent satellite (SatNOGS stations tried at least 3 times in 30 days and heard nothing) rates no higher than Fair; unknown is never held down. Radio rows carry the satellite's reception (its best downlink's). Downlinks carry reception from SatNOGS Network observations when known: { state (heard, silent: stations tried and heard nothing, or unknown: no observations, never a sign it is dead), heardLast48h, heardLast7d, heardLast30d, failedLast30d, lastHeard }, listed most recently heard first; receptionSource names the source (CC BY-SA 4.0). An empty result comes with a note saying why. Set chart:true to also render the winning pass's sky chart in this same call.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| mode | string | "visual" (default): naked-eye passes, sunlit while the sky is dark; "radio": every line-of-sight pass, day or night. |
| bands | array | radio scan only: keep satellites with a downlink in these bands: hf (3-30 MHz), wx (137 MHz weather), 2m (144-148 MHz), 70cm (420-450 MHz), l (1-2 GHz), s (2-4 GHz), other. Default: any band. |
| chart | boolean | true to also render the winning pass's polar sky chart (PNG) and return it in this same result. Default false. |
| limit | integer | how many ranked passes to return, 1 to 20. Default 3. |
| modes | array | radio scan only: keep satellites with a downlink of one of these kinds, matched on its mode or label, e.g. ["fm", "apt", "sstv"]. Default: any. |
| minElev | number | old name for minElevation; still accepted. |
| skyType | string | how dark the observer's sky is, for the visual rating as on seeksat.com: "city" (stars to magnitude 3.5), "suburban" (stars to magnitude 4.5), "rural" (stars to magnitude 5.5), "dark" (stars to magnitude 6.5). Default "suburban". |
| location | string |
List every upcoming pass of one satellite over a location in the next windowHours (default 48, up to 240), in time order. Each pass has rise/peak/set times (UTC, plus riseLocal etc. on the observer's clock), peak elevation, azimuths with compass words (direction), the range at the peak (peakRangeKm), duration, brightness (magnitude, lower is brighter; peakMagnitudeEstimated means no measured magnitude is known for it, so it is a cautious guess; most of the bright satellites have a measured one, and a Starlink still flying in its launch train uses a typical train brightness, a rule of thumb rather than a measurement), and when it can be seen by eye: visibleFrom/visibleUntil (null if never on that pass) plus leavesShadow/entersShadow when it appears or fades mid-sky. rating is the rating seeksat.com shows for the pass: { word (Poor, Fair, Good, Great, Excellent), bars (1-5), level (low, ok, good), reason }. In visual mode it is how much brighter than the faintest visible star the pass gets for skyType (headroomMag), stepped down for a cloudy forecast up to 4 days ahead, and no higher than Fair when the brightness is estimated; in radio mode it is the peak height, a bar lower for each 6 dB of extra path loss when the satellite is more than 2,000 km away at the peak (8,000 km costs two bars), and no higher than Fair when SatNOGS stations tried at least 3 times in 30 days and heard nothing (the result then carries the satellite's reception and receptionSource). captureProbability (0-1) is the chance a camera captures the pass: sky darkness, height, clear-sky odds and length, with brightness playing no part; quality is its old name, the same number. Rise and set are when it crosses minElevation, not the horizon. In visual mode rise and set are the part of the pass that can be seen, so they can start or end mid-sky, and peak, peakElevationDeg and direction.peak are the highest point of that part (the whole pass may climb higher). passUrl opens that pass on seeksat.com, from that place, to hand to the user. In visual mode it fetches the cloud forecast for the place, as best_pass does (`weather` says whether one was used). This is the tool for comparing passes or finding the best or brightest one over a span of days, not just the next. An empty list comes with a note saying why (it never rises high enough from that latitude, the sky never gets dark, and so on). Feed a pass's peak time to get_pass_chart (to draw it) or get_pass_weather (to check clouds). To rank passes across many satellites at once, use best_pass.
Render a polar sky chart (PNG) of a satellite's pass over a location: where to look, with the moon, planets and stars in their real positions. Returns JSON (the charted pass as a full pass row, the same as find_passes gives, and a one-line summary) and the image. A geostationary satellite has no passes: the result gives `stationary` (where to point) instead. By default it charts the next pass; give `time` (the rise or peak of a pass from find_passes or best_pass) to chart that pass instead. Use the same minElevation as the pass came from. A time more than 30 days from the orbital elements' epoch is refused.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| mode | string | "visual" (default): naked-eye passes, sunlit while the sky is dark; "radio": every line-of-sight pass, day or night. |
| time | string | charts the pass around this time (a pass's rise or peak from find_passes or best_pass). Default: the next pass from now. ISO 8601 with Z or an offset, e.g. "2026-11-14T21:00:00-06:00"; a time with no offset, e.g. "2026-11-14T21:00", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note. |
| minElev | number | old name for minElevation; still accepted. |
Cloud-cover forecast (Open-Meteo and MET Norway) and the chance of a clear view for a location at one time, such as a pass's peak. The forecast reaches about 7 to 16 days ahead. viewingProbability is the clear-sky chance (0-1), blended toward 0.5 the further ahead the time is, since forecasts lose skill. When there is no forecast for that time (in the past, beyond the forecast, a time it cannot read, or the forecast could not be fetched) the result is available:false with a reason, never a stand-in number.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| time* | string | the time to check, e.g. a pass's peak. ISO 8601 with Z or an offset, e.g. "2026-11-14T21:00:00-06:00"; a time with no offset, e.g. "2026-11-14T21:00", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note. |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
Where a satellite is now, or at a given time: the point on Earth straight below it (latDeg, lonDeg, not where it is in your sky), its altitude, and whether it is sunlit, with url (its page on seeksat.com). A location is optional: it only sets the time zone for local times and for reading a time with no offset (UTC without one). A time more than 30 days from the orbital elements' epoch is refused.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| time | string | when. Default: now. ISO 8601 with Z or an offset, e.g. "2026-11-14T21:00:00-06:00"; a time with no offset, e.g. "2026-11-14T21:00", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note. |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. Optional here. |
| passTime | string |
Radio details for one pass of a satellite over a location: its known downlink (and uplink) frequencies, the Doppler swing, when to tune to what frequency (at 10 and 30 degrees up and closest approach), and a table (at most 40 evenly spaced rows) of time, azimuth, elevation, range and receive frequency for pointing an antenna and tuning a radio. Uses the next pass above minElevation, or the one peaking nearest `time` (past or future, within 30 days of the orbital elements' epoch). A satellite that never sets here (geosynchronous) gets the next 24 hours instead. Give frequencyMHz to use a frequency other than the default downlink; the default is the most recently heard downlink when SatNOGS heard one, else the catalog's. Downlinks carry reception from SatNOGS Network observations when known: { state (heard, silent: stations tried and heard nothing, or unknown: no observations, never a sign it is dead), heardLast48h, heardLast7d, heardLast30d, failedLast30d, lastHeard }, listed most recently heard first; receptionSource names the source (CC BY-SA 4.0). Predictions from published elements: the transmitter's own frequency offset is unknown, so the curve's shape is what to compare.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| time | string | a time near the wanted pass's peak (e.g. from find_passes), past or future. Default: the next pass. ISO 8601 with Z or an offset, e.g. "2026-11-14T21:00:00-06:00"; a time with no offset, e.g. "2026-11-14T21:00", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note. |
"What was that moving light?" Given where and when a light was seen, lists the satellites that were sunlit, above the horizon and within `tolerance` degrees of that spot, best match first, from every satellite in the catalog (active satellites plus CelesTrak's visual group). Needs the Sun at least about 3 degrees below the horizon. Say where it was with azimuth (degrees from north) or direction (a compass word such as "NE"), plus elevation (degrees above the horizon); add travel (the compass direction it was moving towards) to rank by direction of travel too. Each candidate has its azimuth, elevation, angular error, direction of travel, magnitude (estimated where none is measured, see magnitudeEstimated), name and a url to its page. Satellites whose orbital elements are more than 14 days from the sighting time are left out and counted (skippedStaleElements).
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| time | string | time of the sighting. Default: now. ISO 8601 with Z or an offset, e.g. "2026-11-14T21:00:00-06:00"; a time with no offset, e.g. "2026-11-14T21:00", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note. |
| limit | integer | how many candidates to return, 1 to 10. Default 5. |
List the popular satellites (ISS, Tiangong, Hubble and a few others) with each one's orbit data freshness. This is not the full list: every other tool also accepts any NORAD catalog number, e.g. 25544.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
}Convenience shortcut: the next pass of one satellite from a location (looks windowHours ahead, default 72). Use this only when the user wants "the next pass". Set chart:true to also render that pass's sky chart in this same call. To compare upcoming passes, or find the best one over several days, use find_passes (one satellite) or best_pass (many) instead. When there is no pass, a note says why.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| mode | string | "visual" (default): naked-eye passes, sunlit while the sky is dark; "radio": every line-of-sight pass, day or night. |
| chart | boolean | true to also render that pass's polar sky chart (PNG) and return it in this same result. Default false. |
| minElev | number | old name for minElevation; still accepted. |
| skyType | string | how dark the observer's sky is, for the visual rating as on seeksat.com: "city" (stars to magnitude 3.5), "suburban" (stars to magnitude 4.5), "rural" (stars to magnitude 5.5), "dark" (stars to magnitude 6.5). Default "suburban". |
Search the full satellite catalog (about 17,000 objects) by name, alias or NORAD number, best match first. Use it to turn a name like "SDO" or "NOAA 19" into a NORAD number for the other tools; names outside the popular list only resolve directly on an exact whole-name match. To find satellites by downlink kind, search with mode "radio" and the kind as the query (query "sstv").
| Argument | Type | Description |
|---|---|---|
| mode | string | "visual" (default): best name match first; "radio": satellites with known radio downlinks first among equally good matches. To list satellites with a kind of downlink, set mode "radio" and put the kind in query (e.g. query "sstv"); mode itself takes only "visual" or "radio". |
| limit | integer | how many results to return, 1 to 20. Default 10. |
| query* | string | a name, part of one, or a NORAD number, e.g. "sdo", "noaa 19", "25544". With mode "radio", a downlink kind as the whole query (e.g. "sstv", "aprs", "cw") lists satellites that have one. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): best name match first; \"radio\": satellites with known radio downlinks first among equally good matches. To list satellites with a kind of downlink, set mode \"radio\" and put the kind in query (e.g. query \"sstv\"); mode itself takes only \"visual\" or \"radio\"."
},
"limit": {
"type": "integer",
"maximum": 20,
"description": "how many results to return, 1 to 20. Default 10.",
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"maxLength": 64,
"minLength": 1,
"description": "a name, part of one, or a NORAD number, e.g. \"sdo\", \"noaa 19\", \"25544\". With mode \"radio\", a downlink kind as the whole query (e.g. \"sstv\", \"aprs\", \"cw\") lists satellites that have one."
}
},
"additionalProperties": false
}What is in the sky over a location right now, from every satellite in the catalog (about 17,000, active satellites plus CelesTrak's visual group; most debris is not in it). mode "visual" (default) lists sunlit satellites above minElevation while the sky is dark there (Sun more than about 6 degrees down), brightest first; magnitudes are measured for most of the bright satellites (McCants' observations) and estimated for the rest (magnitudeEstimated). mode "radio" lists satellites with known downlinks above minElevation, those with a downlink a hobby receiver can tune (30 MHz to 1 GHz) first, then the more recently heard by SatNOGS stations, then highest first, with their downlinks and reception. Each has azimuth with a compass word, elevation, range, sunlit, magnitude and a url to its page. Satellites whose orbital elements are more than 14 days from now are left out and counted (skippedStaleElements). For upcoming passes rather than this moment, use best_pass or find_passes.
| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| mode | string | "visual" (default): sunlit satellites in a dark sky, brightest first; "radio": satellites with known downlinks, highest first, day or night. |
| limit | integer | how many satellites to return, 1 to 50. Default 10. |
| minElev | number |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 15, 2026.
A very long tool description (over 4,000 characters) is hard to review and easy to hide instructions in.
Fix: Keep the description to what the tool does and when to use it; move reference material to resources or docs.
| where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| satellite | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". Omit to scan: visual mode scans the popular satellites plus CelesTrak's visual group, radio mode every satellite with known downlinks. |
| windowHours | number | how far ahead to look, in hours, up to 240 (10 days). Default 72. With no satellite named, a visual scan stops at 168, and a radio scan defaults to 24 and stops at 72. |
| minElevation | number | lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): naked-eye passes, sunlit while the sky is dark; \"radio\": every line-of-sight pass, day or night."
},
"bands": {
"type": "array",
"items": {
"enum": [
"hf",
"wx",
"2m",
"70cm",
"l",
"s",
"other"
],
"type": "string"
},
"description": "radio scan only: keep satellites with a downlink in these bands: hf (3-30 MHz), wx (137 MHz weather), 2m (144-148 MHz), 70cm (420-450 MHz), l (1-2 GHz), s (2-4 GHz), other. Default: any band."
},
"chart": {
"type": "boolean",
"description": "true to also render the winning pass's polar sky chart (PNG) and return it in this same result. Default false."
},
"limit": {
"type": "integer",
"maximum": 20,
"description": "how many ranked passes to return, 1 to 20. Default 3.",
"exclusiveMinimum": 0
},
"modes": {
"type": "array",
"items": {
"enum": [
"fm",
"ssb",
"usb",
"lsb",
"cw",
"sstv",
"aprs",
"afsk",
"bpsk",
"gmsk",
"fsk",
"lrpt",
"apt",
"repeater",
"transponder",
"beacon",
"digipeater",
"voice",
"telemetry"
],
"type": "string"
},
"description": "radio scan only: keep satellites with a downlink of one of these kinds, matched on its mode or label, e.g. [\"fm\", \"apt\", \"sstv\"]. Default: any."
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"skyType": {
"enum": [
"city",
"suburban",
"rural",
"dark"
],
"type": "string",
"description": "how dark the observer's sky is, for the visual rating as on seeksat.com: \"city\" (stars to magnitude 3.5), \"suburban\" (stars to magnitude 4.5), \"rural\" (stars to magnitude 5.5), \"dark\" (stars to magnitude 6.5). Default \"suburban\"."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\". Omit to scan: visual mode scans the popular satellites plus CelesTrak's visual group, radio mode every satellite with known downlinks."
},
"windowHours": {
"type": "number",
"maximum": 240,
"description": "how far ahead to look, in hours, up to 240 (10 days). Default 72. With no satellite named, a visual scan stops at 168, and a radio scan defaults to 24 and stops at 72.",
"exclusiveMinimum": 0
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}| Argument | Type | Description |
|---|---|---|
| lat | number | observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead. |
| lon | number | observer longitude in decimal degrees, east positive and west negative (-180 to 180). |
| mode | string | "visual" (default): naked-eye passes, sunlit while the sky is dark; "radio": every line-of-sight pass, day or night. |
| minElev | number | old name for minElevation; still accepted. |
| skyType | string | how dark the observer's sky is, for the visual rating as on seeksat.com: "city" (stars to magnitude 3.5), "suburban" (stars to magnitude 4.5), "rural" (stars to magnitude 5.5), "dark" (stars to magnitude 6.5). Default "suburban". |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| satellite* | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". |
| windowHours | number | how far ahead to look, in hours, up to 240 (10 days). Default 48. |
| minElevation | number | lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"satellite"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): naked-eye passes, sunlit while the sky is dark; \"radio\": every line-of-sight pass, day or night."
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"skyType": {
"enum": [
"city",
"suburban",
"rural",
"dark"
],
"type": "string",
"description": "how dark the observer's sky is, for the visual rating as on seeksat.com: \"city\" (stars to magnitude 3.5), \"suburban\" (stars to magnitude 4.5), \"rural\" (stars to magnitude 5.5), \"dark\" (stars to magnitude 6.5). Default \"suburban\"."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\"."
},
"windowHours": {
"type": "number",
"maximum": 240,
"description": "how far ahead to look, in hours, up to 240 (10 days). Default 48.",
"exclusiveMinimum": 0
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}| skyType | string | how dark the observer's sky is, for the visual rating as on seeksat.com: "city" (stars to magnitude 3.5), "suburban" (stars to magnitude 4.5), "rural" (stars to magnitude 5.5), "dark" (stars to magnitude 6.5). Default "suburban". |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| passTime | string | old name for time; still accepted. |
| satellite* | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". |
| windowHours | number | how far ahead to look, in hours, up to 240 (10 days). Default 72. Only used to find the next pass when no time is given. |
| minElevation | number | lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"satellite"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): naked-eye passes, sunlit while the sky is dark; \"radio\": every line-of-sight pass, day or night."
},
"time": {
"type": "string",
"maxLength": 64,
"description": "charts the pass around this time (a pass's rise or peak from find_passes or best_pass). Default: the next pass from now. ISO 8601 with Z or an offset, e.g. \"2026-11-14T21:00:00-06:00\"; a time with no offset, e.g. \"2026-11-14T21:00\", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note."
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"skyType": {
"enum": [
"city",
"suburban",
"rural",
"dark"
],
"type": "string",
"description": "how dark the observer's sky is, for the visual rating as on seeksat.com: \"city\" (stars to magnitude 3.5), \"suburban\" (stars to magnitude 4.5), \"rural\" (stars to magnitude 5.5), \"dark\" (stars to magnitude 6.5). Default \"suburban\"."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"passTime": {
"type": "string",
"maxLength": 64,
"description": "old name for time; still accepted."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\"."
},
"windowHours": {
"type": "number",
"maximum": 240,
"description": "how far ahead to look, in hours, up to 240 (10 days). Default 72. Only used to find the next pass when no time is given.",
"exclusiveMinimum": 0
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"time"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"time": {
"type": "string",
"maxLength": 64,
"description": "the time to check, e.g. a pass's peak. ISO 8601 with Z or an offset, e.g. \"2026-11-14T21:00:00-06:00\"; a time with no offset, e.g. \"2026-11-14T21:00\", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
}
},
"additionalProperties": false
}| old name for time; still accepted. |
| satellite* | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"satellite"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"time": {
"type": "string",
"maxLength": 64,
"description": "when. Default: now. ISO 8601 with Z or an offset, e.g. \"2026-11-14T21:00:00-06:00\"; a time with no offset, e.g. \"2026-11-14T21:00\", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. Optional here."
},
"passTime": {
"type": "string",
"maxLength": 64,
"description": "old name for time; still accepted."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\"."
}
},
"additionalProperties": false
}| minElev | number | old name for minElevation; still accepted. |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| passTime | string | old name for time; still accepted. |
| satellite* | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". e.g. "so-50" or 27607. |
| windowHours | number | how far ahead to look, in hours, up to 240 (10 days). Default 48. How far past the start to look for a pass. |
| frequencyMHz | number | the downlink to compute Doppler for, in MHz. Default: the satellite's default known downlink. |
| minElevation | number | lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"satellite"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"time": {
"type": "string",
"maxLength": 64,
"description": "a time near the wanted pass's peak (e.g. from find_passes), past or future. Default: the next pass. ISO 8601 with Z or an offset, e.g. \"2026-11-14T21:00:00-06:00\"; a time with no offset, e.g. \"2026-11-14T21:00\", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note."
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"passTime": {
"type": "string",
"maxLength": 64,
"description": "old name for time; still accepted."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\". e.g. \"so-50\" or 27607."
},
"windowHours": {
"type": "number",
"maximum": 240,
"description": "how far ahead to look, in hours, up to 240 (10 days). Default 48. How far past the start to look for a pass.",
"exclusiveMinimum": 0
},
"frequencyMHz": {
"type": "number",
"maximum": 300000,
"description": "the downlink to compute Doppler for, in MHz. Default: the satellite's default known downlink.",
"exclusiveMinimum": 0
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}| travel |
| string |
| the compass direction it was moving towards, e.g. "NE". Optional, but it sharpens the match. |
| azimuth | number | where it was, in degrees from north (90 = east), 0 to 360. Give this or direction. |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| passTime | string | old name for time; still accepted. |
| direction | string | where it was, as a compass word: N, NNE, NE, ... or "north-east". |
| elevation* | number | how high it was, in degrees above the horizon (0 to 90, 90 = straight up). Required. |
| tolerance | number | how far off the reported spot a match may be, in degrees, 1 to 45. Default 10. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"elevation"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"time": {
"type": "string",
"maxLength": 64,
"description": "time of the sighting. Default: now. ISO 8601 with Z or an offset, e.g. \"2026-11-14T21:00:00-06:00\"; a time with no offset, e.g. \"2026-11-14T21:00\", is read in the observer's time zone, and the result echoes how it was read (interpretedAs). A local time the clocks skip at a daylight-saving change is moved forward, with a note."
},
"limit": {
"type": "integer",
"maximum": 10,
"description": "how many candidates to return, 1 to 10. Default 5.",
"exclusiveMinimum": 0
},
"travel": {
"type": "string",
"maxLength": 20,
"description": "the compass direction it was moving towards, e.g. \"NE\". Optional, but it sharpens the match."
},
"azimuth": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "where it was, in degrees from north (90 = east), 0 to 360. Give this or direction."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"passTime": {
"type": "string",
"maxLength": 64,
"description": "old name for time; still accepted."
},
"direction": {
"type": "string",
"maxLength": 20,
"description": "where it was, as a compass word: N, NNE, NE, ... or \"north-east\"."
},
"elevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "how high it was, in degrees above the horizon (0 to 90, 90 = straight up). Required."
},
"tolerance": {
"type": "number",
"maximum": 45,
"minimum": 1,
"description": "how far off the reported spot a match may be, in degrees, 1 to 45. Default 10."
}
},
"additionalProperties": false
}| location |
| string |
| where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| satellite* | any | NORAD catalog number (as a number or a string) or a name, e.g. 25544, "25544" or "iss". |
| windowHours | number | how far ahead to look, in hours, up to 240 (10 days). Default 72. |
| minElevation | number | lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"satellite"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): naked-eye passes, sunlit while the sky is dark; \"radio\": every line-of-sight pass, day or night."
},
"chart": {
"type": "boolean",
"description": "true to also render that pass's polar sky chart (PNG) and return it in this same result. Default false."
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"skyType": {
"enum": [
"city",
"suburban",
"rural",
"dark"
],
"type": "string",
"description": "how dark the observer's sky is, for the visual rating as on seeksat.com: \"city\" (stars to magnitude 3.5), \"suburban\" (stars to magnitude 4.5), \"rural\" (stars to magnitude 5.5), \"dark\" (stars to magnitude 6.5). Default \"suburban\"."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"satellite": {
"anyOf": [
{
"type": "string",
"maxLength": 64,
"minLength": 1
},
{
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
],
"description": "NORAD catalog number (as a number or a string) or a name, e.g. 25544, \"25544\" or \"iss\"."
},
"windowHours": {
"type": "number",
"maximum": 240,
"description": "how far ahead to look, in hours, up to 240 (10 days). Default 72.",
"exclusiveMinimum": 0
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation that counts: a pass must climb above it, and rise and set are when it crosses it, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}| old name for minElevation; still accepted. |
| location | string | where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form ("41.88, -87.63", "41.88N 87.63W", "41°52'48"N 87°37'48"W", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup. |
| minElevation | number | lowest elevation to list, in degrees above the horizon (0 to 90). Default 10. |
| minElevationDeg | number | old name for minElevation; still accepted. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "observer latitude in decimal degrees, north positive (-90 to 90). Give it with lon, or give location instead."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "observer longitude in decimal degrees, east positive and west negative (-180 to 180)."
},
"mode": {
"enum": [
"visual",
"radio"
],
"type": "string",
"description": "\"visual\" (default): sunlit satellites in a dark sky, brightest first; \"radio\": satellites with known downlinks, highest first, day or night."
},
"limit": {
"type": "integer",
"maximum": 50,
"description": "how many satellites to return, 1 to 50. Default 10.",
"exclusiveMinimum": 0
},
"minElev": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
},
"location": {
"type": "string",
"maxLength": 200,
"description": "where the observer is, when lat and lon are not given (they win when both are): a Maidenhead grid square (EN52, EN52ve, EN52ve12), coordinates in any common form (\"41.88, -87.63\", \"41.88N 87.63W\", \"41°52'48\"N 87°37'48\"W\", a Google Maps link or geo: URI), all read locally, or a place name (city, address, landmark) looked up with OpenStreetMap. Prefer lat and lon, or a grid square, when you have them: a place name is a network lookup."
},
"minElevation": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "lowest elevation to list, in degrees above the horizon (0 to 90). Default 10."
},
"minElevationDeg": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "old name for minElevation; still accepted."
}
},
"additionalProperties": false
}