Skip to main content
Glama
collapseindex

CI-1T Prediction Stability Engine

fleet_session_list

List all active fleet sessions to monitor prediction stability across nodes. Retrieve session details including node count, round count, and creation time.

Instructions

List all active fleet sessions. Response: { sessions: [{ session_id, node_count, round_count, created_at }] }.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • src/index.ts:669-683 (registration)
    Tool registration for fleet_session_list. It is defined with server.tool(), no input schema (empty {}), and sends a POST to /api/fleet-session with { action: 'list' }.
    server.tool(
      "fleet_session_list",
      "List all active fleet sessions. Response: { sessions: [{ session_id, node_count, round_count, created_at }] }.",
      {},
      async () => {
        const guard = requireApiKey();
        if (guard) return guard;
        const result = await apiFetch("/api/fleet-session", {
          method: "POST",
          headers: apiKeyHeaders(),
          body: { action: "list" },
        });
        return formatResult(result);
      }
    );
  • The handler logic for fleet_session_list. It checks API key auth via requireApiKey(), then calls apiFetch('/api/fleet-session') with action: 'list', and formats the result.
    server.tool(
      "fleet_session_list",
      "List all active fleet sessions. Response: { sessions: [{ session_id, node_count, round_count, created_at }] }.",
      {},
      async () => {
        const guard = requireApiKey();
        if (guard) return guard;
        const result = await apiFetch("/api/fleet-session", {
          method: "POST",
          headers: apiKeyHeaders(),
          body: { action: "list" },
        });
        return formatResult(result);
      }
    );
  • The apiFetch helper used by fleet_session_list to make HTTP POST requests to the backend API.
    /** Generic fetch wrapper — returns structured result, never throws */
    async function apiFetch(
      path: string,
      opts: { method?: string; headers?: Record<string, string>; body?: unknown } = {}
    ): Promise<ApiResult> {
      const url = `${BASE_URL}${path}`;
      try {
        const res = await fetch(url, {
          method: opts.method || "GET",
          headers: opts.headers || { "Content-Type": "application/json" },
          body: opts.body ? JSON.stringify(opts.body) : undefined,
        });
        const text = await res.text();
        let data: unknown;
        try {
          data = JSON.parse(text);
        } catch {
          data = { raw: text };
        }
        return { ok: res.ok, status: res.status, data };
      } catch (err: unknown) {
        const message = err instanceof Error ? err.message : String(err);
        return { ok: false, status: 0, data: { error: `Network error: ${message}` } };
      }
    }
  • The formatResult helper used by fleet_session_list to format the API response into MCP text content.
    /** Format an ApiResult into MCP text content */
    function formatResult(result: ApiResult): { content: Array<{ type: "text"; text: string }> } {
      return {
        content: [
          {
            type: "text" as const,
            text: JSON.stringify(result.data, null, 2),
          },
        ],
      };
    }
  • The requireApiKey helper used by fleet_session_list to check if API key is configured.
    function requireApiKey(): McpToolResult | null {
      if (API_KEY) return null;
      return {
        content: [
          {
            type: "text" as const,
            text: JSON.stringify(
              {
                error: "missing_api_key",
                message:
                  "No API key configured. You need a CI-1T API key to use this tool.",
                setup_steps: [
                  `1. Create a free account at ${SIGNUP_URL} — you get 1,000 free credits on signup`,
                  "2. Go to Dashboard → API Keys and create a new key (starts with ci_...)",
                  "3. Set the CI1T_API_KEY environment variable in your MCP client config",
                  "4. Restart the MCP server — all tools will be unlocked",
                ],
                config_example: {
                  claude_desktop: {
                    mcpServers: {
                      ci1t: {
                        env: {
                          CI1T_API_KEY: "ci_your_key_here",
                        },
                      },
                    },
                  },
                },
                free_tools:
                  "You can use interpret_scores, convert_scores, generate_config, and onboarding without an API key or credits.",
              },
              null,
              2
            ),
          },
        ],
      };
    }
Behavior3/5

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

No annotations provided, so the description carries the burden. It discloses that only active sessions are listed and gives the response structure, but does not mention side effects, authentication needs, or rate limits.

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 a single efficient sentence with an inline response example, front-loading the core purpose without any 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 zero parameters, no output schema, and low complexity, the description is complete: it states what it does (list active sessions) and what the response looks like, which is sufficient for an end-user to use the tool.

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?

There are no parameters, and schema coverage is 100% trivially. Per the rules, a baseline of 4 applies because the description has no param info to add, but its absence is not a flaw.

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 the verb 'List' and the resource 'all active fleet sessions', and distinguishes from siblings like fleet_session_create or fleet_session_delete by specifying it is a listing operation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as fleet_session_state or other listing tools; no conditions or prerequisites are mentioned.

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/collapseindex/ci-1t-mcp'

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