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"
+}