ras_infra_get_connection_brokers
Check connection broker health, verify priority settings, and diagnose session routing issues in Parallels RAS infrastructure.
Instructions
Get connection broker status, priority, and configuration. Connection brokers handle user session brokering and load distribution. Use this to check broker health, verify primary/secondary priority, or diagnose session routing issues.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/tools/infrastructure.ts:54-61 (handler)The handler function that executes the tool logic - makes a GET request to '/api/infrastructure/connection-brokers' and returns the JSON response or a sanitized error message.async () => { try { const data = await rasClient.get("/api/infrastructure/connection-brokers"); return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] }; } catch (err) { return { content: [{ type: "text" as const, text: sanitiseError(err, "Failed to retrieve connection brokers") }], isError: true }; } }
- src/tools/infrastructure.ts:43-62 (registration)Tool registration including the tool name 'ras_infra_get_connection_brokers', schema definition (title, description, annotations, inputSchema), and the handler function.server.registerTool( "ras_infra_get_connection_brokers", { title: "Connection Brokers", description: "Get connection broker status, priority, and configuration. Connection brokers " + "handle user session brokering and load distribution. Use this to check broker " + "health, verify primary/secondary priority, or diagnose session routing issues.", annotations: READ_ONLY_ANNOTATIONS, inputSchema: {}, }, async () => { try { const data = await rasClient.get("/api/infrastructure/connection-brokers"); return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] }; } catch (err) { return { content: [{ type: "text" as const, text: sanitiseError(err, "Failed to retrieve connection brokers") }], isError: true }; } } );
- src/client.ts:128-166 (helper)The RasClient.get() method that performs the actual API request with authentication, automatic retry on 401, and error handling.async get(path: string): Promise<unknown> { // Ensure we have a valid session if (!this.authToken) { await this.login(); } const fetchOptions = { method: "GET" as const, headers: { ...this.headers, auth_token: this.authToken!, }, signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS), }; let response = await fetch(`${this.baseUrl}${path}`, fetchOptions); // Token may have expired — re-authenticate once and retry if (response.status === 401) { await this.login(); response = await fetch(`${this.baseUrl}${path}`, { ...fetchOptions, headers: { ...this.headers, auth_token: this.authToken!, }, signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS), }); } if (!response.ok) { const body = await response.text(); throw new Error( `RAS API error (HTTP ${response.status}) on ${path}: ${body.substring(0, 300)}` ); } return response.json(); }
- src/client.ts:43-54 (helper)The sanitiseError() helper function that sanitizes error messages to avoid leaking sensitive information like auth tokens and passwords.function sanitiseError(err: unknown, context: string): string { const raw = err instanceof Error ? err.message : String(err); // Remove anything that looks like a token or password value let sanitised = raw .replace(/auth_token[=:]\s*\S+/gi, "auth_token=[REDACTED]") .replace(/password[=:]\s*\S+/gi, "password=[REDACTED]"); // Truncate excessively long API response bodies if (sanitised.length > 500) { sanitised = sanitised.substring(0, 500) + "... (truncated)"; } return `${context}: ${sanitised}`; }