Skip to main content
Glama

Diagnose runtime

diagnose_runtime
Read-only

Run a comprehensive probe of the Inkscape runtime to return an updated capability matrix, including version, actions, and tool registry, after environment changes.

Instructions

Probe the local Inkscape + Python runtime fresh and return the capability matrix.

When to use: to FORCE a fresh probe (e.g. after installing Inkscape/fonts). For a cheap cached read use list_capabilities; for live-transport detail use check_live_support.

Key params: none. Re-runs the probe every call and refreshes the cache that list_capabilities and inkscape://runtime/capabilities serve.

Return shape: Capabilities — Inkscape version, available actions, export formats, data dirs, inkex, DBus/live transport availability, fonts, the curated intents map, and the authoritative MCP tool surface (tool_count + tools: name + one-line purpose + risk class, from the live registry). Missing backends are reported in notes, never crashed.

Example: diagnose_runtime()

Risk class: low (read-only probe).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoHuman-readable degradation messages (e.g. 'inkscape not found').
toolsNoThe authoritative MCP tool surface: each entry is {name, purpose, risk}, sourced from the live FastMCP registry. Counts only `@mcp.tool`s (not resources or prompts). Populated by the tools/system layer before serving; empty on a raw probe.
actionsNoAction ids from `inkscape --action-list` (enumeration only; not executable).
intentsNoCurated natural-language goal → tool(s) map: each entry is {goal_pattern, tools, how_to, group}. The same data the read-only `how_do_i` tool matches against; surfaced here so an agent can browse the whole map. Guidance only — executes nothing, no raw-action hatch (ADR-003). Host-independent (not probed).
probed_atYesUTC ISO-8601 timestamp of when this probe ran.
font_countNoFont faces reported by `fc-list` (0 ⇒ fontconfig broken/absent).
inkex_pathNoPath to bundled `inkex/__init__.py`, or null if not found.
tool_countNoAuthoritative number of registered `@mcp.tool`s. Equals `len(tools)` and the live `mcp.list_tools()` count — one unambiguous number so agents stop deriving it. Populated from the live FastMCP registry, not probed from Inkscape.
export_typesNoExport-type tokens parsed from the `--export-type=` list in inkscape --help.
inkex_versionNo`__version__` read from inkex sources (NOT imported), or null if unknown.
meets_minimumNoWhether the detected version is >= MINIMUM_VERSION (1, 3, 0).
user_data_dirNoInkscape user data directory (`--user-data-directory`).
python_versionYesInterpreter version running this server.
inkscape_binaryNoAbsolute path to the Inkscape binary, or null if absent.
system_data_dirNoInkscape system data directory (`--system-data-directory`).
dbus_session_busNoWhether DBUS_SESSION_BUS_ADDRESS is set (session bus present).
has_path_actionsNoWhether any `path-*` action is present.
inkscape_versionNoRaw version string reported by `inkscape --version`.
has_export_actionsNoWhether any `export-*` action is present.
has_object_actionsNoWhether any `object-*` action is present.
has_select_actionsNoWhether any `select*` action is present.
inkscape_availableYesWhether an Inkscape binary was found and ran.
shell_mode_availableNoWhether `inkscape --shell` (the headless shell engine/ADR-007) can run here. True when an Inkscape binary is present (shell mode ships on all supported 1.x). Whether the warm engine is USED is the separate INKSCAPE_MCP_ENGINE_MODE gate.
dbus_inkscape_presentNoWhether an `org.inkscape.Inkscape*` name is on the session bus right now.
inkscape_version_tupleNoParsed (major, minor, patch) version, or null if unparsable.
live_extension_socket_availableNoWhether the live helper extension is installed under a data dir (unshipped).
Behavior5/5

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

The description adds behavioral details beyond annotations: re-runs every call, refreshes cache, reports missing backends in notes without crashing, and clarifies risk class as low. This complements the readOnlyHint and destructiveHint annotations with actionable context.

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 well-structured: purpose sentence, usage guidelines, key params, return shape, example, and risk class. Every sentence is informative and concise, with no wasted words.

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

Completeness5/5

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

Given the tool's complexity (runtime probe with multiple outputs) and the presence of an output schema, the description fully explains the return shape (version, actions, formats, etc.) and side effects (cache refresh). It is complete for agent decision-making.

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?

With zero parameters and 100% schema coverage, the description adds minimal but helpful confirmation ('Key params: none'). This avoids ambiguity, though it does not add extensive new meaning beyond the schema.

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?

The description clearly states it probes the local runtime and returns a capability matrix, using specific verbs ('probe') and noun ('capability matrix'). It distinguishes from siblings by explicitly naming alternatives: list_capabilities (cached) and check_live_support (live-transport detail).

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

Usage Guidelines5/5

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

The description explicitly says when to use ('to FORCE a fresh probe') and gives alternatives ('for a cheap cached read use list_capabilities'). It also states key params are none, providing clear context.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jjjsood/inkscape-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server