changedInput schema / properties / queries / items / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "ecosystem": {
- "const": "npm",
- "type": "string"
- },
- "mainResearchGoal": {
- "type": "string"
- },
- "name": {
- "minLength": 1,
- "type": "string"
- },
- "npmFetchMetadata": {
- "default": false,
- "type": "boolean"
- },
- "reasoning": {
- "type": "string"
- },
- "researchGoal": {
- "type": "string"
- },
- "searchLimit": {
- "default": 1,
- "maximum": 10,
- "minimum": 1,
- "type": "integer"
- }
- },
- "required": [
- "mainResearchGoal",
- "researchGoal",
- "reasoning",
- "name",
- "ecosystem"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "ecosystem": {
- "const": "python",
- "type": "string"
- },
- "mainResearchGoal": {
- "$ref": "#/properties/queries/items/anyOf/0/properties/mainResearchGoal"
- },
- "name": {
- "$ref": "#/properties/queries/items/anyOf/0/properties/name"
- },
- "pythonFetchMetadata": {
- "default": false,
- "type": "boolean"
- },
- "reasoning": {
- "$ref": "#/properties/queries/items/anyOf/0/properties/reasoning"
- },
- "researchGoal": {
- "$ref": "#/properties/queries/items/anyOf/0/properties/researchGoal"
- },
- "searchLimit": {
- "$ref": "#/properties/queries/items/anyOf/0/properties/searchLimit"
- }
- },
- "required": [
- "mainResearchGoal",
- "researchGoal",
- "reasoning",
- "name",
- "ecosystem"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "charLength": {
+ "description": "Character budget for output pagination.",
+ "maximum": 50000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "charOffset": {
+ "description": "Character offset for output pagination.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "ecosystem": {
+ "const": "npm",
+ "description": "\"npm\" or \"python\"",
+ "type": "string"
+ },
+ "id": {
+ "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"
+ },
+ "mainResearchGoal": {
+ "description": "Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)",
+ "type": "string"
+ },
+ "name": {
+ "description": "Package name or search term",
+ "minLength": 1,
+ "type": "string"
+ },
+ "npmFetchMetadata": {
+ "default": false,
+ "description": "Fetch detailed NPM metadata (slower)",
+ "type": "boolean"
+ },
+ "reasoning": {
+ "description": "Why this query helps achieve the goal",
+ "type": "string"
+ },
+ "researchGoal": {
+ "description": "Specific information this query seeks",
+ "type": "string"
+ },
+ "searchLimit": {
+ "default": 1,
+ "description": "Max results for NPM (1-10). Python: always 1. Default: 1",
+ "maximum": 10,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "mainResearchGoal",
+ "researchGoal",
+ "reasoning",
+ "name",
+ "ecosystem"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "charLength": {
+ "description": "Character budget for output pagination.",
+ "maximum": 50000,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "charOffset": {
+ "description": "Character offset for output pagination.",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ },
+ "ecosystem": {
+ "const": "python",
+ "description": "\"npm\" or \"python\"",
+ "type": "string"
+ },
+ "id": {
+ "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"
+ },
+ "mainResearchGoal": {
+ "description": "Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)",
+ "type": "string"
+ },
+ "name": {
+ "description": "Package name or search term",
+ "minLength": 1,
+ "type": "string"
+ },
+ "pythonFetchMetadata": {
+ "default": false,
+ "description": "Fetch full metadata (version, author, license)",
+ "type": "boolean"
+ },
+ "reasoning": {
+ "description": "Why this query helps achieve the goal",
+ "type": "string"
+ },
+ "researchGoal": {
+ "description": "Specific information this query seeks",
+ "type": "string"
+ },
+ "searchLimit": {
+ "default": 1,
+ "description": "Max results for NPM (1-10). Python: always 1. Default: 1",
+ "maximum": 10,
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "id",
+ "mainResearchGoal",
+ "researchGoal",
+ "reasoning",
+ "name",
+ "ecosystem"
+ ],
+ "type": "object"
+ }
+]
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": "Payload pagination metadata when the package list was size-paginated",
+ "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"
+ },
+ "packages": {
+ "description": "Matching packages",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "author": {
+ "description": "Package author",
+ "type": "string"
+ },
+ "dependencies": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Declared dependencies",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "description": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Package description"
+ },
+ "engines": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Engine requirements",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "homepage": {
+ "description": "Package homepage",
+ "type": "string"
+ },
+ "keywords": {
+ "description": "Package keywords",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "lastPublished": {
+ "description": "Last published timestamp",
+ "type": "string"
+ },
+ "license": {
+ "description": "Package license",
+ "type": "string"
+ },
+ "mainEntry": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Main entry point for NPM packages"
+ },
+ "name": {
+ "description": "Package name",
+ "type": "string"
+ },
+ "owner": {
+ "description": "Repository owner parsed from the repository URL",
+ "type": "string"
+ },
+ "path": {
+ "description": "NPM package path or repository subdirectory",
+ "type": "string"
+ },
+ "peerDependencies": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Declared peer dependencies",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "repo": {
+ "description": "Repository name parsed from the repository URL",
+ "type": "string"
+ },
+ "repoUrl": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Normalized repository URL when available"
+ },
+ "repository": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Repository URL when available"
+ },
+ "typeDefinitions": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Type definition entry point for NPM packages"
+ },
+ "version": {
+ "description": "Package version",
+ "type": "string"
+ },
+ "weeklyDownloads": {
+ "description": "Weekly download count from npm registry",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "totalFound": {
+ "description": "Total number of packages matching the search query",
+ "maximum": 9007199254740991,
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "packages"
+ ],
+ "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"
+}