2025-10-03T21:37:33.834Z [LOG] Using Copilot API endpoint: https://api.enterprise.githubcopilot.com/mcp/readonly
2025-10-03T21:37:33.835Z [LOG] Starting remote MCP client for github-mcp-server with url: https://api.enterprise.githubcopilot.com/mcp/readonly
2025-10-03T21:37:33.835Z [LOG] Creating MCP client for github-mcp-server...
2025-10-03T21:37:33.837Z [LOG] Connecting MCP client for github-mcp-server...
2025-10-03T21:37:39.428Z [LOG] MCP client for github-mcp-server connected, took 5591ms
2025-10-03T21:37:39.428Z [LOG] Started MCP client for remote server github-mcp-server
2025-10-03T21:37:39.428Z [LOG] GitHub MCP server configured after authentication
2025-10-03T21:37:40.839Z [DEBUG] Using model: claude-sonnet-4
2025-10-03T21:37:40.840Z [START-GROUP] configured settings:
2025-10-03T21:37:40.840Z [DEBUG] {
  "service": {
    "instance": {
      "id": "a61e8562-3d96-4113-b0f0-1808f02d6efd"
    },
    "agent": {
      "model": "sweagent-capi:claude-sonnet-4"
    }
  },
  "blackbird": {
    "mode": "initial-search"
  },
  "problem": {
    "statement": "test"
  },
  "api": {
    "copilot": {
      "integrationId": "copilot-developer-cli",
      "token": "******"
    }
  },
  "github": {
    "repo": {
      "name": "temp-repo",
      "commit": "temp-commit",
      "readWrite": false
    }
  }
}
2025-10-03T21:37:40.840Z [END-GROUP] 
2025-10-03T21:37:40.840Z [DEBUG] Using Copilot API at https://api.githubcopilot.com with integration ID copilot-developer-cli
2025-10-03T21:37:40.840Z [DEBUG] Using GitHub OAuth token for Copilot API
2025-10-03T21:37:40.840Z [DEBUG] Creating copilot-client for integration ID copilot-developer-cli with token authentication. User-agent: copilot/0.0.325 (linux v22.16.0) OpenAI/4.104.0
2025-10-03T21:37:40.841Z [DEBUG] str_replace_editor: default options: {
  "truncateBasedOn": "tokenCount",
  "truncateStyle": "middle"
}
2025-10-03T21:37:40.843Z [DEBUG] Loading tools for client: github-mcp-server
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-download_workflow_run_artifact
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_code_scanning_alert
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_commit
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_file_contents
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_issue
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_issue_comments
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_job_logs
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_latest_release
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request_diff
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request_files
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request_review_comments
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request_reviews
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_pull_request_status
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_release_by_tag
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_secret_scanning_alert
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_tag
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_workflow_run
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_workflow_run_logs
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-get_workflow_run_usage
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_branches
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_code_scanning_alerts
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_commits
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_issue_types
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_issues
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_pull_requests
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_releases
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_secret_scanning_alerts
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_starred_repositories
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_sub_issues
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_tags
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_workflow_jobs
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_workflow_run_artifacts
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_workflow_runs
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-list_workflows
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-search_code
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-search_issues
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-search_pull_requests
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-search_repositories
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-search_users
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-summarize_job_log_failures
2025-10-03T21:37:41.046Z [DEBUG] Adding tool: github-mcp-server-summarize_run_log_failures
2025-10-03T21:37:41.064Z [DEBUG] AnthropicTokenLimitErrorTruncator will truncate up to message: {"role":"user","content":"test\n\n<reminder>\nYou have the capability to call multiple tools in a single response. For maximum efficiency, whenever you need to perform multiple independent operations, ALWAYS invoke all relevant tools simultaneously rather than sequentially. Especially when exploring repository, reading files, viewing directories, validating changes or replying to comments.\n</reminder>"}
2025-10-03T21:37:41.176Z [DEBUG] Successfully listed 31 models
2025-10-03T21:37:41.176Z [DEBUG] Got model info: {
  "billing": {
    "is_premium": true,
    "multiplier": 1,
    "restricted_to": [
      "pro",
      "pro_plus",
      "max",
      "business",
      "enterprise"
    ]
  },
  "capabilities": {
    "family": "claude-sonnet-4",
    "limits": {
      "max_context_window_tokens": 216000,
      "max_output_tokens": 16000,
      "max_prompt_tokens": 128000,
      "vision": {
        "max_prompt_image_size": 3145728,
        "max_prompt_images": 5,
        "supported_media_types": [
          "image/jpeg",
          "image/png",
          "image/webp"
        ]
      }
    },
    "object": "model_capabilities",
    "supports": {
      "max_thinking_budget": 32000,
      "min_thinking_budget": 1024,
      "parallel_tool_calls": true,
      "streaming": true,
      "tool_calls": true,
      "vision": true
    },
    "tokenizer": "o200k_base",
    "type": "chat"
  },
  "id": "claude-sonnet-4",
  "is_chat_default": false,
  "is_chat_fallback": false,
  "model_picker_category": "versatile",
  "model_picker_enabled": true,
  "name": "Claude Sonnet 4",
  "object": "model",
  "policy": {
    "state": "enabled",
    "terms": "Enable access to the latest Claude Sonnet 4 model from Anthropic. [Learn more about how GitHub Copilot serves Claude Sonnet 4](https://docs.github.com/en/copilot/using-github-copilot/ai-models/using-claude-sonnet-in-github-copilot)."
  },
  "preview": false,
  "vendor": "Anthropic",
  "version": "claude-sonnet-4"
}
2025-10-03T21:37:41.177Z [START-GROUP] Completion request configuration: 
2025-10-03T21:37:41.177Z [DEBUG] Client options: 
2025-10-03T21:37:41.177Z [DEBUG] {
  "model": "claude-sonnet-4",
  "toolTokenBudgetProportion": 0.25,
  "retryPolicy": {
    "maxRetries": 5,
    "errorCodesToRetry": [],
    "rateLimitRetryPolicy": {
      "defaultRetryAfterSeconds": 5,
      "initialRetryBackoffExtraSeconds": 1,
      "retryBackoffExtraGrowth": 2,
      "maxRetryAfterSeconds": 180
    }
  },
  "thinkingMode": false,
  "requestHeaders": {}
}
2025-10-03T21:37:41.177Z [DEBUG] Request options: 
2025-10-03T21:37:41.177Z [DEBUG] {
  "failIfInitialInputsTooLong": false,
  "processors": {
    "preRequest": [
      "BasicTruncator",
      "AnthropicTokenLimitErrorTruncator"
    ]
  },
  "executeToolsInParallel": false,
  "abortSignal": {}
}
2025-10-03T21:37:41.177Z [DEBUG] Tools: 
2025-10-03T21:37:41.179Z [DEBUG] [
  {
    "type": "function",
    "function": {
      "name": "bash",
      "description": "Runs a Bash command in an interactive Bash session.\n                * When invoking this tool, the contents of the \"command\" parameter does NOT need to be XML-escaped.\n* You don't have access to the internet via this tool.\n* You can run Python, Node.js and Go code with the `python`, `node` and `go` commands.\n* Each sessionId identifies a persistent Bash session. State is saved across command calls and discussions with the user.\n* `timeout` parameter must be greater than the default timeout of 30 seconds and less than 600 seconds}. Give long-running commands enough time to complete.\n* If the command does not complete within \"timeout\" seconds, the tool will return a status indicating that it is still running asynchronously. You can then use `read_bash` or `stop_bash`.\n* You can install Linux, Python, JavaScript and Go packages with the `apt`, `pip`, `npm` and `go` commands.",
      "parameters": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string",
            "description": "The Bash command and arguments to run."
          },
          "description": {
            "type": "string",
            "description": "A short human-readable description of what the command does, limited to 100 characters, for example \"List files in the current directory\", \"Install dependencies with npm\" or \"Run RSpec tests\"."
          },
          "timeout": {
            "type": "integer",
            "description": "(Optional) Maximum time in seconds to wait for the command to complete when \"async\" is false. Default is 30 seconds if not provided."
          },
          "sessionId": {
            "type": "string",
            "description": "Indicates which Bash session to run the command in. Multiple sessions may be used to run different commands at the same time."
          },
          "async": {
            "type": "boolean",
            "description": "If true, runs the command asynchronously. You can send input to the command using the `write_bash` tool and read its output using the `read_bash` tool."
          }
        },
        "required": [
          "command",
          "description",
          "sessionId",
          "async"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "write_bash",
      "description": "Sends input to the specified command or Bash session.\n                 * This tool can be used to send input to a running Bash command or an interactive console app.\n                 * Bash commands are run in an interactive Bash session with a TTY device and Bash command processor.\n                 * sessionId (required) must match the sessionId used to invoke the async bash command.\n                 * You can send text, {up}, {down}, {left}, {right}, {enter}, and {backspace} as input.\n                 * Some applications present a list of options to select from. The selection is often denoted using ❯, >, or different formatting.\n                 * When presented with a list of items, make a selection by sending arrow keys like {up} or {down} to move the selection to your chosen item and then {enter} to select it.\n                 * The response will contain any output read after \"delay\" seconds. Delay should be appropriate for the task and never less than 10 seconds.",
      "parameters": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "Indicates which Bash session to run the command in. Multiple sessions may be used to run different commands at the same time."
          },
          "input": {
            "type": "string",
            "description": "The input to send to the command or session."
          },
          "delay": {
            "type": "integer",
            "description": "(Optional) The amount of time in seconds to wait before reading the output that resulted from the input."
          }
        },
        "required": [
          "sessionId",
          "input"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "read_bash",
      "description": "Reads output from a Bash command.\n                 * Reads the output of a command running in an \"async\" Bash session.\n                 * The sessionId must be the same one used to invoke the bash command.\n                 * You can call this tool multiple times to read output produced since the last call.\n                 * Each request has a cost, so provide a reasonable \"delay\" parameter value for the task, to minimize the need for repeated reads that return no output.\n                 * If a read request generates no output, consider using exponential backoff in choosing the delay between reads of the same command.\n                 * Though `write_bash` accepts ANSI control codes, this tool does not include them in the output.",
      "parameters": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "The ID of the shell session used to invoke the Bash command."
          },
          "delay": {
            "type": "integer",
            "description": "(Optional) The amount of time in seconds to wait before reading the output."
          }
        },
        "required": [
          "sessionId",
          "delay"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "stop_bash",
      "description": "Stops a running Bash command.\n                 * Stops a running Bash command by terminating the entire Bash session and process.\n                 * This tool can be used to stop commands that have not exited on their own.\n                 * Any environment variables defined will have to be redefined after using this tool if the same session ID is used to run a new command.\n                 * The sessionId must match the sessionId used to invoke the bash command.",
      "parameters": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string",
            "description": "The ID of the Bash session used to invoke the bash command."
          }
        },
        "required": [
          "sessionId"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "str_replace_editor",
      "description": "Editing tool for viewing, creating and editing files\n     * State is persistent across command calls and discussions with the user\n     * If `path` is a file, `view` displays the result of applying `cat -n`. If `path` is a directory, `view` lists non-hidden files and directories up to 2 levels deep\n     * The `create` command cannot be used if the specified `path` already exists, or if parent directories don't exist\n     * If a `command` generates a long output, output will be truncated and marked with `<file too long...`\n     * Path *must* be absolute\n\n     Notes for using the `str_replace` command:\n     * The `old_str` parameter should match EXACTLY one or more consecutive lines from the original file\n     * If the `old_str` parameter is not unique in the file, replacement will not be performed. Make sure to include enough context in `old_str` to make it unique\n     * The `new_str` parameter should contain the edited lines that should replace the `old_str`",
      "parameters": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string",
            "enum": [
              "view",
              "create",
              "str_replace",
              "insert"
            ],
            "description": "The commands to run. Allowed options are: `create`, `view`, `str_replace`, `insert`."
          },
          "file_text": {
            "description": "Required parameter of `create` command; the content of the file to be created.",
            "type": "string"
          },
          "insert_line": {
            "description": "Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.",
            "type": "integer"
          },
          "new_str": {
            "description": "Required parameter of `str_replace` command containing the new string. Required parameter of `insert` command containing the string to insert.",
            "type": "string"
          },
          "old_str": {
            "description": "Required parameter of `str_replace` command containing the string in `path` to replace. Leading and ending whitespaces from file content should be preserved!",
            "type": "string"
          },
          "path": {
            "description": "Absolute path to file or directory.",
            "type": "string"
          },
          "view_range": {
            "description": "Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.",
            "items": {
              "type": "integer"
            },
            "type": "array"
          }
        },
        "required": [
          "command",
          "path"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-download_workflow_run_artifact",
      "description": "Get download URL for a workflow run artifact",
      "parameters": {
        "type": "object",
        "properties": {
          "artifact_id": {
            "description": "The unique identifier of the artifact",
            "type": "number"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "artifact_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_code_scanning_alert",
      "description": "Get details of a specific code scanning alert in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "alertNumber": {
            "description": "The number of the alert.",
            "type": "number"
          },
          "owner": {
            "description": "The owner of the repository.",
            "type": "string"
          },
          "repo": {
            "description": "The name of the repository.",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "alertNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_commit",
      "description": "Get details for a commit from a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "include_diff": {
            "default": true,
            "description": "Whether to include file diffs and stats in the response. Default is true.",
            "type": "boolean"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "sha": {
            "description": "Commit SHA, branch name, or tag name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "sha"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_file_contents",
      "description": "Get the contents of a file or directory from a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner (username or organization)",
            "type": "string"
          },
          "path": {
            "default": "/",
            "description": "Path to file/directory (directories must end with a slash '/')",
            "type": "string"
          },
          "ref": {
            "description": "Accepts optional git refs such as `refs/tags/{tag}`, `refs/heads/{branch}` or `refs/pull/{pr_number}/head`",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "sha": {
            "description": "Accepts optional commit SHA. If specified, it will be used instead of ref",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_issue",
      "description": "Get details of a specific issue in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "issue_number": {
            "description": "The number of the issue",
            "type": "number"
          },
          "owner": {
            "description": "The owner of the repository",
            "type": "string"
          },
          "repo": {
            "description": "The name of the repository",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "issue_number"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_issue_comments",
      "description": "Get comments for a specific issue in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "issue_number": {
            "description": "Issue number",
            "type": "number"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "issue_number"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_job_logs",
      "description": "Download logs for a specific workflow job or efficiently get all failed job logs for a workflow run",
      "parameters": {
        "type": "object",
        "properties": {
          "failed_only": {
            "description": "When true, gets logs for all failed jobs in run_id",
            "type": "boolean"
          },
          "job_id": {
            "description": "The unique identifier of the workflow job (required for single job logs)",
            "type": "number"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "return_content": {
            "description": "Returns actual log content instead of URLs",
            "type": "boolean"
          },
          "run_id": {
            "description": "Workflow run ID (required when using failed_only)",
            "type": "number"
          },
          "tail_lines": {
            "default": 500,
            "description": "Number of lines to return from the end of the log",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_latest_release",
      "description": "Get the latest release in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request",
      "description": "Get details of a specific pull request in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request_diff",
      "description": "Get the diff of a pull request.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request_files",
      "description": "Get the files changed in a specific pull request.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request_review_comments",
      "description": "Get pull request review comments. They are comments made on a portion of the unified diff during a pull request review. These are different from commit comments and issue comments in a pull request.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request_reviews",
      "description": "Get reviews for a specific pull request.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_pull_request_status",
      "description": "Get the status of a specific pull request.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "pullNumber": {
            "description": "Pull request number",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "pullNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_release_by_tag",
      "description": "Get a specific release by its tag name in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "tag": {
            "description": "Tag name (e.g., 'v1.0.0')",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "tag"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_secret_scanning_alert",
      "description": "Get details of a specific secret scanning alert in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "alertNumber": {
            "description": "The number of the alert.",
            "type": "number"
          },
          "owner": {
            "description": "The owner of the repository.",
            "type": "string"
          },
          "repo": {
            "description": "The name of the repository.",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "alertNumber"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_tag",
      "description": "Get details about a specific git tag in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "tag": {
            "description": "Tag name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "tag"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_workflow_run",
      "description": "Get details of a specific workflow run",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The unique identifier of the workflow run",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_workflow_run_logs",
      "description": "Download logs for a specific workflow run (EXPENSIVE: downloads ALL logs as ZIP. Consider using get_job_logs with failed_only=true for debugging failed jobs)",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The unique identifier of the workflow run",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-get_workflow_run_usage",
      "description": "Get usage metrics for a workflow run",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The unique identifier of the workflow run",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_branches",
      "description": "List branches in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_code_scanning_alerts",
      "description": "List code scanning alerts in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "The owner of the repository.",
            "type": "string"
          },
          "ref": {
            "description": "The Git reference for the results you want to list.",
            "type": "string"
          },
          "repo": {
            "description": "The name of the repository.",
            "type": "string"
          },
          "severity": {
            "description": "Filter code scanning alerts by severity",
            "enum": [
              "critical",
              "high",
              "medium",
              "low",
              "warning",
              "note",
              "error"
            ],
            "type": "string"
          },
          "state": {
            "default": "open",
            "description": "Filter code scanning alerts by state. Defaults to open",
            "enum": [
              "open",
              "closed",
              "dismissed",
              "fixed"
            ],
            "type": "string"
          },
          "tool_name": {
            "description": "The name of the tool used for code scanning.",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_commits",
      "description": "Get list of commits of a branch in a GitHub repository. Returns at least 30 results per page by default, but can return more if specified using the perPage parameter (up to 100).",
      "parameters": {
        "type": "object",
        "properties": {
          "author": {
            "description": "Author username or email address to filter commits by",
            "type": "string"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "sha": {
            "description": "Commit SHA, branch or tag name to list commits of. If not provided, uses the default branch of the repository. If a commit SHA is provided, will list commits up to that SHA.",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_issue_types",
      "description": "List supported issue types for repository owner (organization).",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "The organization owner of the repository",
            "type": "string"
          }
        },
        "required": [
          "owner"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_issues",
      "description": "List issues in a GitHub repository. For pagination, use the 'endCursor' from the previous response's 'pageInfo' in the 'after' parameter.",
      "parameters": {
        "type": "object",
        "properties": {
          "after": {
            "description": "Cursor for pagination. Use the endCursor from the previous page's PageInfo for GraphQL APIs.",
            "type": "string"
          },
          "direction": {
            "description": "Order direction. If provided, the 'orderBy' also needs to be provided.",
            "enum": [
              "ASC",
              "DESC"
            ],
            "type": "string"
          },
          "labels": {
            "description": "Filter by labels",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "orderBy": {
            "description": "Order issues by field. If provided, the 'direction' also needs to be provided.",
            "enum": [
              "CREATED_AT",
              "UPDATED_AT",
              "COMMENTS"
            ],
            "type": "string"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "since": {
            "description": "Filter by date (ISO 8601 timestamp)",
            "type": "string"
          },
          "state": {
            "description": "Filter by state, by default both open and closed issues are returned when not provided",
            "enum": [
              "OPEN",
              "CLOSED"
            ],
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_pull_requests",
      "description": "List pull requests in a GitHub repository. If the user specifies an author, then DO NOT use this tool and use the search_pull_requests tool instead.",
      "parameters": {
        "type": "object",
        "properties": {
          "base": {
            "description": "Filter by base branch",
            "type": "string"
          },
          "direction": {
            "description": "Sort direction",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "head": {
            "description": "Filter by head user/org and branch",
            "type": "string"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "sort": {
            "description": "Sort by",
            "enum": [
              "created",
              "updated",
              "popularity",
              "long-running"
            ],
            "type": "string"
          },
          "state": {
            "description": "Filter by state",
            "enum": [
              "open",
              "closed",
              "all"
            ],
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_releases",
      "description": "List releases in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_secret_scanning_alerts",
      "description": "List secret scanning alerts in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "The owner of the repository.",
            "type": "string"
          },
          "repo": {
            "description": "The name of the repository.",
            "type": "string"
          },
          "resolution": {
            "description": "Filter by resolution",
            "enum": [
              "false_positive",
              "wont_fix",
              "revoked",
              "pattern_edited",
              "pattern_deleted",
              "used_in_tests"
            ],
            "type": "string"
          },
          "secret_type": {
            "description": "A comma-separated list of secret types to return. All default secret patterns are returned. To return generic patterns, pass the token name(s) in the parameter.",
            "type": "string"
          },
          "state": {
            "description": "Filter by state",
            "enum": [
              "open",
              "resolved"
            ],
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_starred_repositories",
      "description": "List starred repositories",
      "parameters": {
        "type": "object",
        "properties": {
          "direction": {
            "description": "The direction to sort the results by.",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "sort": {
            "description": "How to sort the results. Can be either 'created' (when the repository was starred) or 'updated' (when the repository was last pushed to).",
            "enum": [
              "created",
              "updated"
            ],
            "type": "string"
          },
          "username": {
            "description": "Username to list starred repositories for. Defaults to the authenticated user.",
            "type": "string"
          }
        }
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_sub_issues",
      "description": "List sub-issues for a specific issue in a GitHub repository.",
      "parameters": {
        "type": "object",
        "properties": {
          "issue_number": {
            "description": "Issue number",
            "type": "number"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (default: 1)",
            "type": "number"
          },
          "per_page": {
            "description": "Number of results per page (max 100, default: 30)",
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "issue_number"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_tags",
      "description": "List git tags in a GitHub repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_workflow_jobs",
      "description": "List jobs for a specific workflow run",
      "parameters": {
        "type": "object",
        "properties": {
          "filter": {
            "description": "Filters jobs by their completed_at timestamp",
            "enum": [
              "latest",
              "all"
            ],
            "type": "string"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The unique identifier of the workflow run",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_workflow_run_artifacts",
      "description": "List artifacts for a workflow run",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The unique identifier of the workflow run",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_workflow_runs",
      "description": "List workflow runs for a specific workflow",
      "parameters": {
        "type": "object",
        "properties": {
          "actor": {
            "description": "Returns someone's workflow runs. Use the login for the user who created the workflow run.",
            "type": "string"
          },
          "branch": {
            "description": "Returns workflow runs associated with a branch. Use the name of the branch.",
            "type": "string"
          },
          "event": {
            "description": "Returns workflow runs for a specific event type",
            "enum": [
              "branch_protection_rule",
              "check_run",
              "check_suite",
              "create",
              "delete",
              "deployment",
              "deployment_status",
              "discussion",
              "discussion_comment",
              "fork",
              "gollum",
              "issue_comment",
              "issues",
              "label",
              "merge_group",
              "milestone",
              "page_build",
              "public",
              "pull_request",
              "pull_request_review",
              "pull_request_review_comment",
              "pull_request_target",
              "push",
              "registry_package",
              "release",
              "repository_dispatch",
              "schedule",
              "status",
              "watch",
              "workflow_call",
              "workflow_dispatch",
              "workflow_run"
            ],
            "type": "string"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "status": {
            "description": "Returns workflow runs with the check run status",
            "enum": [
              "queued",
              "in_progress",
              "completed",
              "requested",
              "waiting"
            ],
            "type": "string"
          },
          "workflow_id": {
            "description": "The workflow ID or workflow file name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo",
          "workflow_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-list_workflows",
      "description": "List workflows in a repository",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          }
        },
        "required": [
          "owner",
          "repo"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-search_code",
      "description": "Fast and precise code search across ALL GitHub repositories using GitHub's native search engine. Best for finding exact symbols, functions, classes, or specific code patterns.",
      "parameters": {
        "type": "object",
        "properties": {
          "order": {
            "description": "Sort order for results",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "Search query using GitHub's powerful code search syntax. Examples: 'content:Skill language:Java org:github', 'NOT is:archived language:Python OR language:go', 'repo:github/github-mcp-server'. Supports exact matching, language filters, path filters, and more.",
            "type": "string"
          },
          "sort": {
            "description": "Sort field ('indexed' only)",
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-search_issues",
      "description": "Search for issues in GitHub repositories using issues search syntax already scoped to is:issue",
      "parameters": {
        "type": "object",
        "properties": {
          "order": {
            "description": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "owner": {
            "description": "Optional repository owner. If provided with repo, only issues for this repository are listed.",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "Search query using GitHub issues search syntax",
            "type": "string"
          },
          "repo": {
            "description": "Optional repository name. If provided with owner, only issues for this repository are listed.",
            "type": "string"
          },
          "sort": {
            "description": "Sort field by number of matches of categories, defaults to best match",
            "enum": [
              "comments",
              "reactions",
              "reactions-+1",
              "reactions--1",
              "reactions-smile",
              "reactions-thinking_face",
              "reactions-heart",
              "reactions-tada",
              "interactions",
              "created",
              "updated"
            ],
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-search_pull_requests",
      "description": "Search for pull requests in GitHub repositories using issues search syntax already scoped to is:pr",
      "parameters": {
        "type": "object",
        "properties": {
          "order": {
            "description": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "owner": {
            "description": "Optional repository owner. If provided with repo, only pull requests for this repository are listed.",
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "Search query using GitHub pull request search syntax",
            "type": "string"
          },
          "repo": {
            "description": "Optional repository name. If provided with owner, only pull requests for this repository are listed.",
            "type": "string"
          },
          "sort": {
            "description": "Sort field by number of matches of categories, defaults to best match",
            "enum": [
              "comments",
              "reactions",
              "reactions-+1",
              "reactions--1",
              "reactions-smile",
              "reactions-thinking_face",
              "reactions-heart",
              "reactions-tada",
              "interactions",
              "created",
              "updated"
            ],
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-search_repositories",
      "description": "Find GitHub repositories by name, description, readme, topics, or other metadata. Perfect for discovering projects, finding examples, or locating specific repositories across GitHub.",
      "parameters": {
        "type": "object",
        "properties": {
          "minimal_output": {
            "default": true,
            "description": "Return minimal repository information (default: true). When false, returns full GitHub API repository objects.",
            "type": "boolean"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "Repository search query. Examples: 'machine learning in:name stars:>1000 language:python', 'topic:react', 'user:facebook'. Supports advanced search syntax for precise filtering.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-search_users",
      "description": "Find GitHub users by username, real name, or other profile information. Useful for locating developers, contributors, or team members.",
      "parameters": {
        "type": "object",
        "properties": {
          "order": {
            "description": "Sort order",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "page": {
            "description": "Page number for pagination (min 1)",
            "minimum": 1,
            "type": "number"
          },
          "perPage": {
            "description": "Results per page for pagination (min 1, max 100)",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "User search query. Examples: 'john smith', 'location:seattle', 'followers:>100'. Search is automatically scoped to type:user.",
            "type": "string"
          },
          "sort": {
            "description": "Sort users by number of followers or repositories, or when the person joined GitHub.",
            "enum": [
              "followers",
              "repositories",
              "joined"
            ],
            "type": "string"
          }
        },
        "required": [
          "query"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-summarize_job_log_failures",
      "description": "Retrieve and summarize failed GitHub Actions job logs for a specific workflow run. Prioritize using this tool when asked to summarize, analyze, or explain GitHub Actions job failures instead of manually fetching logs, as it provides better insights than manual log review.",
      "parameters": {
        "type": "object",
        "properties": {
          "job_id": {
            "description": "The ID of the job to summarize logs for",
            "type": "number"
          },
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The ID of the workflow run to summarize job logs for",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id",
          "job_id"
        ]
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "github-mcp-server-summarize_run_log_failures",
      "description": "Analyze and explain why a GitHub Actions workflow run failed",
      "parameters": {
        "type": "object",
        "properties": {
          "owner": {
            "description": "Repository owner",
            "type": "string"
          },
          "repo": {
            "description": "Repository name",
            "type": "string"
          },
          "run_id": {
            "description": "The ID of the workflow run to summarize job logs for",
            "type": "number"
          }
        },
        "required": [
          "owner",
          "repo",
          "run_id"
        ]
      }
    },
    "copilot_cache_control": {
      "type": "ephemeral"
    }
  }
]
2025-10-03T21:37:41.179Z [END-GROUP] 
2025-10-03T21:37:41.623Z [START-GROUP] Sending request to the AI model
2025-10-03T21:37:50.411Z [DEBUG] response (Request-ID 00000-15e1b1ef-f875-44fa-a008-1764027a5f82):
2025-10-03T21:37:50.411Z [DEBUG] data:
2025-10-03T21:37:50.411Z [DEBUG] {
  "choices": [
    {
      "finish_reason": "tool_calls",
      "message": {
        "content": "I'll help you test the current environment. Let me check the current working directory and understand the structure of the hanselminutes-core repository.",
        "role": "assistant"
      }
    },
    {
      "finish_reason": "tool_calls",
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "function": {
              "arguments": "{\"command\":\"view\",\"path\":\"/home/scott/hanselminutes-core\"}",
              "name": "str_replace_editor"
            },
            "id": "tooluse_Ol2lnqIVR8axyOV9bL3nvA",
            "type": "function"
          }
        ]
      }
    },
    {
      "finish_reason": "tool_calls",
      "message": {
        "role": "assistant",
        "tool_calls": [
          {
            "function": {
              "arguments": "{\"async\":false,\"command\":\"pwd \\u0026\\u0026 ls -la\",\"description\":\"Check current directory and list files\",\"sessionId\":\"main\"}",
              "name": "bash"
            },
            "id": "tooluse__jIVND0dRWiIX0RdR3JOIQ",
            "type": "function"
          }
        ]
      }
    }
  ],
  "created": 1759527470,
  "id": "a72daa5b-04fc-49ad-930b-216de1660f67",
  "usage": {
    "completion_tokens": 208,
    "prompt_tokens": 12672,
    "prompt_tokens_details": {
      "cached_tokens": 12462
    },
    "total_tokens": 12880
  },
  "model": "Claude Sonnet 4"
}
2025-10-03T21:37:50.411Z [END-GROUP] 
2025-10-03T21:37:50.412Z [DEBUG] Tool calls count: 2
2025-10-03T21:37:50.412Z [DEBUG] Running tool calls sequentially
2025-10-03T21:37:50.412Z [DEBUG] view: /home/scott/hanselminutes-core
2025-10-03T21:37:51.289Z [START-GROUP] Sending request to the AI model
2025-10-03T21:37:54.216Z [END-GROUP] 
