Vigi-Sky MCP
An MCP server providing AI agents with tools to query live ISS and aurora data, identify celestial objects like planets and satellites, access historical Hatch UDB archives, retrieve NASA APOD/NEO data, and view cultural astronomy content from 'Ciel des peuples'. It also supports submitting and managing citizen science sighting reports with coordinate rounding for privacy.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://vigi-sky.fr/mcpWhat its tools do
29 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (26)
Can change data (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to vigi-sky.fr ·
- Passed Endpoint is on the registry namespace domain ·
- Warning Advertises resources/templates/list but does not implement it
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Query live ISS and aurora data
- Identify celestial objects like planets and satellites
- Access historical Hatch UDB archives
- Submit citizen science sighting reports
Source and maintenance
Protocol and capabilities
- Server
- fr.vigi-sky/vigisky 2.9.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 29 advertised
- Resources
- 30 advertised
- Resource templates
- Not advertised
- Prompts
- 6 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
29 advertised
doctrine — Vigi-Sky identity and method
Return Vigi-Sky's identity card and method rules: founder, launch date, the book, the 'never UFO detected' rule, and the difference between the imported Hatch archive (18,116 historical cases) and Vigi-Sky's own public case files. Use it before describing Vigi-Sky or explaining its method; its counts are fixed at release, so for current numbers and API health use status, and for a page to cite use cite.
{
"type": "object",
"properties": {
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"entity": {
"type": "object"
},
"summary": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"public_consented_dossiers": {
"type": "integer"
}
},
"description": "Returns entity, book, summary (in lang), public_consented_dossiers, citations, provenance.",
"additionalProperties": true
}{
"title": "Vigi-Sky identity and method",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cite — Find the Vigi-Sky page to cite
Map a user question to the single best Vigi-Sky page (or the official GEIPAN page for French UFO reports) to cite as a source, with alternatives. Use it when you need a URL to back an answer; it does not answer the question itself, so call the matching tool (aurora, iss_city_passes, what_did_i_see...) for live data. Keyword match over a fixed page catalogue, no network call.
{
"type": "object",
"required": [
"query"
],
"properties": {
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"query": {
"type": "string",
"description": "The user's question or topic, in French or English, e.g. 'aurore boréale en France'."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"best": {
"type": "object"
},
"lang": {
"type": "string"
},
"query": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"alternatives": {
"type": "array"
}
},
"description": "Returns best {url, title}, alternatives [...], citations, provenance.",
"additionalProperties": true
}{
"title": "Find the Vigi-Sky page to cite",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}aurora — Aurora odds for a latitude
Return the current geomagnetic Kp index and whether an aurora can be seen from a given latitude, with the Kp needed there (France: Kp 6 in the far north, 7 to 8 in the centre, 9 in the south). Use it for 'can I see the aurora tonight'; for the solar storms behind it (CMEs) use solar, for a full night summary use tonight_sky. Live NOAA SWPC data through the Vigi-Sky API, cached 2 minutes; clouds and light pollution are not modelled.
{
"type": "object",
"required": [
"lat"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"aurora": {
"type": "object",
"properties": {
"kp_needed": {
"type": "integer",
"maximum": 9,
"minimum": 0
},
"kp_current": {
"type": [
"number",
"null"
]
},
"visible_now": {
"type": "boolean"
},
"user_latitude": {
"type": "number"
}
}
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns aurora {kp_current, kp_needed, visible_now, user_latitude}, citations, provenance.",
"additionalProperties": true
}{
"title": "Aurora odds for a latitude",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}iss_passes — Satellite passes over coordinates
List the next passes of the ISS and other bright satellites over any latitude/longitude, computed with SGP4 from current orbital elements, ISS first. By default only passes visible to the naked eye (dark sky, satellite lit by the Sun). Use it for arbitrary coordinates; for a named European city with a calendar feed use iss_city_passes, to explain something already seen use what_did_i_see. Orbital elements come from the Vigi-Sky API (cached 10 minutes).
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"limit": {
"type": "integer",
"default": 3,
"maximum": 30,
"minimum": 1,
"description": "Maximum number of passes to return (1-30, default 3)."
},
"night_only": {
"type": "boolean",
"default": true,
"description": "true (default): only passes in a dark sky with the satellite sunlit. false: include daylight passes."
},
"include_tle": {
"type": "boolean",
"default": false,
"description": "Also return the two-line orbital elements used for the calculation (default false)."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"passes": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"night_only": {
"type": "boolean"
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"n_potentially_visible": {
"type": "integer"
}
},
"description": "Returns passes [{name, start, max_el, az_start, az_max, az_end, end, potentially_visible}], night_only, citations, provenance.",
"additionalProperties": true
}{
"title": "Satellite passes over coordinates",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}identify — Match a precise sighting to a satellite
Check whether a precisely measured point in the sky (azimuth, elevation and exact time) matches one of about 160 bright satellites and rocket bodies within 2 degrees, also listing planets, the Moon and bright stars within 5 degrees. Use it when the witness measured the direction (compass, phone app); for a vague memory ('a light last night towards the west') use what_did_i_see, for a fixed star or planet use which_star. Returns insufficient_data when orbital elements are older than 72 hours. A match means compatible with the observation, not proven; the tool never says 'UFO detected'.
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat",
"az",
"el",
"time"
],
"properties": {
"az": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "Direction in degrees from true north, clockwise: 0 = north, 90 = east, 180 = south, 270 = west."
},
"el": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Height above the horizon in degrees: 0 = horizon, 90 = straight overhead."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"time": {
"type": "string",
"description": "Moment of the observation, ISO-8601 with a time zone, e.g. 2026-11-01T19:30:00Z."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"answer": {
"enum": [
"satellite",
"natural_object",
"nothing_known",
"unknown_catalog_stale"
],
"type": "string"
},
"matches": {
"type": "array"
},
"verdict": {
"enum": [
"compatible",
"no_catalog_match",
"insufficient_data"
],
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"best_match": {},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"separation_deg": {
"type": [
"number",
"null"
]
},
"rejected_matches": {
"type": "array"
},
"natural_objects_within_5deg": {
"type": "array"
}
},
"description": "Returns verdict (compatible | no_catalog_match | insufficient_data), answer, best_match, matches, natural_objects_within_5deg, rejected_matches, separation_deg.",
"additionalProperties": true
}{
"title": "Match a precise sighting to a satellite",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}nearby_cases — Historical UFO cases near a place
List historical UFO/UAP reports from the Hatch UDB archive (1900-2002, compiled by Larry Hatch) near a point, optionally filtered by country or text. Use it for the history of a region; it is not a live feed of recent sightings (use sky_events) and geocoding is approximate. Read-only query of the Vigi-Sky API; default radius 50 km, 200 km when filtering by country or text.
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat"
],
"properties": {
"q": {
"type": "string",
"description": "Optional text filter on the case summary, e.g. 'cigar' or 'Valensole'."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"country": {
"type": "string",
"description": "Optional country filter as written in the archive, e.g. FRANCE, USA."
},
"radius_km": {
"type": "number",
"maximum": 20000,
"description": "Search radius in kilometres (default 50, or 200 with country/q; maximum 20000).",
"exclusiveMinimum": 0
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"cases": {
"type": "array"
},
"query": {
"type": "object"
},
"archive": {
"type": "object"
},
"returned": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"not_vigisky_live": {
"type": "boolean"
}
},
"description": "Returns archive, query, returned, cases [...], not_vigisky_live (always true).",
"additionalProperties": true
}{
"title": "Historical UFO cases near a place",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}first_skies — Indigenous sky knowledge (Ciel des peuples)
Query Ciel des peuples: how 9 named nations (Diné, Pawnee, Inca, Maya, Mexica, Polynesia...) read the sky, with asterisms, coordinates, sources, and what is attested versus interpreted or kept private. Filter by nation, by a western constellation to compare cultures, by theme, or by free text; give lat to know which objects never rise there. Use it for cultural astronomy; for what is in the sky tonight use tonight_sky. Local curated data, no network call; never uses the generic 'the Indians'.
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free-text search over names and captions, e.g. 'pléiades', 'vénus'."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Optional observer latitude, to flag objects that never rise there."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"theme": {
"enum": [
"calendar",
"agriculture",
"navigation",
"ceremony",
"winter_protocol",
"architecture"
],
"type": "string",
"description": "Restrict to one use of the sky."
},
"nation": {
"type": "string",
"description": "Nation slug or name, e.g. dine (or navajo), pawnee, inca, maya, mexica, polynesie."
},
"western": {
"type": "string",
"description": "Western constellation or asterism to compare across nations, e.g. orion, pleiades."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"slug": {
"type": "string"
},
"ethics": {
"type": "string"
},
"objects": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"n_nations": {
"type": "integer"
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns n_nations or nation detail {slug, objects, sections, ethics}, or search hits.",
"additionalProperties": true
}{
"title": "Indigenous sky knowledge (Ciel des peuples)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}tonight_sky — Tonight's sky summary
One-call summary of tonight at a place: aurora chances (Kp), the next naked-eye satellite pass and cultural asterisms from Ciel des peuples. Use it for an overview; for details call aurora, iss_passes or first_skies directly, and for a score of observing conditions use observation_conditions. Combines live Vigi-Sky API data; by default ignores daylight passes. Not a UFO forecast.
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"night_only": {
"type": "boolean",
"default": true,
"description": "true (default): only passes in a dark sky. false: include daylight ISS passes."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"next_pass": {},
"night_only": {
"type": "boolean"
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"not_a_ufo_forecast": {
"type": "boolean"
},
"observer_condition": {
"type": "string"
},
"observer_sun_altitude": {
"type": "number"
}
},
"description": "Returns observer_sun_altitude, observer_condition, next_pass, aurora, asterisms, not_a_ufo_forecast.",
"additionalProperties": true
}{
"title": "Tonight's sky summary",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}observation_conditions — Observing conditions score
Return a score of how good the sky is for observing at a latitude right now (night, Moon, quiet Sun). Use it to decide whether to go out; it is not a probability of seeing a UFO. For the Moon alone use moon, for aurora use aurora. Live Vigi-Sky API; clouds are not included.
{
"type": "object",
"required": [
"lat"
],
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"interpretation": {
"type": "string"
},
"not_ufo_probability": {
"type": "boolean"
},
"observation_conditions_score": {
"type": [
"number",
"null"
]
}
},
"description": "Returns observation_conditions_score (or null when unavailable), interpretation, not_ufo_probability (always true).",
"additionalProperties": true
}{
"title": "Observing conditions score",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}solar — Solar activity and CMEs
Return recent coronal mass ejections (NASA DONKI) and the current Kp index. Use it to explain an aurora alert or space weather; for 'can I see the aurora from here' use aurora, which applies the latitude threshold. Live data through the Vigi-Sky API, cached 5 minutes; degrades to an explicit 'unavailable' when NASA does not answer.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"cme": {
"type": "object"
},
"aurora_kp": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns cme {...}, aurora_kp {...}, citations, provenance.",
"additionalProperties": true
}{
"title": "Solar activity and CMEs",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}status — Vigi-Sky service status and counts
Return the health of the Vigi-Sky API, the size of the Hatch archive and the number of public observations. Use it before quoting live counts or when another tool returned an error; for identity and method use doctrine. Live, cached 30 seconds to 2 minutes.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"mcp_version": {
"type": "string"
},
"availability": {
"type": "string"
},
"public_consented_dossiers": {
"type": "integer"
}
},
"description": "Returns availability, mcp_version, public_consented_dossiers, counts, citations, provenance.",
"additionalProperties": true
}{
"title": "Vigi-Sky service status and counts",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}hatch_stats — Hatch archive statistics
Return aggregate statistics of the Hatch UFO archive (18,116 cases, 1900-2002): cases by decade and top countries. Use it for the big picture of historical reports; for cases near a place use nearby_cases. Archive data, not 2026 sightings; live read of the Vigi-Sky API.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"n": {
"type": [
"integer",
"null"
]
},
"archive": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"top_countries": {
"type": "object"
},
"by_decade_1900_2002": {
"type": "object"
}
},
"description": "Returns archive, n, by_decade_1900_2002, top_countries, citations, provenance.",
"additionalProperties": true
}{
"title": "Hatch archive statistics",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}nasa_apod — NASA Astronomy Picture of the Day
Return today's NASA Astronomy Picture of the Day (today only, no past dates): title, date, image URL, explanation and credit. Use it to share today's picture; for the Sun's activity use solar, for asteroids near Earth use neo_watch. Says available=false instead of inventing a picture when NASA has not answered. Live NASA API through Vigi-Sky.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"apod": {
"type": "object",
"properties": {
"date": {
"type": [
"string",
"null"
]
},
"title": {
"type": "string"
},
"available": {
"type": "boolean"
},
"copyright": {
"type": [
"string",
"null"
]
},
"photographer": {
"type": [
"string",
"null"
]
}
}
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns apod {title, date, url, explanation, copyright, photographer, available}.",
"additionalProperties": true
}{
"title": "NASA Astronomy Picture of the Day",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}neo_watch — Asteroids passing Earth today
List today's near-Earth asteroid close approaches from NASA NeoWs (size, miss distance, speed, hazard flag). Use it for 'which asteroids pass near Earth today'; to simulate an impact use asteroid_impact. Astronomy, not UAP; live NASA data through Vigi-Sky.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"neo": {
"type": "object"
},
"note": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns neo {...}, note, citations, provenance.",
"additionalProperties": true
}{
"title": "Asteroids passing Earth today",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}capabilities — Map of Vigi-Sky MCP servers
Describe what this public server offers and what the separate local server (VigiSky Sentinel, 23 tools, runs on the user's PC) adds: photo and video analysis, night watch, star-field solving. Use it when a task needs local files or a camera, which this server cannot access; for sky questions this server answers directly, call the matching tool (what_did_i_see, iss_city_passes, aurora...). Static description, no network call.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"this_server": {
"type": "object"
},
"local_server": {
"type": "object"
}
},
"description": "Returns this_server {n_tools, tools}, local_server {workflows, install}.",
"additionalProperties": true
}{
"title": "Map of Vigi-Sky MCP servers",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}iss_city_passes — ISS passes over a city
Give the next naked-eye passes of the ISS (and Tiangong) over one of 41 French, Belgian, Swiss, UK and Irish cities, with local times, directions and a calendar feed whose alarm rings 10 minutes before each pass. Use it when the user names a city or wants an alert; for any other coordinates use iss_passes. Passes are precomputed every few hours by Vigi-Sky; with lat/lon the nearest covered city is used.
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"city": {
"type": "string",
"description": "City name, e.g. Lyon, Bruxelles, Genève, London, Dublin. Omit it to use lat/lon instead."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"city": {
"type": "string"
},
"page": {
"type": "string"
},
"passes": {
"type": "array"
},
"available": {
"type": "boolean"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"calendar_ics": {
"type": "string"
}
},
"description": "Returns city, passes [{when, start, end, max_el, from, highest, to, duration_min}], page, calendar_ics, available.",
"additionalProperties": true
}{
"title": "ISS passes over a city",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}what_did_i_see — Explain a light seen in the sky
Explain a light someone saw, even days later: compares place and time with the ISS, Tiangong, about 160 bright satellites, planets, the Moon and bright stars, and ranks the compatible candidates. Use it for an imprecise memory; with a measured azimuth and elevation use identify, for a steady point use which_star. Window ±12 minutes, up to 10 days back and 2 days ahead; aircraft, drones, lanterns and meteors are not modelled. A match means compatible with the observation, not proven; the tool never says 'UFO detected'.
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat",
"time"
],
"properties": {
"az": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "Optional rough direction in degrees from north (90 = east). Improves the ranking."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"time": {
"type": "string",
"description": "When it was seen, ISO-8601 with a time zone. Up to 10 days in the past or 2 days ahead."
},
"moving": {
"type": "boolean",
"description": "Optional: true if it moved across the sky, false if it stayed still. Excludes the other family of objects."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"best": {},
"others": {
"type": "array"
},
"verdict": {
"enum": [
"compatible",
"nothing_bright_known",
"unavailable"
],
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns verdict (compatible | nothing_bright_known | unavailable), best, others, asked.",
"additionalProperties": true
}{
"title": "Explain a light seen in the sky",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}which_star — Name a star or planet
Name the bright star, planet or Moon closest to a direction (azimuth, elevation) at a place and time, within 15 degrees. Use it for a steady point of light; for something that moved use what_did_i_see, for a precise satellite match use identify. Bright objects only (about magnitude 1.5 or brighter); refraction near the horizon is not modelled.
{
"type": "object",
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
],
"required": [
"lat",
"az",
"el"
],
"properties": {
"az": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "Direction in degrees from true north, clockwise: 0 = north, 90 = east, 180 = south, 270 = west."
},
"el": {
"type": "number",
"maximum": 90,
"minimum": 0,
"description": "Height above the horizon in degrees: 0 = horizon, 90 = straight overhead."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"time": {
"type": "string",
"description": "Moment of the observation, ISO-8601 (default now)."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"best": {},
"others": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns best {name, kind, az, el, separation_deg}, others [...], asked, note.",
"additionalProperties": true
}{
"title": "Name a star or planet",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}sky_events — Recent and upcoming sky events
List Vigi-Sky's sky events: predicted bright ISS passes and Starlink trains for the next 48 hours, and clusters of witness reports with the explanation tested against them (compatible / contradicted / untestable / under review). Use it for 'what happened or will happen in the sky'; for one city's passes use iss_city_passes, for one past sighting use what_did_i_see. Public data only, no personal information.
{
"type": "object",
"properties": {
"kind": {
"enum": [
"prevu",
"signale"
],
"type": "string",
"description": "prevu = predicted passes only, signale = reported lights only; omit for both."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 30,
"minimum": 1,
"description": "Maximum number of events (1-30, default 10)."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"events": {
"type": "array"
},
"available": {
"type": "boolean"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns events [{id, kind, t_start, verdict, url, ...}], available.",
"additionalProperties": true
}{
"title": "Recent and upcoming sky events",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}moon — Moon phase
Return the Moon's phase and illuminated percentage at a time (default now), the next full and new Moon, and what it means for observing faint objects. Use it for Moon questions; for an overall observing score use observation_conditions. Computed locally (Meeus), within about 0.5 hour of JPL ephemerides; no network call.
{
"type": "object",
"properties": {
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
},
"time": {
"type": "string",
"description": "Moment to compute, ISO-8601 (default now). Years 1900-2200."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"phase": {
"type": "string"
},
"waxing": {
"type": "boolean"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"illumination_pct": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"next_full_moon_utc": {
"type": "string"
}
},
"description": "Returns time_utc, phase (phase_fr, phase_en), illumination_pct, waxing, elongation_deg, next_full_moon_utc, next_new_moon_utc, observing advice.",
"additionalProperties": true
}{
"title": "Moon phase",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}triangulate — Height of an object seen by several witnesses
Estimate the height and distance of one object seen at the same moment by 2 to 6 witnesses, from each witness's position and line of sight, with a height range covering typical compass errors. Use it only when several people measured the same object at the same time; for a single witness use identify or what_did_i_see. Local geometry, no network call; the result is a candidate, never a proof.
{
"type": "object",
"required": [
"sightings"
],
"properties": {
"sightings": {
"type": "array",
"items": {
"type": "object",
"required": [
"lat",
"lon",
"az",
"el"
],
"properties": {
"az": {
"type": "number",
"maximum": 360,
"minimum": 0
},
"el": {
"type": "number",
"maximum": 90,
"minimum": 0
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180
}
}
},
"maxItems": 6,
"minItems": 2,
"description": "2 to 6 sightings, each {lat, lon, az, el}: witness position and measured direction of the object."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"status": {
"enum": [
"candidate",
"baseline_too_short",
"no_intersection"
],
"type": "string"
},
"quality": {
"type": "string"
},
"height_m": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns status (candidate | baseline_too_short | no_intersection), height_m, height_range_m_if_sightings_off_by_2deg, distance_from_witnesses_m, quality, interpretation.",
"additionalProperties": true
}{
"title": "Height of an object seen by several witnesses",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}eclipse_2027 — 2 August 2027 total solar eclipse at a place
Compute the total solar eclipse of 2 August 2027 at a place: total or partial, magnitude, contact times in local time, duration of totality and Sun height. Use it for that eclipse only: total from Spain and Morocco to Egypt, Saudi Arabia and Yemen, partial over Europe. Give a city (830 known) or coordinates. Computed locally, no network call.
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Observer latitude in decimal degrees, WGS84 (north positive)."
},
"lng": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
},
"city": {
"type": "string",
"description": "City name, e.g. Louxor, Cadix, Tanger, Paris. Omit it to use lat/lon."
},
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Language of the text fields: fr (default) or en."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"magnitude": {
"type": "number"
},
"type_here": {
"enum": [
"totale",
"partielle",
"aucune"
],
"type": "string"
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"visible_verdict": {
"type": "string"
}
},
"description": "Returns place, country, type_here (totale | partielle | aucune), magnitude, obscuration_pct, first_contact, totality_start, maximum, totality_end, last_contact, totality_s, sun_at_maximum, visible_verdict, safety.",
"additionalProperties": true
}{
"title": "2 August 2027 total solar eclipse at a place",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}asteroid_impact — Asteroid impact simulator
Simulate an asteroid impact: energy, air burst or crater, radii of blast, heat and earthquake effects, effects felt at a chosen distance, and how often such an object hits Earth (Collins, Melosh & Marcus 2005). Use it for 'what if' questions; for real asteroids passing today use neo_watch. Local model, no network call.
{
"type": "object",
"properties": {
"preset": {
"enum": [
"tcheliabinsk",
"toungouska",
"apophis",
"chicxulub"
],
"type": "string",
"description": "Known event that fills the parameters: tcheliabinsk (2013), toungouska (1908), apophis, chicxulub."
},
"angle_deg": {
"type": "number",
"default": 45,
"maximum": 90,
"minimum": 5,
"description": "Entry angle from the horizontal in degrees (5-90, default 45)."
},
"diameter_m": {
"type": "number",
"maximum": 30000,
"minimum": 1,
"description": "Asteroid diameter in metres (1-30000). Required unless a preset is given."
},
"distance_km": {
"type": "number",
"maximum": 20000,
"minimum": 0.1,
"description": "Effects felt at this distance from impact"
},
"density_kg_m3": {
"type": "number",
"default": 3000,
"maximum": 8000,
"minimum": 1000,
"description": "Density in kg/m³: 1500 cometary ice, 3000 stony rock (default), 8000 iron."
},
"velocity_km_s": {
"type": "number",
"default": 20,
"maximum": 72,
"minimum": 11,
"description": "Entry speed in km/s (11-72, default 20)."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"regime": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"energy_mt_tnt": {
"type": "number"
},
"zones_radius_km": {
"type": "object"
}
},
"description": "Returns regime, energy_mt_tnt, hiroshima_equivalent, burst_altitude_km or crater_diameter_km, earthquake_magnitude, zones_radius_km, at_distance, average_interval_years.",
"additionalProperties": true
}{
"title": "Asteroid impact simulator",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}hawking_black_hole — Black hole calculator (Hawking)
Compute a black hole of any mass: event-horizon radius, Hawking temperature, entropy and evaporation time. Use it for physics questions about black holes; give exactly one of mass_kg, mass_solar or preset. Exact formulas, computed locally, no network call.
{
"type": "object",
"properties": {
"preset": {
"enum": [
"asteroid",
"cygnus-x-1",
"earth",
"m87",
"moon",
"sagittarius-a",
"sun"
],
"type": "string",
"description": "Known object: asteroid, moon, earth, sun, cygnus-x-1, sagittarius-a, m87."
},
"mass_kg": {
"type": "number",
"maximum": 1e+45,
"minimum": 1000,
"description": "Mass in kilograms (1e3 to 1e45)."
},
"mass_solar": {
"type": "number",
"maximum": 1000000000000,
"minimum": 1e-25,
"description": "Mass in solar masses (1e-25 to 1e12)."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"horizon_radius_m": {
"type": "number"
},
"hawking_temperature_k": {
"type": "number"
},
"evaporation_time_years": {
"type": "number"
}
},
"description": "Returns mass_kg, mass_solar, horizon_radius_m, hawking_temperature_k, entropy_over_kb, radiated_power_w, evaporation_time_years, evaporating_today.",
"additionalProperties": true
}{
"title": "Black hole calculator (Hawking)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}drake_equation — Drake equation and Fermi paradox
Compute the Drake equation N (detectable civilisations in the Milky Way) from your factors or a preset, and the probability that we are alone once uncertainty is spread honestly (Sandberg, Drexler & Ord 2018). Use it for 'are we alone' and Fermi-paradox questions; it says nothing about UFO sightings (for a light in the sky use what_did_i_see). Unset factors take the preset or default values. Local calculation, no network call.
{
"type": "object",
"properties": {
"L": {
"type": "number",
"maximum": 10000000000,
"minimum": 0,
"description": "Years a civilisation stays detectable (0-1e10)."
},
"R": {
"type": "number",
"maximum": 1000,
"minimum": 0,
"description": "Star formation rate in the Milky Way, stars per year (0-1000)."
},
"fc": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Fraction of those that emit detectable signals (0-1)."
},
"fi": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Fraction of those where intelligence appears (0-1)."
},
"fl": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Fraction of those where life appears (0-1)."
},
"fp": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Fraction of stars with planets (0-1)."
},
"ne": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Habitable planets per star with planets (0-100)."
},
"preset": {
"enum": [
"pessimiste",
"gb-bas",
"gb-haut",
"optimiste"
],
"type": "string",
"description": "Set of factors: pessimiste, gb-bas, gb-haut (Green Bank 1961 low/high), optimiste."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"inputs": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"N_civilisations_detectable_in_milky_way": {
"type": "number"
}
},
"description": "Returns N_civilisations_detectable_in_milky_way, inputs, presets, reading, uncertainty_matters.",
"additionalProperties": true
}{
"title": "Drake equation and Fermi paradox",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}draft_sighting_report — Draft a sighting report (step 1 of 2)
Step 1 of 2: prepare a draft report of something seen in the sky, without publishing or sending anything. Returns a summary to show the witness, a draft id and a secret token, and, when place and time are given, the immediate explanation. Then, only after the witness explicitly agrees, call submit_sighting_report; otherwise cancel_sighting_report. Drafts expire after 10 minutes; at most 5 drafts per client per hour.
{
"type": "object",
"required": [
"description",
"consent"
],
"properties": {
"az": {
"type": "number",
"maximum": 360,
"minimum": 0,
"description": "Measured direction in degrees from north, if any."
},
"el": {
"type": "number",
"maximum": 90,
"minimum": -10,
"description": "Measured height above the horizon in degrees, if any."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Witness latitude (rounded to about 1 km before publication)."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Witness longitude (rounded to about 1 km before publication)."
},
"email": {
"type": "string",
"description": "Optional contact email; never published."
},
"ville": {
"type": "string",
"maxLength": 80,
"description": "Town or city of the observation."
},
"prenom": {
"type": "string",
"maxLength": 80,
"description": "Optional first name shown on the public record; 'Anonyme' if omitted."
},
"consent": {
"type": "boolean",
"description": "true once the witness has said they want to report this sighting (asked before drafting). Their approval of the summary is a second, separate agreement, required before submit_sighting_report. If false, the tool asks for it."
},
"date_heure": {
"type": "string",
"description": "When it was seen, ISO-8601 with a time zone."
},
"description": {
"type": "string",
"maxLength": 2000,
"minLength": 10,
"description": "What was seen, in the witness's words."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"jeton": {
"type": "string"
},
"status": {
"enum": [
"pending",
"elicitation_requise",
"limite_atteinte"
],
"type": "string"
},
"action_id": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"etape_suivante": {
"type": "string"
},
"explication_immediate": {},
"resume_a_montrer_au_temoin": {
"type": "object"
}
},
"description": "Returns status (pending), action_id, jeton (secret token), expires_dans_secondes, resume_a_montrer_au_temoin, explication_immediate, publication (what becomes public); or status elicitation_requise / limite_atteinte.",
"additionalProperties": true
}{
"title": "Draft a sighting report (step 1 of 2)",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}submit_sighting_report — Submit a drafted sighting report (step 2 of 2)
Step 2 of 2: send a draft prepared by draft_sighting_report to the Vigi-Sky Witness station and notify the team. Call it only after showing the summary and getting the witness's explicit agreement in the conversation. Publishes first name (or 'Anonyme'), town, date, description and position rounded to about 1 km; the email is never published. One submission per draft; at most 3 per client per day and 30 per day overall.
{
"type": "object",
"required": [
"action_id",
"jeton"
],
"properties": {
"jeton": {
"type": "string",
"maxLength": 64,
"minLength": 16,
"description": "Secret token returned by draft_sighting_report."
},
"action_id": {
"type": "integer",
"minimum": 1,
"description": "Draft id returned by draft_sighting_report."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"erreur": {
"type": "string"
},
"status": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
},
"observation_id": {
"type": "integer"
}
},
"description": "Returns status (executed), observation_id, suite; or erreur with statut a_verifier when the transmission is uncertain (do not resend).",
"additionalProperties": true
}{
"title": "Submit a drafted sighting report (step 2 of 2)",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}cancel_sighting_report — Cancel a drafted sighting report
Cancel a draft that was not submitted and erase its personal data. Use it when the witness declines or changes their mind after draft_sighting_report; a submitted report cannot be cancelled here. Repeating the call is harmless.
{
"type": "object",
"required": [
"action_id",
"jeton"
],
"properties": {
"jeton": {
"type": "string",
"maxLength": 64,
"minLength": 16,
"description": "Secret token returned by draft_sighting_report."
},
"action_id": {
"type": "integer",
"minimum": 1,
"description": "Draft id returned by draft_sighting_report."
}
}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"erreur": {
"type": "string"
},
"status": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns status of the cancelled draft, or erreur when it was already processed.",
"additionalProperties": true
}{
"title": "Cancel a drafted sighting report",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}sighting_report_limits — Sighting report counters and limits
Return the number of sighting-report drafts by status and the limits that apply (per client and overall), with no personal data. Use it when draft_sighting_report or submit_sighting_report refused because of a limit.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"citations",
"provenance"
],
"properties": {
"plafonds": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"compteurs": {
"type": "object"
},
"provenance": {
"type": "object",
"properties": {
"never": {
"type": "string"
},
"source": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"computed_at": {
"type": "string"
},
"limitations": {
"type": "string"
},
"source_updated_at": {}
}
}
},
"description": "Returns compteurs (drafts by status), plafonds (limits).",
"additionalProperties": true
}{
"title": "Sighting report counters and limits",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
6 advertised
witness_intake — Prise en charge témoin
Collecte d'un témoignage ciel à la manière Vigi-Sky (mesurer, ne pas conclure).
debunk_checklist — Liste d'hypothèses naturelles
Contrôle des explications naturelles pour une lumière signalée.
night_planning
Plan a French observing night: Kp, ISS, moon, Perseids/eclipse clashes.
geipan_form
Draft a GEIPAN-quality report from a messy testimony.
sentinel_session
How an AI will drive Sentinel locally once vigisky-sentinel ships.
cultural_sky
Answer a cultural-astronomy question with named nations and sources.
Resources
30 advertised
Doctrine
vigisky://doctrinellms.txt
vigisky://llmsGlossary
vigisky://glossaryAgencies
vigisky://agenciesGEIPAN PAN classes
vigisky://pan-classesSky units
vigisky://unitsReference dossiers
vigisky://casesNatural-confusion tests
vigisky://confusion-matrixVenus trap
vigisky://venus-trapWho does what
vigisky://compare-sourcesHow to report (FR first)
vigisky://report-guideFirst ten minutes
vigisky://witness-checklistKeep a usable original
vigisky://photo-recipeVideo physics clues
vigisky://sky-proofMeteor-shower peaks
vigisky://meteor-calendarWitness handbook index
vigisky://book12 Aug 2026 eclipse
vigisky://eclipse-2026Sentinel desktop app
vigisky://sentinelLocal Sentinel MCP contract
vigisky://sentinel-contractFirst Skies — 9 named nations
vigisky://first-skiesDiné / Navajo sky
vigisky://first-skies/dineMaya sky
vigisky://first-skies/mayaLakota sky
vigisky://first-skies/lakotaSkidi Pawnee sky
vigisky://first-skies/pawneeOjibwe / Anishinaabe sky
vigisky://first-skies/ojibweMexica sky
vigisky://first-skies/mexicaInuit sky
vigisky://first-skies/inuitAndean / Inca sky
vigisky://first-skies/incaPolynesian navigators
vigisky://first-skies/polynesievigisky-sky-view — Carte du ciel Vigi-Sky
Application intégrée : trajectoires, objets visés et phase de la Lune, dessinés dans la conversation.
ui://vigisky/sky-view-v1.html90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1602 ms
- 95th percentile latency
- 1602 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1602 ms · metadata changed · 29 tool(s), 30 resource(s), 6 prompt(s); warnings: Advertises resources/templates/list but does not implement it
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http vigi-sky-mcp https://vigi-sky.fr/mcpCodex
codex mcp add vigi-sky-mcp --url https://vigi-sky.fr/mcpCursor
{
"mcpServers": {
"vigi-sky-mcp": {
"url": "https://vigi-sky.fr/mcp"
}
}
}Cline
{
"mcpServers": {
"vigi-sky-mcp": {
"type": "streamableHttp",
"url": "https://vigi-sky.fr/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"vigi-sky-mcp": {
"type": "http",
"url": "https://vigi-sky.fr/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http vigi-sky-mcp https://vigi-sky.fr/mcpClaude Desktop
https://vigi-sky.fr/mcpWindsurf
{
"mcpServers": {
"vigi-sky-mcp": {
"serverUrl": "https://vigi-sky.fr/mcp"
}
}
}Let your agent find its tools
Find servers like Vigi-Sky MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other ai and machine learning servers
Do you run Vigi-Sky MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.