Skip to main content
Glama

debug_connection

Test and diagnose connection issues to the N Lobby school portal by analyzing endpoint responses and authentication status.

Instructions

Debug N Lobby connection with detailed information

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endpointNoEndpoint to test (default: /news)/news

Implementation Reference

  • The handler function for the "debug_connection" tool. It extracts the optional endpoint parameter from the tool arguments and calls this.api.debugConnection() to perform the debugging, then returns the result as text content.
    case "debug_connection": {
      const { endpoint } = args as { endpoint?: string };
      const debugResult = await this.api.debugConnection(
        endpoint || "/news",
      );
      return {
        content: [
          {
            type: "text",
            text: debugResult,
          },
        ],
      };
    }
  • The schema definition for the "debug_connection" tool, including name, description, and input schema specifying an optional 'endpoint' parameter.
      name: "debug_connection",
      description: "Debug N Lobby connection with detailed information",
      inputSchema: {
        type: "object",
        properties: {
          endpoint: {
            type: "string",
            description: "Endpoint to test (default: /news)",
            default: "/news",
          },
        },
      },
    },
  • src/server.ts:154-451 (registration)
    The registration of available tools via setRequestHandler for ListToolsRequestSchema, which includes the "debug_connection" tool in the returned tools array.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => {
      return {
        tools: [
          {
            name: "get_news",
            description: "Retrieve school news",
            inputSchema: {
              type: "object",
              properties: {
                category: {
                  type: "string",
                  description: "Filter by category (optional)",
                },
                limit: {
                  type: "number",
                  description:
                    "Maximum number of news items to retrieve (optional, default: 10)",
                  minimum: 1,
                  default: 10,
                },
                sort: {
                  type: "string",
                  description:
                    "Sort order: 'newest' (default), 'oldest', 'title-asc', 'title-desc'",
                  enum: ["newest", "oldest", "title-asc", "title-desc"],
                },
              },
            },
          },
          {
            name: "get_news_detail",
            description:
              "Retrieve detailed information for a specific news article",
            inputSchema: {
              type: "object",
              properties: {
                newsId: {
                  type: "string",
                  description: "The ID of the news article to retrieve",
                },
                markAsRead: {
                  type: "boolean",
                  description:
                    "Mark the news article as read (optional, default: false)",
                  default: false,
                },
              },
              required: ["newsId"],
            },
          },
          {
            name: "get_account_info",
            description:
              "Extract account information by parsing Next.js flight data from a rendered page",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
          {
            name: "get_student_card_screenshot",
            description:
              "Capture a screenshot of the student ID card by following the secure portal redirect flow",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
          {
            name: "get_required_courses",
            description:
              "Retrieve required courses information with detailed progress tracking",
            inputSchema: {
              type: "object",
              properties: {
                grade: {
                  type: "number",
                  description: "Filter by grade level (1, 2, or 3) (optional)",
                },
                semester: {
                  type: "string",
                  description:
                    'Filter by term year (e.g., "2024", "2025") (optional)',
                },
                category: {
                  type: "string",
                  description:
                    'Filter by curriculum category (e.g., "国語", "数学", "英語") (optional)',
                },
              },
            },
          },
          {
            name: "get_schedule",
            description:
              "Get school schedule for a specific date (backward compatibility)",
            inputSchema: {
              type: "object",
              properties: {
                date: {
                  type: "string",
                  description:
                    "Date in YYYY-MM-DD format (optional, defaults to today)",
                },
              },
            },
          },
          {
            name: "get_calendar_events",
            description: "Get calendar events with advanced options",
            inputSchema: {
              type: "object",
              properties: {
                calendar_type: {
                  type: "string",
                  enum: ["personal", "school"],
                  description:
                    "Type of calendar to retrieve (personal or school)",
                  default: "personal",
                },
                from_date: {
                  type: "string",
                  description:
                    "Start date in YYYY-MM-DD format (optional). If only from_date is provided, it will be treated as a single day.",
                },
                to_date: {
                  type: "string",
                  description:
                    "End date in YYYY-MM-DD format (optional). Must be at least 1 day after from_date when both are provided.",
                },
                period: {
                  type: "string",
                  enum: ["today", "week", "month"],
                  description:
                    'Predefined period (optional, overrides from/to dates). Use "today" for single day queries.',
                },
              },
            },
          },
          {
            name: "test_calendar_endpoints",
            description: "Test both personal and school calendar endpoints",
            inputSchema: {
              type: "object",
              properties: {
                from_date: {
                  type: "string",
                  description:
                    "Start date in YYYY-MM-DD format (optional). If only from_date is provided, it will be treated as a single day.",
                },
                to_date: {
                  type: "string",
                  description:
                    "End date in YYYY-MM-DD format (optional). Must be at least 1 day after from_date when both are provided.",
                },
              },
            },
          },
    
          {
            name: "set_cookies",
            description: "Set authentication cookies for N Lobby access",
            inputSchema: {
              type: "object",
              properties: {
                cookies: {
                  type: "string",
                  description:
                    "Cookie string from authenticated N Lobby session",
                },
              },
              required: ["cookies"],
            },
          },
          {
            name: "check_cookies",
            description: "Check if authentication cookies are set",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
          {
            name: "health_check",
            description: "Check if N Lobby API connection is working",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
    
          {
            name: "debug_connection",
            description: "Debug N Lobby connection with detailed information",
            inputSchema: {
              type: "object",
              properties: {
                endpoint: {
                  type: "string",
                  description: "Endpoint to test (default: /news)",
                  default: "/news",
                },
              },
            },
          },
    
          {
            name: "test_page_content",
            description: "Test page content retrieval and show sample content",
            inputSchema: {
              type: "object",
              properties: {
                endpoint: {
                  type: "string",
                  description: "Endpoint to test (default: /news)",
                  default: "/news",
                },
                length: {
                  type: "number",
                  description: "Number of characters to show (default: 1000)",
                  default: 1000,
                },
              },
            },
          },
    
          {
            name: "test_trpc_endpoint",
            description: "Test specific tRPC endpoint with detailed response",
            inputSchema: {
              type: "object",
              properties: {
                method: {
                  type: "string",
                  description:
                    "tRPC method to test (e.g., news.getUnreadNewsCount, user.updateLastAccess)",
                  default: "user.updateLastAccess",
                },
                params: {
                  type: "string",
                  description: "JSON string of parameters (optional)",
                },
              },
            },
          },
          {
            name: "verify_authentication",
            description:
              "Verify authentication status and cookie synchronization across all clients",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
    
          {
            name: "interactive_login",
            description:
              "Open browser for manual login to N Lobby (no credentials required)",
            inputSchema: {
              type: "object",
              properties: {},
            },
          },
          {
            name: "login_help",
            description: "Get help and troubleshooting tips for N Lobby login",
            inputSchema: {
              type: "object",
              properties: {
                email: {
                  type: "string",
                  description:
                    "Your email address (optional, for personalized help)",
                },
              },
            },
          },
          {
            name: "mark_news_as_read",
            description: "Mark news articles as read",
            inputSchema: {
              type: "object",
              properties: {
                ids: {
                  type: "array",
                  items: {
                    type: "string",
                  },
                  description: "Array of news article IDs to mark as read",
                },
              },
              required: ["ids"],
            },
          },
        ],
      };
    });
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'detailed information' but does not specify what that includes (e.g., error logs, response times, status codes), nor does it cover permissions, rate limits, or side effects. This leaves significant gaps in understanding the tool's behavior.

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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. However, it could be more front-loaded with key details, but overall, it is appropriately sized for its content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (debugging a connection), lack of annotations, and no output schema, the description is incomplete. It does not explain what 'detailed information' includes, how results are returned, or error handling, making it inadequate for an agent to fully understand the tool's context and usage.

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?

The input schema has 100% description coverage, with the parameter 'endpoint' documented as 'Endpoint to test (default: /news)'. The description does not add any meaning beyond this, such as explaining why '/news' is the default or how other endpoints might behave. Baseline 3 is appropriate as the schema handles the parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Debug[s] N Lobby connection with detailed information', which provides a clear verb ('Debug') and resource ('N Lobby connection'), but it lacks specificity about what 'debug' entails (e.g., testing connectivity, logging errors) and does not differentiate from siblings like 'health_check' or 'test_calendar_endpoints'. This makes the purpose somewhat vague.

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 is provided on when to use this tool versus alternatives. It does not mention scenarios for debugging connections, prerequisites, or exclusions, leaving the agent without context for selection among siblings such as 'health_check' or 'test_trpc_endpoint'.

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/minagishl/nlobby-mcp'

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