Skip to main content
Glama

githubSearchPullRequests

Read-onlyIdempotent

Trace code history by searching GitHub pull requests with filters for author, date, and labels. Find the PR that introduced specific changes to understand why code was written.

Instructions

Search GitHub Pull Requests [EXTERNAL: GitHub API]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queriesYesResearch queries for githubSearchPullRequests (1-3 queries per call for optimal resource management). Review schema before use for optimal results
responseCharOffsetNoCharacter offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated.
responseCharLengthNoCharacter budget for top-level bulk response pagination across results[]. Overrides the shared default for this call.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultsYesArray of results, one per input query, discriminated by status
responsePaginationNoPagination metadata for top-level bulk response pagination across results[]

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed57 schema fields changedv9.1.1
    • removedInput schema / properties / queries / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / queries / items / properties / assignee / description
      Added value: +"Assigned user"
    • addedInput schema / properties / queries / items / properties / author / description
      Added value: +"PR author"
    • addedInput schema / properties / queries / items / properties / base / description
      Added value: +"Target branch"
    • addedInput schema / properties / queries / items / properties / charLength
      Added value: +{
      +  "description": "",
      +  "maximum": 50000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / queries / items / properties / charOffset
      Added value: +{
      +  "description": "",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / queries / items / properties / closed / description
      Added value: +"Closed date: \">=YYYY-MM-DD\""
    • addedInput schema / properties / queries / items / properties / commenter / description
      Added value: +"User who commented"
    • changedInput schema / properties / queries / items / properties / comments / anyOf
      Previous value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / queries / items / properties / comments / description
      Added value: +"Comment count: \">5\", \"10..20\""
    • addedInput schema / properties / queries / items / properties / created / description
      Added value: +"Date filter: \">=YYYY-MM-DD\" or \"YYYY-MM-DD..YYYY-MM-DD\""
    • addedInput schema / properties / queries / items / properties / draft / description
      Added value: +"Draft status"
    • addedInput schema / properties / queries / items / properties / head / description
      Added value: +"Source branch"
    • addedInput schema / properties / queries / items / properties / id
      Added value: +{
      +  "description": "Stable query identifier used to match each result to its input query. Required for every query. Use a short meaningful string like \"react_hooks_search\" or \"router_prs\".",
      +  "maxLength": 120,
      +  "minLength": 1,
      +  "pattern": "^[A-Za-z0-9._:-]+$",
      +  "type": "string"
      +}
    • changedInput schema / properties / queries / items / properties / interactions / anyOf
      Previous value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / queries / items / properties / interactions / description
      Added value: +"Comments + reactions count"
    • addedInput schema / properties / queries / items / properties / involves / description
      Added value: +"User involved"
    • addedInput schema / properties / queries / items / properties / label / description
      Added value: +"Label filter"
    • addedInput schema / properties / queries / items / properties / limit / description
      Added value: +"Max PRs (1-10). Default: 5"
    • changedInput schema / properties / queries / items / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / queries / items / properties / mainResearchGoal / description
      Added value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)"
    • addedInput schema / properties / queries / items / properties / match / description
      Added value: +"[\"title\"|\"body\"|\"comments\"]. Default: all"
    • addedInput schema / properties / queries / items / properties / mentions / description
      Added value: +"Mentions @user"
    • addedInput schema / properties / queries / items / properties / merged / description
      Added value: +"Merged status (requires state=closed)"
    • addedInput schema / properties / queries / items / properties / merged-at / description
      Added value: +"Merged date: \">=YYYY-MM-DD\""
    • addedInput schema / properties / queries / items / properties / no-assignee / description
      Added value: +"No assignee"
    • addedInput schema / properties / queries / items / properties / no-label / description
      Added value: +"No labels"
    • addedInput schema / properties / queries / items / properties / no-milestone / description
      Added value: +"No milestone"
    • addedInput schema / properties / queries / items / properties / no-project / description
      Added value: +"Not in project"
    • addedInput schema / properties / queries / items / properties / order / description
      Added value: +"desc (default) | asc"
    • addedInput schema / properties / queries / items / properties / owner / description
      Added value: +"Repo owner"
    • addedInput schema / properties / queries / items / properties / page / description
      Added value: +"Page (1-10). Default: 1"
    • addedInput schema / properties / queries / items / properties / partialContentMetadata / description
      Added value: +"[{\"file\": \"path\"}] or [{\"file\": \"path\", \"additions\": [1,2]}]"
    • removedInput schema / properties / queries / items / properties / partialContentMetadata / items / additionalProperties
      Removed value: -false
    • addedInput schema / properties / queries / items / properties / partialContentMetadata / items / properties / additions / description
      Added value: +"Specific addition line numbers to include from the diff"
    • addedInput schema / properties / queries / items / properties / partialContentMetadata / items / properties / deletions / description
      Added value: +"Specific deletion line numbers to include from the diff"
    • addedInput schema / properties / queries / items / properties / partialContentMetadata / items / properties / file / description
      Added value: +"File path within the PR diff to fetch partial content for"
    • addedInput schema / properties / queries / items / properties / prNumber / description
      Added value: +"Direct PR number (ignores other filters)"
    • addedInput schema / properties / queries / items / properties / prNumber / maximum
      Added value: +9007199254740991
    • addedInput schema / properties / queries / items / properties / query / description
      Added value: +"Search across title, body, comments (max 256 chars)"
    • changedInput schema / properties / queries / items / properties / reactions / anyOf
      Previous value: -[
      -  {
      -    "minimum": 0,
      -    "type": "integer"
      -  },
      -  {
      -    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      -    "type": "string"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  {
      +    "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +    "type": "string"
      +  }
      +]
    • addedInput schema / properties / queries / items / properties / reactions / description
      Added value: +"Reaction count filter"
    • addedInput schema / properties / queries / items / properties / reasoning / description
      Added value: +"Why this query helps achieve the goal"
    • addedInput schema / properties / queries / items / properties / repo / description
      Added value: +"Repo name"
    • addedInput schema / properties / queries / items / properties / researchGoal / description
      Added value: +"Specific information this query seeks"
    • addedInput schema / properties / queries / items / properties / review-requested / description
      Added value: +"Requested reviewer"
    • addedInput schema / properties / queries / items / properties / reviewed-by / description
      Added value: +"Reviewer"
    • addedInput schema / properties / queries / items / properties / sort / description
      Added value: +"created | updated | best-match"
    • addedInput schema / properties / queries / items / properties / state / description
      Added value: +"\"open\" or \"closed\""
    • addedInput schema / properties / queries / items / properties / type / description
      Added value: +"metadata | fullContent | partialContent. Default: metadata"
    • addedInput schema / properties / queries / items / properties / updated / description
      Added value: +"Last update: \">=YYYY-MM-DD\""
    • addedInput schema / properties / queries / items / properties / withComments / description
      Added value: +"Include discussions (token expensive)"
    • addedInput schema / properties / queries / items / properties / withCommits / description
      Added value: +"Include commit details"
    • changedInput schema / properties / queries / items / required
      Previous value: -[
      -  "mainResearchGoal",
      -  "researchGoal",
      -  "reasoning"
      -]New value: +[
      +  "id",
      +  "mainResearchGoal",
      +  "researchGoal",
      +  "reasoning"
      +]
    • addedInput schema / properties / responseCharLength
      Added value: +{
      +  "description": "Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call.",
      +  "maximum": 50000,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / responseCharOffset
      Added value: +{
      +  "description": "Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated.",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "responsePagination": {
      +      "additionalProperties": false,
      +      "description": "Pagination metadata for top-level bulk response pagination across results[]",
      +      "properties": {
      +        "charLength": {
      +          "description": "Character length of the current page",
      +          "maximum": 9007199254740991,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "charOffset": {
      +          "description": "Character offset of the current page",
      +          "maximum": 9007199254740991,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "currentPage": {
      +          "description": "Current page number (1-indexed)",
      +          "exclusiveMinimum": 0,
      +          "maximum": 9007199254740991,
      +          "type": "integer"
      +        },
      +        "hasMore": {
      +          "description": "Whether more pages are available after the current page",
      +          "type": "boolean"
      +        },
      +        "totalChars": {
      +          "description": "Total number of characters in the full output",
      +          "maximum": 9007199254740991,
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "totalPages": {
      +          "description": "Total number of pages available",
      +          "exclusiveMinimum": 0,
      +          "maximum": 9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "currentPage",
      +        "totalPages",
      +        "hasMore",
      +        "charOffset",
      +        "charLength",
      +        "totalChars"
      +      ],
      +      "type": "object"
      +    },
      +    "results": {
      +      "description": "Array of results, one per input query, discriminated by status",
      +      "items": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "data": {
      +                "additionalProperties": false,
      +                "description": "The tool-specific result data",
      +                "properties": {
      +                  "hints": {
      +                    "description": "Contextual hints and suggestions for next steps or better queries",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "outputPagination": {
      +                    "additionalProperties": false,
      +                    "description": "Output pagination metadata when the rendered payload was truncated",
      +                    "properties": {
      +                      "charLength": {
      +                        "description": "Character length of the current page",
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      "charOffset": {
      +                        "description": "Character offset of the current page",
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      "currentPage": {
      +                        "description": "Current page number (1-indexed)",
      +                        "exclusiveMinimum": 0,
      +                        "maximum": 9007199254740991,
      +                        "type": "integer"
      +                      },
      +                      "hasMore": {
      +                        "description": "Whether more pages are available after the current page",
      +                        "type": "boolean"
      +                      },
      +                      "totalChars": {
      +                        "description": "Total number of characters in the full output",
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      "totalPages": {
      +                        "description": "Total number of pages available",
      +                        "exclusiveMinimum": 0,
      +                        "maximum": 9007199254740991,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "currentPage",
      +                      "totalPages",
      +                      "hasMore",
      +                      "charOffset",
      +                      "charLength",
      +                      "totalChars"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "pagination": {
      +                    "additionalProperties": false,
      +                    "description": "Pagination info for navigating through pull request results",
      +                    "properties": {
      +                      "currentPage": {
      +                        "description": "Current page number (1-indexed)",
      +                        "exclusiveMinimum": 0,
      +                        "maximum": 9007199254740991,
      +                        "type": "integer"
      +                      },
      +                      "hasMore": {
      +                        "description": "Whether more pages are available after the current page",
      +                        "type": "boolean"
      +                      },
      +                      "perPage": {
      +                        "description": "Results returned per page",
      +                        "exclusiveMinimum": 0,
      +                        "maximum": 9007199254740991,
      +                        "type": "integer"
      +                      },
      +                      "totalMatches": {
      +                        "description": "Total matching results across all pages",
      +                        "maximum": 9007199254740991,
      +                        "minimum": 0,
      +                        "type": "integer"
      +                      },
      +                      "totalPages": {
      +                        "description": "Total number of pages available",
      +                        "exclusiveMinimum": 0,
      +                        "maximum": 9007199254740991,
      +                        "type": "integer"
      +                      }
      +                    },
      +                    "required": [
      +                      "currentPage",
      +                      "totalPages",
      +                      "hasMore",
      +                      "perPage",
      +                      "totalMatches"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "pull_requests": {
      +                    "description": "Pull request results",
      +                    "items": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "additions": {
      +                          "description": "Lines added across the pull request",
      +                          "maximum": 9007199254740991,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "assignees": {
      +                          "description": "Assigned usernames",
      +                          "items": {
      +                            "type": "string"
      +                          },
      +                          "type": "array"
      +                        },
      +                        "author": {
      +                          "description": "Author username",
      +                          "type": "string"
      +                        },
      +                        "body": {
      +                          "anyOf": [
      +                            {
      +                              "type": "string"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ],
      +                          "description": "Pull request body"
      +                        },
      +                        "changedFilesCount": {
      +                          "description": "Number of changed files",
      +                          "maximum": 9007199254740991,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "closedAt": {
      +                          "description": "Closed timestamp",
      +                          "type": "string"
      +                        },
      +                        "comments": {
      +                          "description": "Expanded pull request comments",
      +                          "items": {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "author": {
      +                                "description": "Comment author username",
      +                                "type": "string"
      +                              },
      +                              "body": {
      +                                "description": "Comment body",
      +                                "type": "string"
      +                              },
      +                              "createdAt": {
      +                                "description": "Comment creation timestamp",
      +                                "type": "string"
      +                              },
      +                              "id": {
      +                                "description": "Comment identifier",
      +                                "type": "string"
      +                              },
      +                              "updatedAt": {
      +                                "description": "Comment update timestamp",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "id",
      +                              "author",
      +                              "body",
      +                              "createdAt",
      +                              "updatedAt"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "type": "array"
      +                        },
      +                        "commentsCount": {
      +                          "description": "Number of comments on the pull request",
      +                          "maximum": 9007199254740991,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "createdAt": {
      +                          "description": "Creation timestamp",
      +                          "type": "string"
      +                        },
      +                        "deletions": {
      +                          "description": "Lines deleted across the pull request",
      +                          "maximum": 9007199254740991,
      +                          "minimum": 0,
      +                          "type": "integer"
      +                        },
      +                        "draft": {
      +                          "description": "Whether the pull request is a draft",
      +                          "type": "boolean"
      +                        },
      +                        "fileChanges": {
      +                          "description": "Expanded changed-file details",
      +                          "items": {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "additions": {
      +                                "description": "Lines added in this file",
      +                                "maximum": 9007199254740991,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              },
      +                              "deletions": {
      +                                "description": "Lines deleted in this file",
      +                                "maximum": 9007199254740991,
      +                                "minimum": 0,
      +                                "type": "integer"
      +                              },
      +                              "patch": {
      +                                "description": "Diff patch for the file",
      +                                "type": "string"
      +                              },
      +                              "path": {
      +                                "description": "File path inside the pull request diff",
      +                                "type": "string"
      +                              },
      +                              "status": {
      +                                "description": "Git change status for the file",
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "path",
      +                              "status",
      +                              "additions",
      +                              "deletions"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          "type": "array"
      +                        },
      +                        "labels": {
      +                          "description": "Applied label names",
      +                          "items": {
      +                            "type": "string"
      +                          },
      +                          "type": "array"
      +                        },
      +                        "mergedAt": {
      +                          "description": "Merged timestamp",
      +                          "type": "string"
      +                        },
      +                        "number": {
      +                          "description": "Pull request number",
      +                          "exclusiveMinimum": 0,
      +                          "maximum": 9007199254740991,
      +                          "type": "integer"
      +                        },
      +                        "sourceBranch": {
      +                          "description": "Source branch name",
      +                          "type": "string"
      +                        },
      +                        "sourceSha": {
      +                          "description": "Source branch commit SHA",
      +                          "type": "string"
      +                        },
      +                        "state": {
      +                          "description": "Pull request state",
      +                          "enum": [
      +                            "open",
      +                            "closed",
      +                            "merged"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "targetBranch": {
      +                          "description": "Target branch name",
      +                          "type": "string"
      +                        },
      +                        "targetSha": {
      +                          "description": "Target branch commit SHA",
      +                          "type": "string"
      +                        },
      +                        "title": {
      +                          "description": "Pull request title",
      +                          "type": "string"
      +                        },
      +                        "updatedAt": {
      +                          "description": "Last update timestamp",
      +                          "type": "string"
      +                        },
      +                        "url": {
      +                          "description": "Web URL for the pull request",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "number",
      +                        "title",
      +                        "url",
      +                        "state",
      +                        "draft",
      +                        "author",
      +                        "sourceBranch",
      +                        "targetBranch",
      +                        "createdAt",
      +                        "updatedAt"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "total_count": {
      +                    "description": "Total number of matching pull requests",
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                },
      +                "type": "object"
      +              },
      +              "id": {
      +                "description": "Stable query identifier matching the input query id",
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "hasResults",
      +                "description": "Indicates the query returned results successfully",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "status",
      +              "data"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "data": {
      +                "additionalProperties": {},
      +                "description": "Empty result metadata (may contain hints or paging details)",
      +                "properties": {},
      +                "type": "object"
      +              },
      +              "id": {
      +                "description": "Stable query identifier matching the input query id",
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "empty",
      +                "description": "Indicates the query returned no matching results",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "status",
      +              "data"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "properties": {
      +              "data": {
      +                "additionalProperties": false,
      +                "description": "Error details including message, type, and recovery hints",
      +                "properties": {
      +                  "cwd": {
      +                    "description": "Working directory relevant to the error",
      +                    "type": "string"
      +                  },
      +                  "error": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "error": {
      +                            "description": "GitHub API error message",
      +                            "type": "string"
      +                          },
      +                          "hints": {
      +                            "description": "Provider-specific hints",
      +                            "items": {
      +                              "type": "string"
      +                            },
      +                            "type": "array"
      +                          },
      +                          "rateLimitRemaining": {
      +                            "description": "Remaining API requests in the current rate limit window",
      +                            "type": "number"
      +                          },
      +                          "rateLimitReset": {
      +                            "description": "Rate limit reset time in milliseconds since epoch",
      +                            "type": "number"
      +                          },
      +                          "retryAfter": {
      +                            "description": "Retry-after delay in seconds",
      +                            "type": "number"
      +                          },
      +                          "scopesSuggestion": {
      +                            "description": "Suggested scopes needed to resolve the error",
      +                            "type": "string"
      +                          },
      +                          "status": {
      +                            "description": "HTTP status code",
      +                            "maximum": 9007199254740991,
      +                            "minimum": -9007199254740991,
      +                            "type": "integer"
      +                          },
      +                          "type": {
      +                            "description": "GitHub API error category",
      +                            "enum": [
      +                              "http",
      +                              "graphql",
      +                              "network",
      +                              "unknown"
      +                            ],
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "error",
      +                          "type"
      +                        ],
      +                        "type": "object"
      +                      }
      +                    ],
      +                    "description": "Error message or API error object"
      +                  },
      +                  "errorCode": {
      +                    "description": "Tool error code",
      +                    "type": "string"
      +                  },
      +                  "errorType": {
      +                    "description": "Tool-specific error type (e.g. symbol_not_found, size_limit)",
      +                    "type": "string"
      +                  },
      +                  "hints": {
      +                    "description": "Recovery hints",
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  },
      +                  "resolvedPath": {
      +                    "description": "Resolved filesystem path involved in the error",
      +                    "type": "string"
      +                  },
      +                  "searchRadius": {
      +                    "description": "LSP search radius when symbol not found",
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "error"
      +                ],
      +                "type": "object"
      +              },
      +              "id": {
      +                "description": "Stable query identifier matching the input query id",
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "status": {
      +                "const": "error",
      +                "description": "Indicates the query encountered an error",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "id",
      +              "status",
      +              "data"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "results"
      +  ],
      +  "type": "object"
      +}
  2. Changed44 schema fields changedv1.0.0
    • removedInput schema / properties / app
      Removed value: -{
      -  "description": "Filter by GitHub App author",
      -  "type": "string"
      -}
    • removedInput schema / properties / archived
      Removed value: -{
      -  "description": "Filter by repository archived state",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / assignee
      Removed value: -{
      -  "description": "GitHub username of assignee",
      -  "type": "string"
      -}
    • removedInput schema / properties / author
      Removed value: -{
      -  "description": "GitHub username of PR author",
      -  "type": "string"
      -}
    • removedInput schema / properties / base
      Removed value: -{
      -  "description": "Filter on base branch name",
      -  "type": "string"
      -}
    • removedInput schema / properties / checks
      Removed value: -{
      -  "description": "Filter by checks status",
      -  "enum": [
      -    "pending",
      -    "success",
      -    "failure"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / closed
      Removed value: -{
      -  "description": "Filter by closed date (e.g., >2020-01-01)",
      -  "type": "string"
      -}
    • removedInput schema / properties / commenter
      Removed value: -{
      -  "description": "User who commented on PR",
      -  "type": "string"
      -}
    • removedInput schema / properties / comments
      Removed value: -{
      -  "default": false,
      -  "description": "Include comment content in search results. This is a very expensive operation in tokens and should be used with caution.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / created
      Removed value: -{
      -  "description": "Filter by created date (e.g., >2020-01-01)",
      -  "type": "string"
      -}
    • removedInput schema / properties / draft
      Removed value: -{
      -  "description": "Filter by draft state",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / getCommitData
      Removed value: -{
      -  "default": false,
      -  "description": "Set to true to fetch all commits in the PR with their changes. Shows commit messages, authors, and file changes. WARNING: EXTREMELY expensive in tokens - fetches diff/patch content for each commit.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / head
      Removed value: -{
      -  "description": "Filter on head branch name",
      -  "type": "string"
      -}
    • removedInput schema / properties / interactions
      Removed value: -{
      -  "description": "Total interactions (reactions + comments)",
      -  "type": "number"
      -}
    • removedInput schema / properties / involves
      Removed value: -{
      -  "description": "User involved in any way",
      -  "type": "string"
      -}
    • removedInput schema / properties / label
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    }
      -  ],
      -  "description": "Filter by label"
      -}
    • removedInput schema / properties / language
      Removed value: -{
      -  "description": "Repository language",
      -  "type": "string"
      -}
    • removedInput schema / properties / limit
      Removed value: -{
      -  "default": 30,
      -  "description": "Maximum number of results to fetch",
      -  "maximum": 100,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • removedInput schema / properties / locked
      Removed value: -{
      -  "description": "Filter by locked conversation status",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / match
      Removed value: -{
      -  "description": "Restrict search to specific fields",
      -  "items": {
      -    "enum": [
      -      "title",
      -      "body",
      -      "comments"
      -    ],
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / mentions
      Removed value: -{
      -  "description": "PRs mentioning this user",
      -  "type": "string"
      -}
    • removedInput schema / properties / merged
      Removed value: -{
      -  "description": "Filter by merged state",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / merged-at
      Removed value: -{
      -  "description": "Filter by merged date (e.g., >2020-01-01)",
      -  "type": "string"
      -}
    • removedInput schema / properties / milestone
      Removed value: -{
      -  "description": "Milestone title",
      -  "type": "string"
      -}
    • removedInput schema / properties / no-assignee
      Removed value: -{
      -  "description": "Filter by missing assignee",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / no-label
      Removed value: -{
      -  "description": "Filter by missing label",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / no-milestone
      Removed value: -{
      -  "description": "Filter by missing milestone",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / no-project
      Removed value: -{
      -  "description": "Filter by missing project",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / order
      Removed value: -{
      -  "default": "desc",
      -  "description": "Order of results (requires --sort)",
      -  "enum": [
      -    "asc",
      -    "desc"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / owner
      Removed value: -{
      -  "description": "Repository owner (use with repo param)",
      -  "type": "string"
      -}
    • removedInput schema / properties / project
      Removed value: -{
      -  "description": "Project board owner/number",
      -  "type": "string"
      -}
    • addedInput schema / properties / queries
      Added value: +{
      +  "description": "Research queries for githubSearchPullRequests (1-3 queries per call for optimal resource management). Review schema before use for optimal results",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assignee": {
      +        "type": "string"
      +      },
      +      "author": {
      +        "type": "string"
      +      },
      +      "base": {
      +        "type": "string"
      +      },
      +      "closed": {
      +        "type": "string"
      +      },
      +      "commenter": {
      +        "type": "string"
      +      },
      +      "comments": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "created": {
      +        "type": "string"
      +      },
      +      "draft": {
      +        "type": "boolean"
      +      },
      +      "head": {
      +        "type": "string"
      +      },
      +      "interactions": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "involves": {
      +        "type": "string"
      +      },
      +      "label": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        ]
      +      },
      +      "limit": {
      +        "default": 5,
      +        "maximum": 10,
      +        "minimum": 1,
      +        "type": "number"
      +      },
      +      "mainResearchGoal": {
      +        "type": "string"
      +      },
      +      "match": {
      +        "items": {
      +          "enum": [
      +            "title",
      +            "body",
      +            "comments"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "mentions": {
      +        "type": "string"
      +      },
      +      "merged": {
      +        "type": "boolean"
      +      },
      +      "merged-at": {
      +        "type": "string"
      +      },
      +      "no-assignee": {
      +        "type": "boolean"
      +      },
      +      "no-label": {
      +        "type": "boolean"
      +      },
      +      "no-milestone": {
      +        "type": "boolean"
      +      },
      +      "no-project": {
      +        "type": "boolean"
      +      },
      +      "order": {
      +        "default": "desc",
      +        "enum": [
      +          "asc",
      +          "desc"
      +        ],
      +        "type": "string"
      +      },
      +      "owner": {
      +        "type": "string"
      +      },
      +      "page": {
      +        "default": 1,
      +        "maximum": 10,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "partialContentMetadata": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "additions": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "deletions": {
      +              "items": {
      +                "type": "number"
      +              },
      +              "type": "array"
      +            },
      +            "file": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "file"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "prNumber": {
      +        "exclusiveMinimum": 0,
      +        "type": "integer"
      +      },
      +      "query": {
      +        "type": "string"
      +      },
      +      "reactions": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          {
      +            "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$",
      +            "type": "string"
      +          }
      +        ]
      +      },
      +      "reasoning": {
      +        "type": "string"
      +      },
      +      "repo": {
      +        "type": "string"
      +      },
      +      "researchGoal": {
      +        "type": "string"
      +      },
      +      "review-requested": {
      +        "type": "string"
      +      },
      +      "reviewed-by": {
      +        "type": "string"
      +      },
      +      "sort": {
      +        "enum": [
      +          "created",
      +          "updated",
      +          "best-match"
      +        ],
      +        "type": "string"
      +      },
      +      "state": {
      +        "enum": [
      +          "open",
      +          "closed"
      +        ],
      +        "type": "string"
      +      },
      +      "type": {
      +        "default": "metadata",
      +        "enum": [
      +          "metadata",
      +          "fullContent",
      +          "partialContent"
      +        ],
      +        "type": "string"
      +      },
      +      "updated": {
      +        "type": "string"
      +      },
      +      "withComments": {
      +        "default": false,
      +        "type": "boolean"
      +      },
      +      "withCommits": {
      +        "default": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "mainResearchGoal",
      +      "researchGoal",
      +      "reasoning"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 3,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • removedInput schema / properties / query
      Removed value: -{
      -  "description": "Search query for PR content (keep minimal for broader results)",
      -  "minLength": 1,
      -  "type": "string"
      -}
    • removedInput schema / properties / reactions
      Removed value: -{
      -  "description": "Filter by number of reactions",
      -  "type": "number"
      -}
    • removedInput schema / properties / repo
      Removed value: -{
      -  "description": "Repository name (use with owner param)",
      -  "type": "string"
      -}
    • removedInput schema / properties / review
      Removed value: -{
      -  "description": "Filter by review status",
      -  "enum": [
      -    "none",
      -    "required",
      -    "approved",
      -    "changes_requested"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / review-requested
      Removed value: -{
      -  "description": "User/team requested for review",
      -  "type": "string"
      -}
    • removedInput schema / properties / reviewed-by
      Removed value: -{
      -  "description": "User who reviewed the PR",
      -  "type": "string"
      -}
    • removedInput schema / properties / sort
      Removed value: -{
      -  "description": "Sort fetched results",
      -  "enum": [
      -    "comments",
      -    "reactions",
      -    "reactions-+1",
      -    "reactions--1",
      -    "reactions-smile",
      -    "reactions-thinking_face",
      -    "reactions-heart",
      -    "reactions-tada",
      -    "interactions",
      -    "created",
      -    "updated"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / state
      Removed value: -{
      -  "description": "Filter by state: open or closed",
      -  "enum": [
      -    "open",
      -    "closed"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / team-mentions
      Removed value: -{
      -  "description": "Filter by team mentions",
      -  "type": "string"
      -}
    • removedInput schema / properties / updated
      Removed value: -{
      -  "description": "Filter by updated date (e.g., >2020-01-01)",
      -  "type": "string"
      -}
    • removedInput schema / properties / visibility
      Removed value: -{
      -  "description": "Repository visibility",
      -  "enum": [
      -    "public",
      -    "private",
      -    "internal"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "query"
      -]New value: +[
      +  "queries"
      +]
  3. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds critical behavioral details in the <gotchas> section, such as 'prNumber ignores ALL other filters' and 'Avoid fullContent on large PRs (token expensive)', which go beyond annotations. No contradiction.

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 well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>) and is front-loaded with the title and external API note. While comprehensive, it is relatively long, but each section earns its place given the tool's complexity.

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 the tool's complexity (many parameters, nested query objects, relationships to siblings) and the presence of an output schema (not shown), the description covers usage patterns, gotchas, and integration with other tools comprehensively. It provides enough context for an agent to use it effectively.

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?

Schema coverage is 100% with detailed descriptions for each parameter, so baseline is 3. The description adds value through concrete examples showing parameter combinations and the gotcha about prNumber. However, the description does not elaborate on parameter semantics beyond what the schema already provides, so it does not fully compensate for the high schema coverage.

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 tool's purpose: 'Search GitHub Pull Requests'. The <when> section provides specific use cases like code archaeology and implementation history, and the fromTool/toTool sections differentiate it from sibling tools by showing how they relate.

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

Usage Guidelines5/5

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

The <when> section explicitly outlines when to use this tool (code archaeology, implementation history) and suggests a workflow (metadata first, then partialContent). The fromTool and toTool sections provide clear guidance on alternatives and sequencing, e.g., using githubSearchCode first, then this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

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/bgauryy/octocode'

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