Skip to main content
Glama

LMCP State

lmcp_state
Read-only

Returns a structured snapshot of the LMCP environment: server and tray versions, detected AI client, cloud relay state, TCC permission states (Calendar/Reminders/Contacts), and a compact summary of which services (Mail/Calendar/Contacts/Teams/OneDrive/Reminders/Notes) are reachable. Fast (<500ms), passive — never prompts the user, never opens app windows, never touches the network. Call this when you need to verify the environment is healthy before attempting a tool, or to understand what's installed and accessible. If services.scan_pending is true, the background service scan hasn't finished yet (just after startup) and the per-service running/accounts values are placeholders — do NOT treat them as a real outage; just call the tool you need. Otherwise services.scanned_seconds_ago tells you how many seconds ago that scan ran (cadence ~60s): the per-service values are a snapshot, NOT a live probe. A false/0/not available for a service is advisory only — it can be stale (e.g. the user connected WhatsApp or opened Mail seconds ago) — so never use this tool as a preflight gate to skip or cancel a task; the actual tool call is the source of truth, just attempt it. For reporting failures, use report_problem instead — it captures this same snapshot plus logs and submits to the team.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
tccNoTCC permission states. Automation keys (<app>_automation) are one of notDetermined | authorized | denied | notRunning.
archNo
updateNo
versionNoServing (running) server version.
built_atNoUTC build timestamp (F-041). 'unknown' if unstamped.
servicesNoPer-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/accounts values are placeholders and not yet authoritative. Once scanned, `scanned_seconds_ago` gives the age (seconds) of that background snapshot and `freshness` restates that a false/0/not-available is advisory, not a live check — never gate a task on it.
ai_clientNo
build_shaNoGit short SHA of the build (F-041). 'unknown' if unstamped.
machine_idNo
os_versionNo
web_agentsNoWeb (cloud-relay) clients, counts only: `count` connected (absent when unknown), `relayed_calls_since_launch`, `last_remote_call` {at, tool, ok, ago_s}.
tray_versionNo
last_activityNo
skill_captureNoDark-launch counters for repeated-workflow detection (user-generated skills, PR-1). would_fire_signatures = how many times a save-this-workflow nudge WOULD have fired; ring_size = entries in the recent-calls ring. PRIVACY: the ring is IN-MEMORY ONLY — never written to disk, never transmitted, cleared on restart — and argument values are PII-scrubbed on entry, so it holds the SHAPE of a workflow, not its content. No UI acts on it yet; it exists to tune thresholds. Opt out with the skill_capture_enabled config flag.
license_statusNotrial | active | expired
cloud_token_setNo
tunnel_connectedNo
cloud_data_enabledNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changed
    • addedOutput schema / properties / last_activity / properties / last_remote
      Added value: +{
      +  "description": "Last call relayed from a web client (source cloud), when there was one.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / tcc / description
      Previous value: -"TCC permission states, e.g. granted | denied | authorized."New value: +"TCC permission states. Automation keys (<app>_automation) are one of notDetermined | authorized | denied | notRunning."
    • addedOutput schema / properties / tcc / properties / mail_automation_last_known
      Added value: +{
      +  "description": "Present only when mail_automation is notRunning: \"authorized\" if the grant was confirmed before. Not a live verdict.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / messages_automation
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / notes_automation
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / omnifocus_automation
      Added value: +{
      +  "description": "Each <app>_automation is present only if the app is installed; <app>_last_known and <app>_note may accompany it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / web_agents
      Added value: +{
      +  "description": "Web (cloud-relay) clients, counts only: `count` connected (absent when unknown), `relayed_calls_since_launch`, `last_remote_call` {at, tool, ok, ago_s}.",
      +  "type": "object"
      +}
  2. Changed7 schema fields changed
    • removedOutput schema / properties / last_activity / properties / last_remote
      Removed value: -{
      -  "description": "Last call relayed from a web client (source cloud), when there was one.",
      -  "type": "object"
      -}
    • changedOutput schema / properties / tcc / description
      Previous value: -"TCC permission states. Automation keys (<app>_automation) are one of notDetermined | authorized | denied | notRunning."New value: +"TCC permission states, e.g. granted | denied | authorized."
    • removedOutput schema / properties / tcc / properties / mail_automation_last_known
      Removed value: -{
      -  "description": "Present only when mail_automation is notRunning: \"authorized\" if the grant was confirmed before. Not a live verdict.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / tcc / properties / messages_automation
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / tcc / properties / notes_automation
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / tcc / properties / omnifocus_automation
      Removed value: -{
      -  "description": "Each <app>_automation is present only if the app is installed; <app>_last_known and <app>_note may accompany it.",
      -  "type": "string"
      -}
    • removedOutput schema / properties / web_agents
      Removed value: -{
      -  "description": "Web (cloud-relay) clients, counts only: `count` connected (absent when unknown), `relayed_calls_since_launch`, `last_remote_call` {at, tool, ok, ago_s}.",
      -  "type": "object"
      -}
  3. Changed7 schema fields changed
    • addedOutput schema / properties / last_activity / properties / last_remote
      Added value: +{
      +  "description": "Last call relayed from a web client (source cloud), when there was one.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / tcc / description
      Previous value: -"TCC permission states, e.g. granted | denied | authorized."New value: +"TCC permission states. Automation keys (<app>_automation) are one of notDetermined | authorized | denied | notRunning."
    • addedOutput schema / properties / tcc / properties / mail_automation_last_known
      Added value: +{
      +  "description": "Present only when mail_automation is notRunning: \"authorized\" if the grant was confirmed before. Not a live verdict.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / messages_automation
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / notes_automation
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / tcc / properties / omnifocus_automation
      Added value: +{
      +  "description": "Each <app>_automation is present only if the app is installed; <app>_last_known and <app>_note may accompany it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / web_agents
      Added value: +{
      +  "description": "Web (cloud-relay) clients, counts only: `count` connected (absent when unknown), `relayed_calls_since_launch`, `last_remote_call` {at, tool, ok, ago_s}.",
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • addedOutput schema / properties / skill_capture
      Added value: +{
      +  "description": "Dark-launch counters for repeated-workflow detection (user-generated skills, PR-1). would_fire_signatures = how many times a save-this-workflow nudge WOULD have fired; ring_size = entries in the recent-calls ring. PRIVACY: the ring is IN-MEMORY ONLY — never written to disk, never transmitted, cleared on restart — and argument values are PII-scrubbed on entry, so it holds the SHAPE of a workflow, not its content. No UI acts on it yet; it exists to tune thresholds. Opt out with the skill_capture_enabled config flag.",
      +  "properties": {
      +    "ring_size": {
      +      "type": "integer"
      +    },
      +    "would_fire_signatures": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed2 schema fields changed
    • addedOutput schema / properties / build_sha
      Added value: +{
      +  "description": "Git short SHA of the build (F-041). 'unknown' if unstamped.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / built_at
      Added value: +{
      +  "description": "UTC build timestamp (F-041). 'unknown' if unstamped.",
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / properties / services / description
      Previous value: -"Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/accounts values are placeholders and not yet authoritative."New value: +"Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/accounts values are placeholders and not yet authoritative. Once scanned, `scanned_seconds_ago` gives the age (seconds) of that background snapshot and `freshness` restates that a false/0/not-available is advisory, not a live check — never gate a task on it."
  7. Changed1 schema field changed
    • changedOutput schema / properties / services / description
      Previous value: -"Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain."New value: +"Per-domain reachability summary (mail, calendar, contacts, teams, onedrive, slack, …); shape varies by domain. May include `scan_pending: true` right after startup, meaning the per-service running/accounts values are placeholders and not yet authoritative."
  8. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnly/non-destructive annotations: discloses latency (<500ms), passivity (never prompts, never opens windows, never touches network), the meaning of services.scan_pending placeholders, the ~60s scan cadence, and the advisory-only staleness semantics of false/0 values.

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?

Dense and front-loaded: the snapshot contents come first, then the usage rule, then the caveats. It is on the long side, but nearly every clause (scan_pending, staleness, preflight prohibition) carries operational weight, so little is wasted.

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?

With an output schema present, the description needn't detail return values, and it instead supplies the interpretive context the schema cannot (placeholder vs. real outage, snapshot vs. live probe). Nothing an agent needs to call or trust this tool is missing.

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 no parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly implies a no-argument snapshot call.

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 ('Returns a structured snapshot') and enumerates the exact resources covered (server/tray versions, detected client, relay state, TCC permissions, per-service reachability). An agent can tell this apart from lmcp_doctor, permissions_status, or get_config from the description alone.

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?

Explicitly states when to call it ('verify the environment is healthy before attempting a tool'), when NOT to use it ('never use this tool as a preflight gate to skip or cancel a task'), and names the alternative for the adjacent need ('use report_problem instead'). This is textbook routing guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources