//! Model Context Protocol (MCP) stdio server exposing the aerocontext
//! aeronautical-context system to AI agents.
//!
//! The binary speaks MCP over stdin/stdout (stdout belongs to the
//! transport; diagnostics go through `tracing` only) and serves four
//! tools today, with two more documented ahead of their providers:
//!
//! | Tool | Status | What it does |
//! |---|---|---|
//! | `resolve` | live | Identifier → kind/coordinates/name from the device's current FAA NASR navdata snapshot |
//! | `area_brief` | live | METAR/TAF/PIREP/SIGMET around an airport from AWC, plus Leidos Flight Service when vendor credentials are configured |
//! | `navdata_sync` | live | Bring the device navdata store current from its subscriptions |
//! | `navdata_status` | live | Subscriptions, store contents, and cycle tracking at a glance |
//! | `ownship_status` | planned | Live ownship state; mirrors [`aerocontext_core::OwnshipStatusProvider`] — wire types in [`future`] |
//! | `submit_command` | planned | Control-command submission; mirrors [`aerocontext_core::ControlCommandProvider`] — wire types in [`future`] |
//!
//! The planned tools become callable once a provider implements the
//! corresponding aerocontext-core capability trait; until then only
//! their parameter/result wire types exist, in [`future`].
//!
//! All data this server returns is advisory and for situational
//! awareness only — never use it as a sole source for real-world
//! navigation or flight decisions. When quoting weather, cite each
//! product's `raw_text` verbatim.

pub mod error;
pub mod future;
mod serve;
mod server;
mod store;
pub mod tools;

pub use error::ToolError;
pub use serve::{ServeError, serve_stdio};
pub use server::AeroContextServer;

/// `User-Agent` this server sends to AWC and the navdata sources, so
/// upstream operators can attribute and reach us.
pub const USER_AGENT: &str = concat!(
    "aerocontext-mcp/",
    env!("CARGO_PKG_VERSION"),
    " (+https://github.com/luofang34/v99n62)"
);
