Skip to main content
Glama

get_state

Read-only

Retrieve the complete desktop state in one call: permissions, displays, running and installed apps, open windows with bounds, browser tabs, and active virtual cursors.

Instructions

Inspect the unified desktop state in one call: macOS permissions, displays, running/installed apps, all open macOS windows with bounds & IDs, all browsers with their open tabs, and active virtual cursors.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_state"
  }
}

Input Schema

NameRequiredDescriptionDefault
include_all_appsNoIf true, include all installed /Applications bundles in addition to running apps (default false).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv3.0.0

TDQS

A4/5.0
Behavior4/5

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

With only readOnlyHint=true in the annotations, the description carries most of the burden, and it does disclose the contents of the returned payload in detail. It does not state whether missing macOS permissions degrade or fail the call, nor anything about cost/latency of a full-desktop sweep, but for a read-only inspection tool the disclosure is solid.

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 front-loaded sentence with a colon-introduced enumeration; every clause names a distinct part of the returned state and nothing is redundant. The list is long but each item earns its place by telling the agent what data is available without a separate call.

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?

With one optional parameter, no nested objects, and no output schema, the description appropriately substitutes for a return-value spec by enumerating the payload sections. The remaining gap is behavior under missing permissions or partial failures, which an agent may need before relying on this as its first call.

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 100%, so include_all_apps is already fully documented as a boolean defaulting to false. The phrase 'running/installed apps' loosely signals that both sets are reachable, but the description adds no meaning beyond the schema, so the baseline 3 applies.

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 gives a specific verb ('Inspect') and a clearly scoped resource ('the unified desktop state'), then enumerates exactly what that aggregate covers: permissions, displays, apps, windows with bounds & IDs, browser tabs, and cursors. This makes it distinguishable from granular siblings such as get_window_state, browser_tab_state, list_apps, and list_windows, which each return only a slice of this payload.

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?

'In one call' implicitly positions this as the consolidated snapshot alternative to the narrower sibling tools, so an agent can infer the overview use case. However, there is no explicit when-to-use / when-not-to-use statement and no named alternative telling the agent to prefer a granular tool when only one slice is needed.

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