Skip to main content
Glama
D0rSegal
by D0rSegal

SkyDeamonMcp

MCP wrapper for SkyDemon (Windows). Reverse-engineered login interop, read-only flightplan access, and offline airfield search + pilot notes / live feedback. No SkyDemon code is shipped — only wire/file formats are reimplemented (see tmp/decompiled/, git-ignored).

Setup

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
# or: .\.venv\Scripts\python.exe -m pip install -e . pytest

Related MCP server: Flighty MCP

Credentials

Copy .env.example to .env (git-ignored, never commit it):

Copy-Item .env.example .env
SKYDEMON_LOGIN=you@example.com
SKYDEMON_PASSWORD=...

The server loads this .env itself on startup (real environment wins if both are set), so just run it — no export/$env: needed.

Optional: SKYDEMON_ROUTES_DIR to override ~/Documents/SkyDemon/Routes, SKYDEMON_CHARTS_DIR for charts, SKYDEMON_INSTALL_DIR for the install dir.

Device identity is auto-detected per machine like the app does (MachineGuid → fastest MAC → fallback hash; WMI manufacturer/model), so moving machines just works — no const IDs.

Requires mcp<2 (v1 FastMCP API).

Test the API (live login, redacted output)

.\.venv\Scripts\python.exe tmp\live_check.py
.\.venv\Scripts\python.exe -m pytest tests -q

live_check.py loads .env in-process and prints only the license summary (name, type, expiry, token tail) — never the password or full token.

Run the MCP server (stdio)

.\.venv\Scripts\python.exe -m skydeamon.server
# or: .\.venv\Scripts\skydeamon-mcp.exe
# HTTP: .\.venv\Scripts\python.exe -m skydeamon.server --transport streamable-http --port 8000

Creds come from .env automatically (or process env). It logs in once on startup and holds the session in memory (skydeamon/session.py). Claude Desktop config:

{
  "mcpServers": {
    "skydemon": {
      "command": "C:\\Git\\SkyDeamonMcp\\.venv\\Scripts\\skydeamon-mcp.exe",
      "env": { "SKYDEMON_LOGIN": "...", "SKYDEMON_PASSWORD": "..." }
    }
  }
}

Run over HTTP (Streamable HTTP, current standard)

.\.venv\Scripts\skydeamon-mcp --transport streamable-http --port 8000
# flags: --transport stdio|streamable-http|sse (default stdio), --host, --port

Serves the same tools at http://127.0.0.1:8000/mcp (verified: initialize → tools/listtools/call). Keep it on localhost — the endpoint has no auth of its own; use a reverse proxy if you ever expose it. Old SSE transport is deprecated upstream, prefer streamable-http.

Tools

Tool

What it does

skydemon_login

Login once, reuse cached session (force:true to refresh)

skydemon_session_status

Cached session state (token tail only)

skydemon_logout

Drop the in-memory session

skydemon_api_info

API base + client identity

skydemon_list_flightplans

List .flightplan/.gpx on disk (read-only)

skydemon_read_flightplan

Summarize one plan (routes, legs, aircraft)

skydemon_search_airfields

General search over installed charts (ICAO/name, offline)

skydemon_airfield_info

Full record: runways, frequencies, fuel, circuits, contacts + pilot notes & live feedback (online, needs login)

skydemon_list_cloud_flightplans

List flightplans in cloud storage (read-only)

skydemon_download_cloud_flightplan

Download + summarize one cloud plan (save:true keeps a local copy)

skydemon_airfield_weather

Current METAR + TAF for an airfield (`what: metar

Layout

  • skydeamon/config.py — server URLs, GUIDs (from ILSpy decompile)

  • skydeamon/api.pyLogin/LoginDevice client + DeviceLogin parser

  • skydeamon/session.py — in-memory session cache

  • skydeamon/flightplans.py — read-only disk parsing

  • skydeamon/airfields.py — offline chart index (search) + pilot notes / feedback

  • skydeamon/weather.py — METAR/TAF via Bulletin/Refresh (5-min cache)

  • skydeamon/server.py — MCP server (stdio + --transport streamable-http)

  • tmp/ — local-only decompile + scratch (ignored)

Available Tools

10 tools
skydemon_airfield_infoA

Full airfield info: offline record (runways, frequencies, fuel, circuits, contacts) + online pilot notes & live feedback text.

Online extras need a login session; without one only offline data is returned (online_error set).

ParametersJSON Schema
NameRequiredDescriptionDefault
icao_or_nameYes
include_onlineNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that offline data (runways, frequencies, fuel, circuits, contacts) is always available, that online pilot notes and live feedback require a login session, and that online_error is set when unauthenticated. It doesn't cover rate limits, caching, or return shape, but the auth-dependent behavior is the key trait here and it's clearly explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences front-loaded with the tool's core output, followed by the conditional auth caveat. No filler; each clause carries information about contents or behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description must tell the agent what comes back—and it does (offline record fields plus online notes/feedback). It also surfaces the online_error signaling for unauthenticated calls. Missing explicit guidance on the icao_or_name format and any pagination or token-expiry behavior keeps it just short of 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains that include_online controls whether online extras are fetched (and by implication that without a session they degrade gracefully). icao_or_name accepts an ICAO code or a name, which is inferable from the param name but not stated explicitly in the description; the schema itself gives no description. This leaves one parameter underspecified, but the online/offline distinction—the more semantically loaded parameter—is covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieve) and resource (full airfield info) and enumerates the contents it returns (runways, frequencies, fuel, circuits, contacts, pilot notes). This clearly distinguishes it from skydemon_search_airfields, which is a discovery tool rather than a detail-fetch tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the context of use (detailed airfield lookup) and notes the login prerequisite, but does not explicitly say when to use this versus skydemon_search_airfields or what conditions would route the agent elsewhere. Usage guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_api_infoB

Show SkyDemon API base + client identity used by this wrapper.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not state that the call is read-only, that it has no side effects, or whether authentication is required (relevant given the sibling login/logout tools). For a zero-param info call that is low-risk, but the description still omits the behavioral facts an agent would want.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the key noun phrase front-loaded and no filler or repetition. Nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial zero-argument info tool with no output schema, the description names the two things returned (API base and client identity), which is roughly what an agent needs. Only the auth precondition is left unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is no per-parameter meaning to convey; baseline 4 applies. The description correctly implies no arguments are needed to invoke it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb ('Show') and a concrete resource ('SkyDemon API base + client identity'), which is specific enough to distinguish it from the session/flightplan/auth siblings. 'Client identity used by this wrapper' is slightly vague but understandable as the credential/client context this wrapper uses.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: it does not say whether this is a diagnostic/debugging call, whether it requires a prior login, or why an agent would pick it over skydemon_session_status. Usage is only inferable from the name and sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_download_cloud_flightplanA

Download one cloud flightplan and summarize it (no edits by default).

Args: name: exact cloud file name from skydemon_list_cloud_flightplans. save: also save a copy into the local Routes dir. overwrite: allow replacing an existing local file when saving.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
saveNo
overwriteNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose useful traits: the default is a summary with no edits, and save/overwrite describe local side effects. However, it is silent on authentication/network requirements, what happens when the named file does not exist, and whether any cloud state is touched, which matters for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence followed by a tight per-argument list; every line earns its place. The parenthetical '(no edits by default)' is slightly cryptic since no edit parameter exists, which is the only structural wobble.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an unannotated tool with no output schema and 0% schema coverage, the description covers the parameters and local side effects well but omits what the 'summary' actually contains, auth prerequisites, and failure behavior. Those gaps are tolerable but leave the agent guessing about the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it defines name as the exact cloud file name sourced from the list tool, save as writing a copy into the local Routes dir, and overwrite as permitting replacement of an existing local file only while saving. That is meaningful semantics beyond the bare boolean titles, though it never clarifies what happens if overwrite is true while save is false.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Download one cloud flightplan and summarize it', which is unambiguous about scope (one file, read-like operation). It also points at the sibling skydemon_list_cloud_flightplans as the source of the name. It stops short of contrasting itself with skydemon_read_flightplan, so an agent must infer whether 'read' and 'download' differ.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the workflow explicit: the name must be 'exact cloud file name from skydemon_list_cloud_flightplans', which tells the agent to list first and where the identifier comes from. No when-not guidance is given (e.g., vs. local skydemon_read_flightplan), so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_list_cloud_flightplansA

List flightplans in SkyDemon cloud storage (User root, read-only).

Args: pattern: server-side filter, e.g. '.flightplan' or '.gpx'.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo*.flightplan

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses read-only access, cloud storage scope, and server-side filtering, but omits authentication requirements, pagination behavior, error handling, and return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded, tightly scoped, and uses a structured Args section. Every sentence earns its place with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter list tool with no annotations and no output schema, the description is minimally adequate. It covers purpose, scope, and the parameter, but lacks mention of authentication requirements and any return or pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the single pattern parameter. It does so by explaining that pattern is a server-side filter and giving examples like '*.flightplan' and '*.gpx', adding meaning beyond the raw schema default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List), resource (flightplans), and scope (SkyDemon cloud storage, User root, read-only). This distinguishes it from the sibling skydemon_list_flightplans, which is presumably local rather than cloud-based.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like skydemon_list_flightplans or describe prerequisites such as authentication, leaving the agent to infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_list_flightplansA

List saved flightplans on disk (read-only). Default: ~/Documents/SkyDemon/Routes.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry behavioral load. It does disclose that the operation is read-only and that it defaults to a local disk path, which is useful context. However, it omits what happens if the directory is missing, the output format, or whether it recurses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses front-load the core action and scope, with zero filler. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description covers the essential scope (local disk, read-only, default path). It is nearly complete; naming the cloud sibling would fully disambiguate the choice.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description appropriately mentions the default path (~/Documents/SkyDemon/Routes), which is the only path-related behavior an agent needs to know. There are no parameters requiring further explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (saved flightplans), and clarifies disk scope versus the sibling skydemon_list_cloud_flightplans. It implies but does not name the cloud alternative explicitly, so an agent must infer the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: 'read-only' and 'on disk' suggest a safe local listing operation. But there is no explicit when/when-not guidance or pointer to skydemon_list_cloud_flightplans, so the agent must infer which listing tool to pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_loginA

Log in once; session is held in memory and reused (no repeated logins).

Args: login: username ('user' or 'user/slot'); defaults to SKYDEMON_LOGIN. password: password; defaults to SKYDEMON_PASSWORD env. force: true to force a fresh login even if a valid session exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
loginNo
passwordNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and delivers key context: the session is in-memory, credentials can come from env vars, and force overrides an existing valid session. It omits failure handling (invalid credentials, session expiry, non-interactive auth limitations).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-liner followed by a compact Args block; every sentence carries information. The prose is slightly clipped ('Log in once') but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param credential tool with no annotations, no output schema, and 0% schema coverage, the description supplies the credential sourcing, session reuse semantics, and the force override. Return values are unspecified, but that is a minor gap for a login call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and does: it documents all three parameters, including the login format ('user' or 'user/slot') and the SKYDEMON_LOGIN / SKYDEMON_PASSWORD env fallbacks, plus the meaning of force. This is meaningfully more than the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Log in') and immediately characterizes the session lifecycle (held in memory, reused). It does not explicitly name sibling tools like skydemon_session_status or skydemon_logout to differentiate, so it falls just short of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: log in once, then the session is reused, and set force=true for a fresh login. There is no explicit statement of when to call this versus checking session_status or how to recover from an expired session, so guidance is present but partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_logoutA

Drop the in-memory session (does not touch SkyDemon's own files).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that only the in-memory session is dropped and SkyDemon's own files are untouched, which is important side-effect context. However, it omits postconditions such as whether subsequent API calls will fail until login and whether logout is idempotent or requires an existing session.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted words. The core action is stated first, and the scope clarification is provided compactly in parentheses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple zero-parameter logout tool with no output schema, the description covers the core effect and explicitly limits the scope to the in-memory session. It stops short of describing the post-condition that later calls may require login, but that is largely inferable from the sibling login tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to explain. The schema description coverage is 100% and no parameter information is needed, making the baseline score of 4 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Drop the in-memory session." It also scopes what is not affected by noting it "does not touch SkyDemon's own files." It does not explicitly differentiate from siblings, though logout vs. login or session_status is clear from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites, and no alternatives named. The action is implied by the name, but the description does not say when a caller should log out or what to do if no session exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_read_flightplanA

Read one flightplan from disk (read-only, no edits).

Args: name: file name (e.g. 'EGKK-EGCC.flightplan') or absolute path.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It helpfully discloses the read-only, no-edit behavior and that the source is local disk, but says nothing about failure modes (missing file, bad path) or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short lines: a front-loaded purpose sentence followed by a minimal args block. Every element earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema read tool this is largely sufficient: purpose, read-only guarantee, and parameter format are all covered. Only the return shape and error behavior are left unstated, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It does: 'name' is described as a file name with a concrete example ('EGKK-EGCC.flightplan') or an absolute path, which gives format and an accepted alternative that the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read one flightplan from disk') and scopes it to a single file, which distinguishes it from list_flightplans and list_cloud_flightplans by implication. It does not explicitly name a sibling, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: 'Read one flightplan from disk' suggests use when you already know the file, but there is no explicit when-to-use, no exclusion of the cloud equivalents, and no prerequisite such as needing a known name first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_search_airfieldsA

General airfield search over installed charts (offline, read-only).

Matches ICAO exactly / by prefix, then name substring. Biggest airfields rank first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it does disclose meaningful behavior: offline operation, read-only nature, matching rules (ICAO exact/prefix then name substring), and ranking (biggest airfields first). It does not say what an empty result or invalid query yields, but that is a minor gap for a search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, front-loaded sentences with zero filler; the operational mode and matching behavior come before ranking detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-annotation, no-output-schema search tool, the description covers mode, matching, and ordering adequately. The main omission is any mention of the limit parameter and roughly how many results come back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain query matching semantics well (ICAO exact/prefix, name substring), but the 'limit' parameter is never mentioned, leaving half the parameters undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('airfield search') and identifies the scope ('over installed charts, offline'). It implicitly distinguishes itself from skydemon_airfield_info (detail lookup) via the word 'general', but never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'General airfield search' implies broad query use versus the detail-oriented sibling skydemon_airfield_info, but there is no explicit when-to-use/when-not statement or named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

skydemon_session_statusA

Show cached login state (token tail only, never the full secret).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description does real work: it discloses that the state is *cached* (a read of stored state, not a live re-validation) and that the response is deliberately masked to a token tail. Both are behavioral facts an agent could not derive from the empty schema. It omits auth/permission requirements and the exact return shape, keeping it out of the 5 range.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, and the most useful clause (cached, not live) sits first. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no annotations and no output schema, the description covers what it does and the security-relevant detail about the token. The only gap is the concrete return shape, which an agent must guess at since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description adds nothing parameter-related, which is appropriate since there is nothing to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('show ... cached login state') and distinguishes the operation from the login/logout siblings by framing it as a state read rather than an action. It stops short of explicitly naming a sibling or contrasting behavior, so it lands just below the top of the scale.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the call for checking whether a session exists, but there is no explicit when-to-use, no prerequisite, and no mention of alternatives such as skydemon_login when no cached state is found. No guidance is wrong, but nothing is spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedskydemon_airfield_info
    • First observedskydemon_api_info
    • First observedskydemon_download_cloud_flightplan
    • First observedskydemon_list_cloud_flightplans
    • First observedskydemon_list_flightplans
    • First observedskydemon_login
    • First observedskydemon_logout
    • First observedskydemon_read_flightplan
    • First observedskydemon_search_airfields
    • First observedskydemon_session_status

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Tools mostly have distinct purposes: local vs cloud flightplan listing/downloading are clearly separated, and search_airfields vs airfield_info differ by search-vs-detail. The only mild overlap is among the session/diagnostic tools (session_status, api_info, login, logout), but each is still distinguishable.

Naming Consistency4/5

All tools share a consistent 'skydemon_' prefix and predominantly use a verb_noun pattern (list_flightplans, read_flightplan, search_airfields, download_cloud_flightplan). Minor deviations are noun-style names (session_status, api_info, airfield_info), but overall the convention is predictable.

Tool Count5/5

10 tools is well-scoped for a SkyDemon wrapper, covering session management, local flightplans, cloud flightplans, and airfield lookups without bloat or redundancy.

Completeness3/5

The surface is deliberately read-only: no create/update/delete of local flightplans and no cloud upload operation, which are natural lifecycle gaps for the domain. Reading, searching, downloading, and auth are covered, so agents can accomplish inspection tasks but hit dead ends for any editing workflow.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to access and manage your Flighty flight data directly from the local macOS app database, supporting flight lists, status, searches, additions, and more.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables pilots to assemble a preflight briefing per 14 CFR §91.103 by fetching weather, airport info, aircraft performance, fuel estimates, alternates, and NOTAMs.
    6
    21 npm
    1
    AGPL 3.0