Skip to main content
Glama

create_client

Create a private client connection token and an invitation. timeout_seconds sets the invitation lifetime in seconds (default 300, or 5 minutes). Returns connection commands and display_text for the target user. After generating the connection instructions, you MUST present them to the user and call list_clients with the returned client_token and wait_ms=60000 to check whether a device connects, with a 60-second timeout. Report whether a device connected or the wait timed out. multi_device controls simultaneous connections and invitation reuse.

Input Schema

NameRequiredDescriptionDefault
multi_deviceNoTrue permits multiple simultaneous devices and reuses the invitation until expiry. False allows one device and a single-use invitation.
timeout_secondsNoInvitation lifetime in seconds, as a positive integer. Default 300 (5 minutes). Expiry prevents invitation redemption; it does not disconnect devices that have already connected.

Output Schema

NameRequiredDescriptionDefault
expires_atYesInvitation expiry deadline as a UTC RFC 3339 timestamp.
invitationYesPrivate invitation credential for target-client authorization; expires at expires_at.
client_tokenYesPrivate credential for this target group. Pass as client_token with management access (including stdio and no-password mode) or as the MCP bearer token for device-scoped access.
display_textYesUser-facing connection instructions containing credentials and commands for both platforms.
multi_deviceYesTrue permits multiple simultaneous devices and reuses the invitation until expiry. False allows one device and a single-use invitation.
macos_linux_commandYesmacOS/Linux connection command containing private invitation access.
windows_powershell_commandYesWindows connection command containing private invitation access.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedOutput schema / properties / next_action
      Removed value: -{
      -  "additionalProperties": false,
      -  "description": "Next step to perform. Invitation creation returns the exact tool call and deadline; other tools return human-readable guidance.",
      -  "properties": {
      -    "arguments": {
      -      "additionalProperties": false,
      -      "description": "Arguments for the next tool call.",
      -      "properties": {
      -        "client_token": {
      -          "description": "Private credential for this target group. Pass as client_token with management access (including stdio and no-password mode) or as the MCP bearer token for device-scoped access.",
      -          "type": "string"
      -        },
      -        "wait_ms": {
      -          "description": "Server-side connection wait duration in milliseconds.",
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "client_token",
      -        "wait_ms"
      -      ],
      -      "type": "object"
      -    },
      -    "instructions": {
      -      "description": "Workflow guidance for completing the next action.",
      -      "type": "string"
      -    },
      -    "tool": {
      -      "description": "Name of the next MCP tool to call.",
      -      "type": "string"
      -    },
      -    "until": {
      -      "description": "UTC RFC 3339 deadline for following this action.",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "tool",
      -    "arguments",
      -    "until",
      -    "instructions"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "client_token",
      -  "multi_device",
      -  "invitation",
      -  "expires_at",
      -  "next_action",
      -  "macos_linux_command",
      -  "windows_powershell_command",
      -  "display_text"
      -]New value: +[
      +  "client_token",
      +  "multi_device",
      +  "invitation",
      +  "expires_at",
      +  "macos_linux_command",
      +  "windows_powershell_command",
      +  "display_text"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / timeout_seconds
      Added value: +{
      +  "default": 300,
      +  "description": "Invitation lifetime in seconds, as a positive integer. Default 300 (5 minutes). Expiry prevents invitation redemption; it does not disconnect devices that have already connected.",
      +  "maximum": 9223372036,
      +  "minimum": 1,
      +  "type": "integer"
      +}
  3. Changed4 schema fields changed
    • addedInput schema / properties / multi_device / description
      Added value: +"True permits multiple simultaneous devices and reuses the invitation until expiry. False allows one device and a single-use invitation."
    • changedOutput schema / additionalProperties
      Previous value: -trueNew value: +false
    • addedOutput schema / properties
      Added value: +{
      +  "client_token": {
      +    "description": "Private credential for this target group. Pass as client_token with management access (including stdio and no-password mode) or as the MCP bearer token for device-scoped access.",
      +    "type": "string"
      +  },
      +  "display_text": {
      +    "description": "User-facing connection instructions containing credentials and commands for both platforms.",
      +    "type": "string"
      +  },
      +  "expires_at": {
      +    "description": "Invitation expiry deadline as a UTC RFC 3339 timestamp.",
      +    "type": "string"
      +  },
      +  "invitation": {
      +    "description": "Private invitation credential for target-client authorization; expires at expires_at.",
      +    "type": "string"
      +  },
      +  "macos_linux_command": {
      +    "description": "macOS/Linux connection command containing private invitation access.",
      +    "type": "string"
      +  },
      +  "multi_device": {
      +    "description": "True permits multiple simultaneous devices and reuses the invitation until expiry. False allows one device and a single-use invitation.",
      +    "type": "boolean"
      +  },
      +  "next_action": {
      +    "additionalProperties": false,
      +    "description": "Next step to perform. Invitation creation returns the exact tool call and deadline; other tools return human-readable guidance.",
      +    "properties": {
      +      "arguments": {
      +        "additionalProperties": false,
      +        "description": "Arguments for the next tool call.",
      +        "properties": {
      +          "client_token": {
      +            "description": "Private credential for this target group. Pass as client_token with management access (including stdio and no-password mode) or as the MCP bearer token for device-scoped access.",
      +            "type": "string"
      +          },
      +          "wait_ms": {
      +            "description": "Server-side connection wait duration in milliseconds.",
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "client_token",
      +          "wait_ms"
      +        ],
      +        "type": "object"
      +      },
      +      "instructions": {
      +        "description": "Workflow guidance for completing the next action.",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "description": "Name of the next MCP tool to call.",
      +        "type": "string"
      +      },
      +      "until": {
      +        "description": "UTC RFC 3339 deadline for following this action.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tool",
      +      "arguments",
      +      "until",
      +      "instructions"
      +    ],
      +    "type": "object"
      +  },
      +  "windows_powershell_command": {
      +    "description": "Windows connection command containing private invitation access.",
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "client_token",
      +  "multi_device",
      +  "invitation",
      +  "expires_at",
      +  "next_action",
      +  "macos_linux_command",
      +  "windows_powershell_command",
      +  "display_text"
      +]
  4. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the write/non-idempotent/non-destructive profile, but the description adds real behavioral detail beyond them: expiry prevents invitation redemption yet does not disconnect already-connected devices, and multi_device governs simultaneous connections plus invitation reuse. It also mandates a follow-up verification call and reporting obligation. It stops short of stating permission or auth requirements for creating a private token.

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?

Purpose and return values are front-loaded, followed by the required post-call workflow, which is the highest-value information. The trailing sentence on multi_device is appended after the workflow instructions rather than grouped with the timeout sentence, a minor ordering flaw in an otherwise tight description.

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 an output schema present, return values need not be explained, yet the description still signals the shape (connection commands, display_text). Combined with the mandated verification loop and timeout semantics, an agent has enough to invoke and follow through. Only the permission/auth context for minting a private token is unaddressed.

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 coverage is 100%, and the description's parameter remarks (default 300 seconds; multi_device controls simultaneous connections and invitation reuse) largely restate the schema text. Baseline 3 applies since the schema already carries the precise semantics, including the maximum/minimum bounds the description omits.

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 and resource ('Create a private client connection token and an invitation') and immediately names what is returned ('connection commands and display_text for the target user'). This clearly separates it from the session_* and execute_command siblings, which operate on existing sessions rather than provisioning a new client.

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?

Gives an explicit, ordered workflow: present the connection instructions to the user, then call list_clients with the returned client_token and wait_ms=60000, then report whether a device connected or the wait timed out. It names the alternative tool and the exact arguments to pass, leaving nothing to inference.

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