Octocode MCP
Octocode: Разработка на основе исследований для ИИ
Установка
Предварительные требования: требуется аутентификация GitHub. См. Настройка аутентификации.
Рекомендуется: Octocode CLI
npx octocode-cli installИнтерактивный мастер настройки с GitHub OAuth, установкой сервера MCP и маркетплейсом навыков. Используйте --ide <ide> для неинтерактивной установки (например, npx octocode-cli install --ide cursor).
Альтернативные методы
Добавьте в свой файл конфигурации MCP:
{
"mcpServers": {
"octocode": {
"command": "npx",
"args": ["octocode-mcp@latest"]
}
}
}npx add-skill https://github.com/bgauryy/octocode-mcp/tree/main/skills/octocode-researchRelated MCP server: MCP Indexer
MCP-сервер
Octocode MCP Server подключает вашего ИИ-ассистента к коду:
GitHub и GitLab: поиск репозиториев, поиск шаблонов использования, чтение реализаций, изучение PR
Локальные инструменты: поиск кода, просмотр директорий, поиск файлов в вашей локальной кодовой базе
LSP Intelligence: переход к определению, поиск ссылок, иерархия вызовов — понимание на уровне компилятора
https://github.com/user-attachments/assets/de8d14c0-2ead-46ed-895e-09144c9b5071
Навыки
Навыки агента — это легкий открытый формат для расширения возможностей ИИ-агентов. Индекс навыков: skills/README.md
Навык | Что он делает |
Поиск и исследование кода — локальный LSP + внешний (GitHub, npm/PyPI) | |
Многоэтапное исследование с сессиями, контрольными точками и сохранением состояния | |
Понимание, написание, анализ, аудит кода — AST + LSP + граф зависимостей | |
Планирование на основе фактов: Понимание > Исследование > Планирование > Реализация | |
Формальные технические решения с альтернативами, компромиссами и рекомендациями | |
Обзор PR и локального кода по 7 доменам с отслеживанием потока LSP | |
Жесткая критика кода с цитированием файла:строки и уровнями серьезности | |
Превращение слабых промптов в обязательные протоколы агента | |
6-этапный конвейер создания 16+ проверенных документов |
https://github.com/user-attachments/assets/5b630763-2dee-4c2d-b5c1-6335396723ec
Документация
Полный индекс документации находится здесь: docs/README.md
Рекомендуемые быстрые ссылки:
Манифест
«Код — это истина, но контекст — это карта». — Прочитайте Манифест разработки на основе исследований, чтобы понять философию Octocode.
Участие в разработке
См. Руководство по разработке для настройки монорепозитория, тестирования и рекомендаций по внесению вклада.
Available Tools
13 toolsgithubGetFileContentAIdempotent
Read GitHub file or download directory [EXTERNAL: GitHub API]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for githubGetFileContent (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral details beyond annotations: file returns content inline, directory saves to disk and returns localPath. It discloses limits (300KB max, branch naming), input constraints (mutually exclusive params), and mode-specific behaviors. No contradiction with annotations (idempotentHint=true, destructiveHint=false).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a well-organized structure with headings (<when>, <fromTool>, etc.) that front-load the main purpose and allow quick scanning. While lengthy due to necessary detail (gotchas, examples), every section adds value and the conciseness is appropriate for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all aspects for effective use: when to use, how to use (modes, params), pitfalls (gotchas), examples, and integration with siblings. It mentions prerequisites for directory mode (ENABLE_LOCAL, ENABLE_CLONE) and the file size limit. The output schema exists separately, so return values are omitted by design.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% description coverage, but the description adds value by explaining the three mutually exclusive file modes (matchString, startLine+endLine, fullContent) and the pagination parameters (charOffset, charLength) in the <gotchas> and <modes> sections, enhancing practical usage understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a GitHub file or downloads a directory, with specific verbs ('read', 'download') and resource ('GitHub file or directory'). It distinguishes from siblings like githubSearchCode (search) and githubViewRepoStructure (structure), and the title 'GitHub File Content Fetch' reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> section provides clear contexts (e.g., read from known path, download directory). The <fromTool> and <toTool> sections guide use in conjunction with other tools. However, it lacks explicit 'when not to use' guidance, though the modes and gotchas imply exclusions (e.g., directory mode requires specific flags).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
githubSearchCodeARead-onlyIdempotent
Search GitHub code [EXTERNAL: GitHub API]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for githubSearchCode (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds substantial behavioral detail beyond annotations, including strict prefix matching for 'path', pagination parameters, match type behavior, and filtering constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>). It is front-loaded with essential usage context, though some redundancy exists (e.g., repeating 'match' behavior in multiple places).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with nested queries and multiple parameters, the description is remarkably complete. It covers when to use, how to chain with other tools, gotchas, and examples. The presence of an output schema reduces the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions, and schema coverage is 100%. The description enriches parameter understanding with contextual advice like 'Start lean: single filter -> verify -> add filters' and explicit examples, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool searches GitHub code, with explicit directives to 'Find code patterns' and 'Locate files by path'. It distinguishes between match=file and match=path, and mentions cross-repo usage. Sibling tools like githubSearchRepositories and githubGetFileContent are differentiated through usage guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> section defines appropriate contexts, and <fromTool> and <toTool> sections provide explicit sequencing with sibling tools. The <gotchas> section offers critical do's and don'ts, such as avoiding combining extension+filename+path and preferring owner+repo for precision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
githubSearchPullRequestsARead-onlyIdempotent
Search GitHub Pull Requests [EXTERNAL: GitHub API]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for githubSearchPullRequests (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
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.
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.
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.
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.
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.
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.
githubSearchRepositoriesARead-onlyIdempotent
Search GitHub repositories [EXTERNAL: GitHub API]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for githubSearchRepositories (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true. The description adds valuable behavioral context: gotchas like pushedAt vs updatedAt distinction, stars filter noise, archived auto-exclusion, and synonym suggestions. Adds significant value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>). Every section adds value and the front-loading of purpose is good. Slightly verbose but acceptable given complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (multiple query parameters, pagination, interaction with other tools), the description is complete. It covers usage context, tool flow, gotchas, and examples. Output schema exists, so return values are not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions (e.g., stars filter format, match enum). The description itself doesn't add much beyond schema for individual parameters but provides examples that illustrate usage. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search GitHub repositories' and distinguishes from sibling tools like packageSearch (faster for known packages) and githubSearchCode (code search). The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit <when> usage context (external research, finding repos) and <fromTool>/<toTool> sections that guide the flow between tools. It also names alternatives like packageSearch for known packages, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
githubViewRepoStructureARead-onlyIdempotent
Display GitHub repo structure [EXTERNAL: GitHub API]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for githubViewRepoStructure (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=true. The description adds crucial behavioral details in '<gotchas>': depth=2 slowdown, auto-filtering of noisy dirs (e.g., .git, node_modules), maximum 200 items, and the need to check summary.truncated. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>) that are front-loaded and efficient. Every sentence provides actionable information with no redundancy, making it easy for an agent to parse and apply.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity, output schema existence, and full schema coverage, the description covers all necessary aspects: use cases, workflow, gotchas, examples, and tool interactions. It leaves no critical gaps for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value through examples (e.g., path='', depth=1; path='src', depth=2) and gotchas that clarify parameter usage (starting from root, depth constraints). While not exhaustive, it enhances understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Display GitHub repo structure' and positions it as an entry point for understanding layout and discovering paths. It explicitly distinguishes from sibling tools like githubSearchCode and githubGetFileContent via the 'toTool' section, ensuring no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit <when> section describing use cases (Understand layout, Discover paths, Entry point) and a workflow (Root depth=1, then Drill path+depth=2). Also includes 'fromTool' and 'toTool' sections that guide the agent on tool chaining, offering clear when-to-use and when-to-alternate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localFindFilesARead-onlyIdempotent
Find files by metadata [LOCAL: filesystem]
Config/docs: localGetFileContent directly
Faster than content search (metadata indexing)
excludeDir for noise (node_modules, dist, .git)
Time: '7d', '2h', '30m'
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for localFindFiles (1–5 per call). Review schema before use. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable behavioral context: performance note ('Faster than content search due to metadata indexing'), default exclusion directories, time format examples, and pagination details (filesPerPage, charOffset). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 front-loads the core purpose. However, it is relatively verbose; could be more concise by removing redundant phrases. Still easily scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 and pagination), the description provides comprehensive context: usage workflow, examples, performance characteristics, and exclusion defaults. An output schema exists, so return value explanation is not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with individual parameter descriptions. The description enhances understanding via examples (e.g., time formats '7d', '2h') and gotchas (e.g., excludeDir defaults), but does not add new meaning for each parameter beyond what schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds files by metadata (name, time, size, permissions) on the local filesystem. It explicitly distinguishes from sibling tools: 'NOT for content - use localSearchCode' and fromTool section links to localViewStructure, making differentiation unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> section provides explicit guidance on when to use (metadata search, scope narrowing, recent changes) and when not to (content search, directing to localSearchCode). The <fromTool> and <toTool> sections further specify workflow ordering with other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localGetFileContentARead-onlyIdempotent
Read file content [LOCAL: filesystem]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for localGetFileContent (1–5 per call). Review schema before use. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds significant behavioral context beyond annotations, such as the ability to read specific lines, match patterns, pagination via charOffset/charLength, and token efficiency warnings for large files. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (<when>, <gotchas>, <examples>) that are front-loaded. Despite length, every section earns its place by providing essential context, guidelines, or examples. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple parameters, pagination, batch queries) and the presence of annotations and output schema, the description is complete. It covers when to use, how to use, pitfalls, examples, and alternatives, leaving no ambiguity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value beyond the schema through examples and gotchas that illustrate parameter combinations (e.g., using startLine/endLine for known ranges, fullContent for small configs). It clarifies pagination parameters and the batch nature of queries, which enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read file content [LOCAL: filesystem]' and lists specific use cases in the <when> section, such as reading implementation after locating with search/LSP and reading configs/docs directly. It also distinguishes from sibling tools by stating 'Direct read OK for: configs, docs, .json, .md, .yaml' and providing alternatives like LSP tools for certain tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive usage guidelines through sections like <when>, <fromTool>, <flow_questions>, and <gotchas>. It explicitly tells when to use the tool, when to prefer alternatives (e.g., LSP tools for flow analysis), and best practices (e.g., use matchString for large files, startLine/endLine for known ranges).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localSearchCodeARead-onlyIdempotent
Search code patterns [LOCAL: ripgrep] - START HERE for code questions
Without LSP:
localGetFileContent(matchString) for context
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for localSearchCode (1–5 per call). Review schema before use. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, idempotent behavior. The description adds gotchas like lineHint being 1-indexed, filesOnly for fast discovery, and type filter efficiency, providing additional behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>), front-loaded with a summary. Each section is concise and serves a distinct purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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) and the presence of an output schema, the description provides sufficient context with examples, workflows, and gotchas. It covers usage beyond the schema, making it complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented. The description adds value through examples and gotchas (e.g., filesOnly, type filter), but does not elaborate on each parameter since the schema already does. Baseline 3 is elevated to 4 due to practical usage tips.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches code patterns using ripgrep, listing specific use cases like function finding, symbol lookup, and pattern matching. It distinguishes from sibling tools like localFindFiles and localViewStructure by referencing them in the <fromTool> and <toTool> sections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> and <toTool> sections provide explicit guidance on when to use this tool and how it fits into workflows with LSP or alternative tools (e.g., lspGotoDefinition, lspFindReferences). It also suggests self-refining patterns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
localViewStructureARead-onlyIdempotent
View directory structure [LOCAL: filesystem]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for localViewStructure (1–5 per call). Review schema before use. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds valuable behavioral context: auto-excludes (node_modules, .git, dist), performance warnings (depth=2 slow on large dirs), and pagination behavior. This goes beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (<when>, <fromTool>, <toTool>, <gotchas>, <examples>). It is front-loaded with the core action and usage context. While comprehensive, it remains concise and each section earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (local filesystem, many parameters, sibling tools) and the existence of an output schema, the description covers all necessary contexts: usage scenarios, workflow guidance, pitfalls, sibling differentiation, and examples. It is fully complete for AI agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions key parameters (path, depth, pattern, filesOnly) in examples and gotchas but does not add significant semantic detail beyond what the schema descriptions provide. Some parameters like 'charOffset' have empty descriptions in schema, but the description does not address them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'View directory structure' and provides explicit examples and usage patterns. It distinguishes itself from siblings by outlining when to use this tool versus localFindFiles, localSearchCode, etc., making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> block explicitly describes when to use the tool, including workflow steps (start depth=1, drill depth=2, then search). It also contrasts with sibling tools in <fromTool> and provides situational advice like monorepo checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lspCallHierarchyARead-onlyIdempotent
Trace function call relationships [LOCAL: LSP]
REQUIRES lineHint - call localSearchCode FIRST to get line number
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for lspCallHierarchy (1-3 per call). Review schema before use. Expensive operation; prefer depth=1 and follow up from returned calls. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds useful context: requires lineHint (1-indexed), works cross-file, traces imports automatically, and is semantic. No contradictions. Could mention cost/expense in description itself, but schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is lengthy but well-structured with clear sections (when, prerequisite, fromTool, etc.) and front-loaded purpose. Every section adds value, but could be slightly more concise without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of output schema, the description covers all necessary aspects: prerequisites, alternatives, flow patterns, gotchas, and examples. No gaps in understanding how the tool works or how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds examples and usage patterns but does not significantly enhance parameter semantics beyond what the schema already provides, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Trace function call relationships [LOCAL: LSP]' and distinguishes between incoming/outgoing directions. It also includes a dedicated section comparing with sibling lspFindReferences, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use scenarios via <when> tags (e.g., 'Who calls this?' for incoming), prerequisite requirements (lineHint from localSearchCode), and alternatives (lspFindReferences for non-call usages). Also includes flow patterns and examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lspFindReferencesARead-onlyIdempotent
Find all usages of a symbol [LOCAL: LSP]
REQUIRES lineHint - call localSearchCode FIRST to get line number
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for lspFindReferences (1-5 per call). Review schema before use. Batch independent symbols and use page for large result sets. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already specify readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds useful behavioral details such as the requirement for lineHint, case-sensitivity of symbolName, and that includeDeclaration defaults to true, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, bullet points, and examples. It is somewhat lengthy but each section is informative and front-loaded with the core purpose, making it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with multiple parameters and nested queries, the description covers prerequisites, common pitfalls, integration with other tools, and provides examples. An output schema exists, so return values are not required. The description is complete and actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The description adds value by highlighting critical constraints like 'lineHint required (1-indexed)' and providing examples, enhancing understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Find all usages of a symbol' and provides examples like 'Where is X used?'. It distinguishes itself from siblings like lspCallHierarchy, which focuses on call relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit <when> section, prerequisites from localSearchCode, <fromTool> and <toTool> dependencies, and a comparison with lspCallHierarchy, providing comprehensive guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lspGotoDefinitionARead-onlyIdempotent
Navigate to symbol definition [LOCAL: LSP]
REQUIRES lineHint - call localSearchCode FIRST to get line number
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Queries for lspGotoDefinition (1-5 per call). Review schema before use. Batch independent symbol lookups. | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. The description adds behavioral details: requires lineHint (1-indexed from localSearchCode), symbolName must be exact, tool searches +/-2 lines, batching support (1-5 per call), and pagination parameters. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with markdown sections, front-loaded with purpose. Every section (when, prerequisite, fromTool, toTool, gotchas, examples) provides essential information without redundancy. Concise yet comprehensive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, return values need no explanation. The description covers prerequisites, gotchas, relationships with siblings, and examples. For a tool with complex parameter dependencies and batching, this is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so baseline is 3. The description adds value by explaining cross-tool dependencies (lineHint from localSearchCode), exactness of symbolName, and default values for orderHint/contextLines, which helps the agent construct correct parameters beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Navigate to symbol definition' with specific verb and resource. The <when> section delineates exact use cases (find definition, trace import) and the <fromTool>/<toTool> sections distinguish this from siblings like lspFindReferences and lspCallHierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit <when> and <prerequisite> sections state when to use and that lineHint from localSearchCode is required. The <toTool> section lists alternatives (e.g., lspFindReferences for usages) and <gotchas> note when to fall back to external search (packageSearch -> githubGetFileContent).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
packageSearchARead-onlyIdempotent
Find NPM/Python packages [EXTERNAL: npm/PyPI]
| Name | Required | Description | Default |
|---|---|---|---|
| queries | Yes | Research queries for packageSearch (1-3 queries per call for optimal resource management). Review schema before use for optimal results | |
| responseCharOffset | No | Character offset for top-level bulk response pagination across results[]. Use when a multi-query response was auto-paginated. | |
| responseCharLength | No | Character budget for top-level bulk response pagination across results[]. Overrides the shared default for this call. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Array of results, one per input query, discriminated by status |
| responsePagination | No | Pagination metadata for top-level bulk response pagination across results[] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds critical behavioral details: searchLimit defaults (1 for known, 5 for alternatives), Python returns only 1 result, naming conventions (dashes vs underscores), and the need to check deprecation warnings. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (titles, when, fromTool, toTool, vsGitHub, gotchas, examples). It is comprehensive without being overly verbose. Slightly more concise could be achieved, but it is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the tool (multi-parameter array, two ecosystems), the description covers all essential aspects: external APIs, behavior differences, pagination, deprecation, and integration with sibling tools. The schema and output schema handle the rest, leaving no gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed property descriptions. The description adds value through <gotchas> (e.g., Python always returns 1, naming conventions) and <examples> (concrete usage of name and ecosystem). This exceeds the baseline but not by a large margin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Title and description clearly state 'Find NPM/Python packages' and specify that it provides repository URLs. The <vsGitHub> section explicitly distinguishes from githubSearchRepositories, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The <when> section lists clear use cases: lookup by name, get repo URL, compare alternatives, check deprecation. The <fromTool> and <toTool> sections provide chaining guidance, and <vsGitHub> advises using this tool first for known names versus githubSearchRepositories for broad discovery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
13 tool updates
v9.1.1- Changed
githubGetFileContent26 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / branch / descriptionAdded value: +"Branch/tag/SHA (optional, defaults to default branch)" - added
Input schema / properties / queries / items / properties / charLength / descriptionAdded value: +"Max chars per page. Default: 20000" - added
Input schema / properties / queries / items / properties / charOffset / descriptionAdded value: +"Pagination offset. Default: 0" - added
Input schema / properties / queries / items / properties / charOffset / maximumAdded value: +9007199254740991 - added
Input schema / properties / queries / items / properties / endLine / descriptionAdded value: +"End line (with startLine). File mode only" - added
Input schema / properties / queries / items / properties / endLine / maximumAdded value: +9007199254740991 - added
Input schema / properties / queries / items / properties / forceRefreshAdded value: +{ + "default": false, + "description": "When true, bypass the cache and force a fresh fetch even if a valid cached copy exists. Only relevant for type \"directory\".", + "type": "boolean" +} - added
Input schema / properties / queries / items / properties / fullContent / descriptionAdded value: +"Return entire file (default: false). File mode only" - added
Input schema / properties / queries / items / properties / idAdded 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" +} - added
Input schema / properties / queries / items / properties / mainResearchGoal / descriptionAdded value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)" - added
Input schema / properties / queries / items / properties / matchString / descriptionAdded value: +"Search pattern to extract. File mode only" - added
Input schema / properties / queries / items / properties / matchString / maxLengthAdded value: +2000 - added
Input schema / properties / queries / items / properties / matchStringContextLines / descriptionAdded value: +"Context around matches (1-50). Default: 5" - added
Input schema / properties / queries / items / properties / owner / descriptionAdded value: +"Repo owner" - added
Input schema / properties / queries / items / properties / path / descriptionAdded value: +"File or directory path from root, no leading slash, exact case" - added
Input schema / properties / queries / items / properties / reasoning / descriptionAdded value: +"Why this query helps achieve the goal" - added
Input schema / properties / queries / items / properties / repo / descriptionAdded value: +"Repo name" - added
Input schema / properties / queries / items / properties / researchGoal / descriptionAdded value: +"Specific information this query seeks" - added
Input schema / properties / queries / items / properties / startLine / descriptionAdded value: +"Start line (with endLine). File mode only" - added
Input schema / properties / queries / items / properties / startLine / maximumAdded value: +9007199254740991 - added
Input schema / properties / queries / items / properties / typeAdded value: +{ + "default": "file", + "description": "Choose ONE: \"file\" (default) returns content inline; \"directory\" saves all files to disk and returns localPath. Directory mode requires ENABLE_LOCAL=true and ENABLE_CLONE=true, and is only available with the GitHub provider (not GitLab).", + "enum": [ + "file", + "directory" + ], + "type": "string" +} - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "mainResearchGoal", - "researchGoal", - "reasoning", - "owner", - "repo", - "path" -]New value: +[ + "id", + "mainResearchGoal", + "researchGoal", + "reasoning", + "owner", + "repo", + "path" +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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": { + "cached": { + "description": "Whether a cached fetch was reused", + "type": "boolean" + }, + "content": { + "description": "File content as text for single-file requests", + "type": "string" + }, + "endLine": { + "description": "Ending line number of the returned content", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "fileCount": { + "description": "Number of files fetched in directory mode", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "files": { + "description": "Files fetched in directory mode", + "items": { + "additionalProperties": false, + "properties": { + "path": { + "description": "Relative path within the fetched directory", + "type": "string" + }, + "size": { + "description": "File size in bytes", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "type": { + "const": "file", + "description": "Directory fetch only returns files", + "type": "string" + } + }, + "required": [ + "path", + "size", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "hints": { + "description": "Contextual hints and suggestions for next steps or better queries", + "items": { + "type": "string" + }, + "type": "array" + }, + "isPartial": { + "description": "Whether the returned file content is partial", + "type": "boolean" + }, + "lastModified": { + "description": "Last modified timestamp for the file", + "type": "string" + }, + "lastModifiedBy": { + "description": "Author of the last file modification", + "type": "string" + }, + "localPath": { + "description": "Local filesystem path for directory fetch mode", + "type": "string" + }, + "pagination": { + "additionalProperties": false, + "description": "Pagination metadata for partial file content", + "properties": { + "byteLength": { + "description": "Byte length of the current page", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "byteOffset": { + "description": "Byte offset of the current page", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "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" + }, + "totalBytes": { + "description": "Total number of bytes in the full output", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "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" + ], + "type": "object" + }, + "resolvedBranch": { + "description": "Resolved branch used to fetch the content when it adds new information beyond the input query", + "type": "string" + }, + "startLine": { + "description": "Starting line number of the returned content", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "totalSize": { + "description": "Total fetched size in bytes", + "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" +}
- Changed
githubSearchCode20 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / charLengthAdded value: +{ + "description": "Character budget for output pagination after domain pagination has been applied.", + "maximum": 50000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / charOffsetAdded value: +{ + "description": "Character offset for output pagination after domain pagination has been applied.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / extension / descriptionAdded value: +"Extension without dot (ts, js, py)" - added
Input schema / properties / queries / items / properties / filename / descriptionAdded value: +"Filename pattern (case-insensitive)" - added
Input schema / properties / queries / items / properties / idAdded 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" +} - added
Input schema / properties / queries / items / properties / keywordsToSearch / descriptionAdded value: +"Search terms (1-5, AND logic). match=file returns text_matches[]" - added
Input schema / properties / queries / items / properties / limit / descriptionAdded value: +"Max results (1-100). Default: 10" - added
Input schema / properties / queries / items / properties / mainResearchGoal / descriptionAdded value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)" - added
Input schema / properties / queries / items / properties / match / descriptionAdded value: +"\"file\" (content) | \"path\" (names). Omit for both" - added
Input schema / properties / queries / items / properties / owner / descriptionAdded value: +"Repo owner (omit for cross-repo)" - added
Input schema / properties / queries / items / properties / page / descriptionAdded value: +"Page (1-10). Default: 1" - added
Input schema / properties / queries / items / properties / path / descriptionAdded value: +"Directory path (strict prefix match)" - added
Input schema / properties / queries / items / properties / reasoning / descriptionAdded value: +"Why this query helps achieve the goal" - added
Input schema / properties / queries / items / properties / repo / descriptionAdded value: +"Repo name (use with owner)" - added
Input schema / properties / queries / items / properties / researchGoal / descriptionAdded value: +"Specific information this query seeks" - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "mainResearchGoal", - "researchGoal", - "reasoning", - "keywordsToSearch" -]New value: +[ + "id", + "mainResearchGoal", + "researchGoal", + "reasoning", + "keywordsToSearch" +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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": { + "files": { + "description": "Matching files with repository context and snippets", + "items": { + "additionalProperties": false, + "properties": { + "lastModifiedAt": { + "description": "Last modified timestamp for the file", + "type": "string" + }, + "owner": { + "description": "Repository owner", + "type": "string" + }, + "path": { + "description": "Path of the matching file in the repository", + "type": "string" + }, + "repo": { + "description": "Repository name", + "type": "string" + }, + "text_matches": { + "description": "Matched code snippets when searching file content", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": false, + "properties": { + "matchIndices": { + "description": "Character offset positions of matches within the snippet", + "items": { + "additionalProperties": false, + "properties": { + "end": { + "description": "End offset of match", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "start": { + "description": "Start offset of match", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "start", + "end" + ], + "type": "object" + }, + "type": "array" + }, + "value": { + "description": "Matched code snippet context", + "type": "string" + } + }, + "required": [ + "value" + ], + "type": "object" + } + ] + }, + "type": "array" + } + }, + "required": [ + "path" + ], + "type": "object" + }, + "type": "array" + }, + "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 result body 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" + }, + "pagination": { + "additionalProperties": false, + "description": "Pagination info for navigating through search 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" + }, + "repositoryContext": { + "additionalProperties": false, + "description": "Repository context metadata for single-repository searches", + "properties": { + "branch": { + "description": "Default branch of the repository", + "type": "string" + } + }, + "required": [ + "branch" + ], + "type": "object" + } + }, + "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" +}
- Changed
githubSearchPullRequests57 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / assignee / descriptionAdded value: +"Assigned user" - added
Input schema / properties / queries / items / properties / author / descriptionAdded value: +"PR author" - added
Input schema / properties / queries / items / properties / base / descriptionAdded value: +"Target branch" - added
Input schema / properties / queries / items / properties / charLengthAdded value: +{ + "description": "", + "maximum": 50000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / charOffsetAdded value: +{ + "description": "", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / closed / descriptionAdded value: +"Closed date: \">=YYYY-MM-DD\"" - added
Input schema / properties / queries / items / properties / commenter / descriptionAdded value: +"User who commented" - changed
Input schema / properties / queries / items / properties / comments / anyOfPrevious 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" + } +] - added
Input schema / properties / queries / items / properties / comments / descriptionAdded value: +"Comment count: \">5\", \"10..20\"" - added
Input schema / properties / queries / items / properties / created / descriptionAdded value: +"Date filter: \">=YYYY-MM-DD\" or \"YYYY-MM-DD..YYYY-MM-DD\"" - added
Input schema / properties / queries / items / properties / draft / descriptionAdded value: +"Draft status" - added
Input schema / properties / queries / items / properties / head / descriptionAdded value: +"Source branch" - added
Input schema / properties / queries / items / properties / idAdded 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" +} - changed
Input schema / properties / queries / items / properties / interactions / anyOfPrevious 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" + } +] - added
Input schema / properties / queries / items / properties / interactions / descriptionAdded value: +"Comments + reactions count" - added
Input schema / properties / queries / items / properties / involves / descriptionAdded value: +"User involved" - added
Input schema / properties / queries / items / properties / label / descriptionAdded value: +"Label filter" - added
Input schema / properties / queries / items / properties / limit / descriptionAdded value: +"Max PRs (1-10). Default: 5" - changed
Input schema / properties / queries / items / properties / limit / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / queries / items / properties / mainResearchGoal / descriptionAdded value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)" - added
Input schema / properties / queries / items / properties / match / descriptionAdded value: +"[\"title\"|\"body\"|\"comments\"]. Default: all" - added
Input schema / properties / queries / items / properties / mentions / descriptionAdded value: +"Mentions @user" - added
Input schema / properties / queries / items / properties / merged / descriptionAdded value: +"Merged status (requires state=closed)" - added
Input schema / properties / queries / items / properties / merged-at / descriptionAdded value: +"Merged date: \">=YYYY-MM-DD\"" - added
Input schema / properties / queries / items / properties / no-assignee / descriptionAdded value: +"No assignee" - added
Input schema / properties / queries / items / properties / no-label / descriptionAdded value: +"No labels" - added
Input schema / properties / queries / items / properties / no-milestone / descriptionAdded value: +"No milestone" - added
Input schema / properties / queries / items / properties / no-project / descriptionAdded value: +"Not in project" - added
Input schema / properties / queries / items / properties / order / descriptionAdded value: +"desc (default) | asc" - added
Input schema / properties / queries / items / properties / owner / descriptionAdded value: +"Repo owner" - added
Input schema / properties / queries / items / properties / page / descriptionAdded value: +"Page (1-10). Default: 1" - added
Input schema / properties / queries / items / properties / partialContentMetadata / descriptionAdded value: +"[{\"file\": \"path\"}] or [{\"file\": \"path\", \"additions\": [1,2]}]" - removed
Input schema / properties / queries / items / properties / partialContentMetadata / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / partialContentMetadata / items / properties / additions / descriptionAdded value: +"Specific addition line numbers to include from the diff" - added
Input schema / properties / queries / items / properties / partialContentMetadata / items / properties / deletions / descriptionAdded value: +"Specific deletion line numbers to include from the diff" - added
Input schema / properties / queries / items / properties / partialContentMetadata / items / properties / file / descriptionAdded value: +"File path within the PR diff to fetch partial content for" - added
Input schema / properties / queries / items / properties / prNumber / descriptionAdded value: +"Direct PR number (ignores other filters)" - added
Input schema / properties / queries / items / properties / prNumber / maximumAdded value: +9007199254740991 - added
Input schema / properties / queries / items / properties / query / descriptionAdded value: +"Search across title, body, comments (max 256 chars)" - changed
Input schema / properties / queries / items / properties / reactions / anyOfPrevious 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" + } +] - added
Input schema / properties / queries / items / properties / reactions / descriptionAdded value: +"Reaction count filter" - added
Input schema / properties / queries / items / properties / reasoning / descriptionAdded value: +"Why this query helps achieve the goal" - added
Input schema / properties / queries / items / properties / repo / descriptionAdded value: +"Repo name" - added
Input schema / properties / queries / items / properties / researchGoal / descriptionAdded value: +"Specific information this query seeks" - added
Input schema / properties / queries / items / properties / review-requested / descriptionAdded value: +"Requested reviewer" - added
Input schema / properties / queries / items / properties / reviewed-by / descriptionAdded value: +"Reviewer" - added
Input schema / properties / queries / items / properties / sort / descriptionAdded value: +"created | updated | best-match" - added
Input schema / properties / queries / items / properties / state / descriptionAdded value: +"\"open\" or \"closed\"" - added
Input schema / properties / queries / items / properties / type / descriptionAdded value: +"metadata | fullContent | partialContent. Default: metadata" - added
Input schema / properties / queries / items / properties / updated / descriptionAdded value: +"Last update: \">=YYYY-MM-DD\"" - added
Input schema / properties / queries / items / properties / withComments / descriptionAdded value: +"Include discussions (token expensive)" - added
Input schema / properties / queries / items / properties / withCommits / descriptionAdded value: +"Include commit details" - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "mainResearchGoal", - "researchGoal", - "reasoning" -]New value: +[ + "id", + "mainResearchGoal", + "researchGoal", + "reasoning" +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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" +}
- Changed
githubSearchRepositories22 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / charLengthAdded value: +{ + "description": "Character budget for output pagination after domain pagination has been applied.", + "maximum": 50000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / charOffsetAdded value: +{ + "description": "Character offset for output pagination after domain pagination has been applied.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / created / descriptionAdded value: +"Date: \">=YYYY-MM-DD\" or \"YYYY-MM-DD..YYYY-MM-DD\"" - added
Input schema / properties / queries / items / properties / idAdded 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" +} - added
Input schema / properties / queries / items / properties / keywordsToSearch / descriptionAdded value: +"Keywords (AND logic) across name, description, README" - added
Input schema / properties / queries / items / properties / limit / descriptionAdded value: +"Max repos (1-100). Default: 10" - added
Input schema / properties / queries / items / properties / mainResearchGoal / descriptionAdded value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)" - added
Input schema / properties / queries / items / properties / match / descriptionAdded value: +"[\"name\"|\"description\"|\"readme\"]. Very restrictive" - added
Input schema / properties / queries / items / properties / owner / descriptionAdded value: +"Repo owner/org to scope results" - added
Input schema / properties / queries / items / properties / page / descriptionAdded value: +"Page (1-10). Default: 1" - added
Input schema / properties / queries / items / properties / reasoning / descriptionAdded value: +"Why this query helps achieve the goal" - added
Input schema / properties / queries / items / properties / researchGoal / descriptionAdded value: +"Specific information this query seeks" - added
Input schema / properties / queries / items / properties / size / descriptionAdded value: +"Repo size in KB with operators" - added
Input schema / properties / queries / items / properties / sort / descriptionAdded value: +"stars | forks | updated | best-match" - added
Input schema / properties / queries / items / properties / stars / descriptionAdded value: +"Stars filter: \">500\", \"100..500\"" - added
Input schema / properties / queries / items / properties / topicsToSearch / descriptionAdded value: +"GitHub topic tags" - added
Input schema / properties / queries / items / properties / updated / descriptionAdded value: +"Last metadata update (not code pushes)" - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "mainResearchGoal", - "researchGoal", - "reasoning" -]New value: +[ + "id", + "mainResearchGoal", + "researchGoal", + "reasoning" +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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 result body 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" + }, + "pagination": { + "additionalProperties": false, + "description": "Pagination info for navigating through repository 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" + }, + "repositories": { + "description": "Matching repositories", + "items": { + "additionalProperties": false, + "properties": { + "createdAt": { + "description": "Creation timestamp", + "type": "string" + }, + "defaultBranch": { + "description": "Default branch of the repository", + "type": "string" + }, + "description": { + "description": "Repository description", + "type": "string" + }, + "forksCount": { + "description": "Fork count", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "language": { + "description": "Primary programming language of the repository", + "type": "string" + }, + "openIssuesCount": { + "description": "Open issues count", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "owner": { + "description": "Repository owner", + "type": "string" + }, + "pushedAt": { + "description": "Last push timestamp", + "type": "string" + }, + "repo": { + "description": "Repository name", + "type": "string" + }, + "stars": { + "description": "Star count", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "topics": { + "description": "Repository topics", + "items": { + "type": "string" + }, + "type": "array" + }, + "updatedAt": { + "description": "Last update timestamp", + "type": "string" + }, + "url": { + "description": "Web URL for the repository", + "type": "string" + }, + "visibility": { + "description": "Repository visibility", + "enum": [ + "public", + "private", + "internal" + ], + "type": "string" + } + }, + "required": [ + "owner", + "repo", + "stars", + "description", + "url", + "createdAt", + "updatedAt", + "pushedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "repositories" + ], + "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" +}
- Changed
githubViewRepoStructure22 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / queries / items / properties / branch / descriptionAdded value: +"Branch/tag/SHA (optional, defaults to default branch). Use main/master or get from githubSearchRepositories" - added
Input schema / properties / queries / items / properties / charLengthAdded value: +{ + "description": "Character budget for output pagination after entry pagination has been applied.", + "maximum": 50000, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / charOffsetAdded value: +{ + "description": "Character offset for output pagination after entry pagination has been applied.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / depth / descriptionAdded value: +"1 (current) or 2 (subdirs). Default: 1" - changed
Input schema / properties / queries / items / properties / depth / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / queries / items / properties / entriesPerPage / descriptionAdded value: +"Entries per page (default: 50, max: 200)" - changed
Input schema / properties / queries / items / properties / entriesPerPage / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / queries / items / properties / entryPageNumber / descriptionAdded value: +"Page number (1-based). Default: 1" - added
Input schema / properties / queries / items / properties / entryPageNumber / maximumAdded value: +9007199254740991 - changed
Input schema / properties / queries / items / properties / entryPageNumber / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / queries / items / properties / idAdded 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" +} - added
Input schema / properties / queries / items / properties / mainResearchGoal / descriptionAdded value: +"Main research objective (multiple queries can share the same main goal for semantic grouping and session tracking)" - added
Input schema / properties / queries / items / properties / owner / descriptionAdded value: +"Repo owner" - added
Input schema / properties / queries / items / properties / path / descriptionAdded value: +"Directory path (empty for root)" - added
Input schema / properties / queries / items / properties / reasoning / descriptionAdded value: +"Why this query helps achieve the goal" - added
Input schema / properties / queries / items / properties / repo / descriptionAdded value: +"Repo name" - added
Input schema / properties / queries / items / properties / researchGoal / descriptionAdded value: +"Specific information this query seeks" - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "mainResearchGoal", - "researchGoal", - "reasoning", - "owner", - "repo", - "branch" -]New value: +[ + "id", + "mainResearchGoal", + "researchGoal", + "reasoning", + "owner", + "repo" +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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": { + "branchFallback": { + "additionalProperties": false, + "description": "Branch fallback details when the requested branch was not used", + "properties": { + "actualBranch": { + "description": "Branch actually used in the result", + "type": "string" + }, + "defaultBranch": { + "description": "Repository default branch when known", + "type": "string" + }, + "requestedBranch": { + "description": "Branch requested in the query", + "type": "string" + }, + "warning": { + "description": "Human-readable explanation of the branch fallback", + "type": "string" + } + }, + "required": [ + "requestedBranch", + "actualBranch", + "warning" + ], + "type": "object" + }, + "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 structure payload 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" + }, + "pagination": { + "additionalProperties": false, + "description": "Pagination info for large directory listings", + "properties": { + "currentPage": { + "description": "Current page number (1-indexed)", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "entriesPerPage": { + "description": "Directory entries returned per page", + "exclusiveMinimum": 0, + "maximum": 9007199254740991, + "type": "integer" + }, + "hasMore": { + "description": "Whether more pages are available after the current page", + "type": "boolean" + }, + "totalEntries": { + "description": "Total matching entries 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", + "entriesPerPage", + "totalEntries" + ], + "type": "object" + }, + "resolvedBranch": { + "description": "Resolved branch used when the input query omitted a branch", + "type": "string" + }, + "structure": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "files": { + "description": "File names in the directory", + "items": { + "type": "string" + }, + "type": "array" + }, + "folders": { + "description": "Subdirectory names in the directory", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "files", + "folders" + ], + "type": "object" + }, + "description": "Directory structure grouped by relative path", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "summary": { + "additionalProperties": false, + "description": "Summary statistics for the returned repository structure", + "properties": { + "totalFiles": { + "description": "Total files included in the structure result", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "totalFolders": { + "description": "Total folders included in the structure result", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "truncated": { + "description": "Whether the provider truncated the structure result", + "type": "boolean" + } + }, + "required": [ + "totalFiles", + "totalFolders", + "truncated" + ], + "type": "object" + } + }, + "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" +}
- Added
localFindFiles - Added
localGetFileContent - Added
localSearchCode - Added
localViewStructure - Added
lspCallHierarchy - Added
lspFindReferences - Added
lspGotoDefinition - Changed
packageSearch4 fields changed- changed
Input schema / properties / queries / items / anyOfPrevious 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" + } +] - added
Input schema / properties / responseCharLengthAdded 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" +} - added
Input schema / properties / responseCharOffsetAdded 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" +} - changed
Output 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" +}
10 tool updates
v1.0.0- Removed
apiStatusCheck - Changed
githubGetFileContent27 fields changed- changed
Input schema / properties / queries / descriptionPrevious value: -"Array of up to 5 different file fetch queries for parallel execution"New value: +"Research queries for githubGetFileContent (1-3 queries per call for optimal resource management). Review schema before use for optimal results" - removed
Input schema / properties / queries / items / properties / branch / descriptionRemoved value: -"Branch name, tag name, OR commit SHA. Tool will automatically try 'main' and 'master' if specified branch is not found." - removed
Input schema / properties / queries / items / properties / branch / patternRemoved value: -"^[^\\s]+$" - added
Input schema / properties / queries / items / properties / charLengthAdded value: +{ + "maximum": 50000, + "minimum": 50, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / charOffsetAdded value: +{ + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / queries / items / properties / contextLinesRemoved value: -{ - "default": 5, - "description": "Context lines around target range. Default: 5.", - "maximum": 50, - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / queries / items / properties / endLine / descriptionRemoved value: -"Ending line number (1-based) for partial file access. Use with startLine to fetch only specific sections and save tokens." - removed
Input schema / properties / queries / items / properties / fallbackParamsRemoved value: -{ - "additionalProperties": false, - "description": "Fallback parameters if original query returns no results", - "properties": { - "branch": { - "type": "string" - }, - "contextLines": { - "maximum": 50, - "minimum": 0, - "type": "integer" - }, - "endLine": { - "minimum": 1, - "type": "integer" - }, - "filePath": { - "type": "string" - }, - "minified": { - "type": "boolean" - }, - "startLine": { - "minimum": 1, - "type": "integer" - } - }, - "type": "object" -} - removed
Input schema / properties / queries / items / properties / filePathRemoved value: -{ - "description": "File path from repository root (e.g., 'src/index.js', 'README.md', 'docs/api.md'). Do NOT start with slash.", - "minLength": 1, - "type": "string" -} - added
Input schema / properties / queries / items / properties / fullContentAdded value: +{ + "default": false, + "type": "boolean" +} - removed
Input schema / properties / queries / items / properties / idRemoved value: -{ - "description": "Optional identifier for the query", - "type": "string" -} - added
Input schema / properties / queries / items / properties / mainResearchGoalAdded value: +{ + "type": "string" +} - added
Input schema / properties / queries / items / properties / matchStringAdded value: +{ + "type": "string" +} - added
Input schema / properties / queries / items / properties / matchStringContextLinesAdded value: +{ + "default": 5, + "maximum": 50, + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / queries / items / properties / minifiedRemoved value: -{ - "default": true, - "description": "Optimize content for token efficiency (enabled by default). Removes excessive whitespace and comments. Set to false only when exact formatting is required.", - "type": "boolean" -} - removed
Input schema / properties / queries / items / properties / owner / descriptionRemoved value: -"Repository owner/organization name (e.g., 'facebook', 'microsoft'). Do NOT include repository name here." - changed
Input schema / properties / queries / items / properties / owner / maxLengthPrevious value: -100New value: +200 - removed
Input schema / properties / queries / items / properties / owner / patternRemoved value: -"^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$" - added
Input schema / properties / queries / items / properties / pathAdded value: +{ + "type": "string" +} - added
Input schema / properties / queries / items / properties / reasoningAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / repo / descriptionRemoved value: -"Repository name only (e.g., 'react', 'vscode'). Do NOT include owner/org prefix." - changed
Input schema / properties / queries / items / properties / repo / maxLengthPrevious value: -100New value: +150 - removed
Input schema / properties / queries / items / properties / repo / patternRemoved value: -"^[a-zA-Z0-9._-]+$" - added
Input schema / properties / queries / items / properties / researchGoalAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / startLine / descriptionRemoved value: -"Starting line number (1-based) for partial file access. STRONGLY RECOMMENDED to save tokens instead of fetching full file content." - changed
Input schema / properties / queries / items / requiredPrevious value: -[ - "owner", - "repo", - "branch", - "filePath" -]New value: +[ + "mainResearchGoal", + "researchGoal", + "reasoning", + "owner", + "repo", + "path" +] - changed
Input schema / properties / queries / maxItemsPrevious value: -5New value: +3
- Changed
githubSearchCode27 fields changed- changed
Input schema / properties / queries / descriptionPrevious value: -"Array of up to 5 different search queries for parallel execution"New value: +"Research queries for githubSearchCode (1-3 queries per call for optimal resource management). Review schema before use for optimal results" - removed
Input schema / properties / queries / items / properties / extension / descriptionRemoved value: -"File extension filter" - removed
Input schema / properties / queries / items / properties / filename / descriptionRemoved value: -"Target specific filename or pattern" - removed
Input schema / properties / queries / items / properties / idRemoved value: -{ - "description": "Optional identifier for the query", - "type": "string" -} - added
Input schema / properties / queries / items / properties / keywordsToSearchAdded value: +{ + "items": { + "type": "string" + }, + "maxItems": 5, + "minItems": 1, + "type": "array" +} - removed
Input schema / properties / queries / items / properties / languageRemoved value: -{ - "description": "Programming language filter", - "type": "string" -} - added
Input schema / properties / queries / items / properties / limit / defaultAdded value: +10 - removed
Input schema / properties / queries / items / properties / limit / descriptionRemoved value: -"Maximum results per query (1-100)" - added
Input schema / properties / queries / items / properties / mainResearchGoalAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / match / descriptionRemoved value: -"Search scope: file (content) or path (filenames)" - removed
Input schema / properties / queries / items / properties / minifyRemoved value: -{ - "default": true, - "description": "Optimize content for token efficiency (enabled by default). Removes excessive whitespace and comments. Set to false only when exact formatting is required.", - "type": "boolean" -} - removed
Input schema / properties / queries / items / properties / owner / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - removed
Input schema / properties / queries / items / properties / owner / descriptionRemoved value: -"Repository owner/organization name" - added
Input schema / properties / queries / items / properties / owner / typeAdded value: +"string" - added
Input schema / properties / queries / items / properties / pageAdded value: +{ + "default": 1, + "maximum": 10, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / queries / items / properties / pathAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / queryTermsRemoved value: -{ - "description": "Search terms with AND logic - ALL terms must be present in same file. Use sparingly: single terms get broader results, multiple terms are restrictive.", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / queries / items / properties / reasoningAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / repo / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } -] - removed
Input schema / properties / queries / items / properties / repo / descriptionRemoved value: -"Repository name (use with owner for specific repo)" - added
Input schema / properties / queries / items / properties / repo / typeAdded value: +"string" - added
Input schema / properties / queries / items / properties / researchGoalAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / sanitizeRemoved value: -{ - "default": true, - "description": "Sanitize content for security (enabled by default). Removes potential secrets and malicious content. Set to false only when raw content is required.", - "type": "boolean" -} - removed
Input schema / properties / queries / items / properties / sizeRemoved value: -{ - "description": "File size filter in KB", - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" -} - removed
Input schema / properties / queries / items / properties / visibilityRemoved value: -{ - "description": "Repository visibility", - "enum": [ - "public", - "private", - "internal" - ], - "type": "string" -} - added
Input schema / properties / queries / items / requiredAdded value: +[ + "mainResearchGoal", + "researchGoal", + "reasoning", + "keywordsToSearch" +] - changed
Input schema / properties / queries / maxItemsPrevious value: -5New value: +3
- Removed
githubSearchCommits - Removed
githubSearchIssues - Changed
githubSearchPullRequests44 fields changed- removed
Input schema / properties / appRemoved value: -{ - "description": "Filter by GitHub App author", - "type": "string" -} - removed
Input schema / properties / archivedRemoved value: -{ - "description": "Filter by repository archived state", - "type": "boolean" -} - removed
Input schema / properties / assigneeRemoved value: -{ - "description": "GitHub username of assignee", - "type": "string" -} - removed
Input schema / properties / authorRemoved value: -{ - "description": "GitHub username of PR author", - "type": "string" -} - removed
Input schema / properties / baseRemoved value: -{ - "description": "Filter on base branch name", - "type": "string" -} - removed
Input schema / properties / checksRemoved value: -{ - "description": "Filter by checks status", - "enum": [ - "pending", - "success", - "failure" - ], - "type": "string" -} - removed
Input schema / properties / closedRemoved value: -{ - "description": "Filter by closed date (e.g., >2020-01-01)", - "type": "string" -} - removed
Input schema / properties / commenterRemoved value: -{ - "description": "User who commented on PR", - "type": "string" -} - removed
Input schema / properties / commentsRemoved 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" -} - removed
Input schema / properties / createdRemoved value: -{ - "description": "Filter by created date (e.g., >2020-01-01)", - "type": "string" -} - removed
Input schema / properties / draftRemoved value: -{ - "description": "Filter by draft state", - "type": "boolean" -} - removed
Input schema / properties / getCommitDataRemoved 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" -} - removed
Input schema / properties / headRemoved value: -{ - "description": "Filter on head branch name", - "type": "string" -} - removed
Input schema / properties / interactionsRemoved value: -{ - "description": "Total interactions (reactions + comments)", - "type": "number" -} - removed
Input schema / properties / involvesRemoved value: -{ - "description": "User involved in any way", - "type": "string" -} - removed
Input schema / properties / labelRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Filter by label" -} - removed
Input schema / properties / languageRemoved value: -{ - "description": "Repository language", - "type": "string" -} - removed
Input schema / properties / limitRemoved value: -{ - "default": 30, - "description": "Maximum number of results to fetch", - "maximum": 100, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / lockedRemoved value: -{ - "description": "Filter by locked conversation status", - "type": "boolean" -} - removed
Input schema / properties / matchRemoved value: -{ - "description": "Restrict search to specific fields", - "items": { - "enum": [ - "title", - "body", - "comments" - ], - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / mentionsRemoved value: -{ - "description": "PRs mentioning this user", - "type": "string" -} - removed
Input schema / properties / mergedRemoved value: -{ - "description": "Filter by merged state", - "type": "boolean" -} - removed
Input schema / properties / merged-atRemoved value: -{ - "description": "Filter by merged date (e.g., >2020-01-01)", - "type": "string" -} - removed
Input schema / properties / milestoneRemoved value: -{ - "description": "Milestone title", - "type": "string" -} - removed
Input schema / properties / no-assigneeRemoved value: -{ - "description": "Filter by missing assignee", - "type": "boolean" -} - removed
Input schema / properties / no-labelRemoved value: -{ - "description": "Filter by missing label", - "type": "boolean" -} - removed
Input schema / properties / no-milestoneRemoved value: -{ - "description": "Filter by missing milestone", - "type": "boolean" -} - removed
Input schema / properties / no-projectRemoved value: -{ - "description": "Filter by missing project", - "type": "boolean" -} - removed
Input schema / properties / orderRemoved value: -{ - "default": "desc", - "description": "Order of results (requires --sort)", - "enum": [ - "asc", - "desc" - ], - "type": "string" -} - removed
Input schema / properties / ownerRemoved value: -{ - "description": "Repository owner (use with repo param)", - "type": "string" -} - removed
Input schema / properties / projectRemoved value: -{ - "description": "Project board owner/number", - "type": "string" -} - added
Input schema / properties / queriesAdded 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" +} - removed
Input schema / properties / queryRemoved value: -{ - "description": "Search query for PR content (keep minimal for broader results)", - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / reactionsRemoved value: -{ - "description": "Filter by number of reactions", - "type": "number" -} - removed
Input schema / properties / repoRemoved value: -{ - "description": "Repository name (use with owner param)", - "type": "string" -} - removed
Input schema / properties / reviewRemoved value: -{ - "description": "Filter by review status", - "enum": [ - "none", - "required", - "approved", - "changes_requested" - ], - "type": "string" -} - removed
Input schema / properties / review-requestedRemoved value: -{ - "description": "User/team requested for review", - "type": "string" -} - removed
Input schema / properties / reviewed-byRemoved value: -{ - "description": "User who reviewed the PR", - "type": "string" -} - removed
Input schema / properties / sortRemoved 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" -} - removed
Input schema / properties / stateRemoved value: -{ - "description": "Filter by state: open or closed", - "enum": [ - "open", - "closed" - ], - "type": "string" -} - removed
Input schema / properties / team-mentionsRemoved value: -{ - "description": "Filter by team mentions", - "type": "string" -} - removed
Input schema / properties / updatedRemoved value: -{ - "description": "Filter by updated date (e.g., >2020-01-01)", - "type": "string" -} - removed
Input schema / properties / visibilityRemoved value: -{ - "description": "Repository visibility", - "enum": [ - "public", - "private", - "internal" - ], - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "query" -]New value: +[ + "queries" +]
- Changed
githubSearchRepositories54 fields changed- changed
Input schema / properties / queries / descriptionPrevious value: -"Array of up to 5 different search queries for parallel execution"New value: +"Research queries for githubSearchRepositories (1-3 queries per call for optimal resource management). Review schema before use for optimal results" - removed
Input schema / properties / queries / items / properties / archivedRemoved value: -{ - "description": "Archive status filter. false (active repos only), true (archived repos only).", - "type": [ - "boolean", - "null" - ] -} - removed
Input schema / properties / queries / items / properties / created / anyOfRemoved value: -[ - { - "pattern": "^(>=?\\d{4}-\\d{2}-\\d{2}|<=?\\d{4}-\\d{2}-\\d{2}|\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}|\\d{4}-\\d{2}-\\d{2})$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / created / descriptionRemoved value: -"Repository creation date filter. Format: \">2020-01-01\" (after), \">=2020-01-01\" (on or after), \"<2023-12-31\" (before), \"<=2023-12-31\" (on or before), \"2020-01-01..2023-12-31\" (range), \"2023-01-01\" (exact)." - added
Input schema / properties / queries / items / properties / created / typeAdded value: +"string" - removed
Input schema / properties / queries / items / properties / exactQueryRemoved value: -{ - "description": "Single exact phrase/word search", - "type": "string" -} - removed
Input schema / properties / queries / items / properties / fallbackParamsRemoved value: -{ - "additionalProperties": {}, - "description": "Fallback parameters if original query returns no results, overrides the original query and try again", - "type": "object" -} - removed
Input schema / properties / queries / items / properties / followersRemoved value: -{ - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Repository owner followers count. Format: \">1000\" (popular developers), \">=500\" (established developers), \"<100\" (smaller developers), \"100..1000\" (range)." -} - removed
Input schema / properties / queries / items / properties / forksRemoved value: -{ - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Fork count filter. Format: \">N\" (more than), \"<N\" (less than), \"N..M\" (range)." -} - removed
Input schema / properties / queries / items / properties / good-first-issuesRemoved value: -{ - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Good first issues count. Format: \">5\" (many beginner issues), \"1..10\" (some beginner issues)." -} - removed
Input schema / properties / queries / items / properties / help-wanted-issuesRemoved value: -{ - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Help wanted issues count. Format: \">10\" (many help wanted), \"1..5\" (some help wanted)." -} - removed
Input schema / properties / queries / items / properties / idRemoved value: -{ - "description": "Optional identifier for the query", - "type": "string" -} - removed
Input schema / properties / queries / items / properties / include-forksRemoved value: -{ - "anyOf": [ - { - "enum": [ - "false", - "true", - "only" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Fork inclusion. \"false\" (exclude forks), \"true\" (include forks), \"only\" (forks only)." -} - added
Input schema / properties / queries / items / properties / keywordsToSearchAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / queries / items / properties / languageRemoved value: -{ - "description": "Programming language filter. Filters repositories by primary language.", - "type": [ - "string", - "null" - ] -} - removed
Input schema / properties / queries / items / properties / licenseRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "License filter. Filter repositories by license type." -} - removed
Input schema / properties / queries / items / properties / limit / anyOfRemoved value: -[ - { - "maximum": 100, - "minimum": 1, - "type": "integer" - }, - { - "type": "null" - } -] - added
Input schema / properties / queries / items / properties / limit / defaultAdded value: +10 - removed
Input schema / properties / queries / items / properties / limit / descriptionRemoved value: -"Maximum number of repositories to return (1-100)." - added
Input schema / properties / queries / items / properties / limit / maximumAdded value: +100 - added
Input schema / properties / queries / items / properties / limit / minimumAdded value: +1 - added
Input schema / properties / queries / items / properties / limit / typeAdded value: +"integer" - added
Input schema / properties / queries / items / properties / mainResearchGoalAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / match / anyOfRemoved value: -[ - { - "enum": [ - "name", - "description", - "readme" - ], - "type": "string" - }, - { - "items": { - "enum": [ - "name", - "description", - "readme" - ], - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / match / descriptionRemoved value: -"Search scope. Where to search: name, description, or readme content." - added
Input schema / properties / queries / items / properties / match / itemsAdded value: +{ + "enum": [ + "name", + "description", + "readme" + ], + "type": "string" +} - added
Input schema / properties / queries / items / properties / match / typeAdded value: +"array" - removed
Input schema / properties / queries / items / properties / number-topicsRemoved value: -{ - "anyOf": [ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Number of topics filter. Format: \">5\" (many topics), \">=3\" (at least 3), \"<10\" (few topics), \"1..3\" (range), \"5\" (exact)." -} - removed
Input schema / properties / queries / items / properties / orderRemoved value: -{ - "anyOf": [ - { - "enum": [ - "asc", - "desc" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Sort order direction." -} - removed
Input schema / properties / queries / items / properties / owner / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / owner / descriptionRemoved value: -"Repository owner/organization name(s). Search within specific organizations or users." - added
Input schema / properties / queries / items / properties / owner / typeAdded value: +"string" - added
Input schema / properties / queries / items / properties / pageAdded value: +{ + "default": 1, + "maximum": 10, + "minimum": 1, + "type": "integer" +} - removed
Input schema / properties / queries / items / properties / queryTermsRemoved value: -{ - "description": "Multiple search terms for broader coverage", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / queries / items / properties / reasoningAdded value: +{ + "type": "string" +} - added
Input schema / properties / queries / items / properties / researchGoalAdded value: +{ + "type": "string" +} - removed
Input schema / properties / queries / items / properties / size / anyOfRemoved value: -[ - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / size / descriptionRemoved value: -"Repository size filter in KB. Format: \">1000\" (large projects), \">=500\" (medium-large), \"<100\" (small projects), \"<=50\" (tiny), \"100..1000\" (medium range), \"500\" (exact)." - added
Input schema / properties / queries / items / properties / size / typeAdded value: +"string" - removed
Input schema / properties / queries / items / properties / sort / anyOfRemoved value: -[ - { - "enum": [ - "forks", - "help-wanted-issues", - "stars", - "updated", - "best-match" - ], - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / sort / descriptionRemoved value: -"Sort criteria." - added
Input schema / properties / queries / items / properties / sort / enumAdded value: +[ + "forks", + "stars", + "updated", + "best-match" +] - added
Input schema / properties / queries / items / properties / sort / typeAdded value: +"string" - removed
Input schema / properties / queries / items / properties / stars / anyOfRemoved value: -[ - { - "minimum": 0, - "type": "integer" - }, - { - "pattern": "^(>=?\\d+|<=?\\d+|\\d+\\.\\.\\d+|\\d+)$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / stars / descriptionRemoved value: -"Star count filter. Format: \">N\" (more than), \"<N\" (less than), \"N..M\" (range)." - added
Input schema / properties / queries / items / properties / stars / typeAdded value: +"string" - removed
Input schema / properties / queries / items / properties / topicRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "description": "Find repositories by technology/subject" -} - added
Input schema / properties / queries / items / properties / topicsToSearchAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / queries / items / properties / updated / anyOfRemoved value: -[ - { - "pattern": "^(>=?\\d{4}-\\d{2}-\\d{2}|<=?\\d{4}-\\d{2}-\\d{2}|\\d{4}-\\d{2}-\\d{2}\\.\\.\\d{4}-\\d{2}-\\d{2}|\\d{4}-\\d{2}-\\d{2})$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / queries / items / properties / updated / descriptionRemoved value: -"Last updated date filter. Format: \">2024-01-01\" (recently updated), \">=2024-01-01\" (on or after), \"<2022-01-01\" (not recently updated), \"2023-01-01..2024-12-31\" (range)." - added
Input schema / properties / queries / items / properties / updated / typeAdded value: +"string" - removed
Input schema / properties / queries / items / properties / visibilityRemoved value: -{ - "anyOf": [ - { - "enum": [ - "public", - "private", - "internal" - ], - "type": "string" - }, - { - "type": "null" - } - ], - "description": "Repository visibility." -} - added
Input schema / properties / queries / items / requiredAdded value: +[ + "mainResearchGoal", + "researchGoal", + "reasoning" +] - changed
Input schema / properties / queries / maxItemsPrevious value: -5New value: +3
- Changed
githubViewRepoStructure9 fields changed- removed
Input schema / properties / branchRemoved value: -{ - "description": "Branch name. Default branch varies between repositories. Tool will automatically try default branch if specified branch is not found, but it is more efficient to verify the correct branch first.", - "maxLength": 255, - "minLength": 1, - "pattern": "^[^\\s]+$", - "type": "string" -} - removed
Input schema / properties / depthRemoved value: -{ - "default": 2, - "description": "Depth of directory structure to explore. Default is 2. Maximum is 4 to prevent excessive API calls and maintain performance.", - "maximum": 4, - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / includeIgnoredRemoved value: -{ - "default": false, - "description": "If true, shows all files and folders including configuration files, lock files, hidden directories, etc. Default is false to show only relevant code files and directories. for optimization", - "type": "boolean" -} - removed
Input schema / properties / ownerRemoved value: -{ - "description": "Repository owner/organization name (e.g., \"facebook\", \"microsoft\"). Do NOT include repository name.", - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$", - "type": "string" -} - removed
Input schema / properties / pathRemoved value: -{ - "default": "", - "description": "Directory path within repository. Start with empty path to see actual repository structure first. Do not assume repository structure or nested paths exist. Do not start with slash. Verify path exists before using specific directories.", - "type": "string" -} - added
Input schema / properties / queriesAdded value: +{ + "description": "Research queries for githubViewRepoStructure (1-3 queries per call for optimal resource management). Review schema before use for optimal results", + "items": { + "additionalProperties": false, + "properties": { + "branch": { + "maxLength": 255, + "minLength": 1, + "type": "string" + }, + "depth": { + "default": 1, + "maximum": 2, + "minimum": 1, + "type": "number" + }, + "entriesPerPage": { + "default": 50, + "maximum": 200, + "minimum": 1, + "type": "number" + }, + "entryPageNumber": { + "default": 1, + "minimum": 1, + "type": "number" + }, + "mainResearchGoal": { + "type": "string" + }, + "owner": { + "maxLength": 200, + "minLength": 1, + "type": "string" + }, + "path": { + "default": "", + "type": "string" + }, + "reasoning": { + "type": "string" + }, + "repo": { + "maxLength": 150, + "minLength": 1, + "type": "string" + }, + "researchGoal": { + "type": "string" + } + }, + "required": [ + "mainResearchGoal", + "researchGoal", + "reasoning", + "owner", + "repo", + "branch" + ], + "type": "object" + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - removed
Input schema / properties / repoRemoved value: -{ - "description": "Repository name under a organization. ", - "maxLength": 100, - "minLength": 1, - "pattern": "^[a-zA-Z0-9._-]+$", - "type": "string" -} - removed
Input schema / properties / showMediaRemoved value: -{ - "default": false, - "description": "If true, shows media files (images, videos, audio, documents). Default is false to hide media files and focus on code structure.", - "type": "boolean" -} - changed
Input schema / requiredPrevious value: -[ - "owner", - "repo", - "branch" -]New value: +[ + "queries" +]
- Removed
npmViewPackage - Changed
packageSearch7 fields changed- removed
Input schema / properties / npmPackageNameRemoved value: -{ - "description": "NPM package name to search for. Use this for searching NPM packages.", - "type": "string" -} - removed
Input schema / properties / npmPackagesNamesRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "items": { - "type": "string" - }, - "type": "array" - } - ], - "description": "Search terms for NPM packages only - supports multiple queries (e.g., \"react hooks\", [\"typescript\", \"eslint\"], \"data visualization\"). Optional when using other parameters." -} - removed
Input schema / properties / npmSearchStrategyRemoved value: -{ - "default": "individual", - "description": "NPM search strategy: \"individual\" runs separate searches for each term, \"combined\" searches all terms together. Default: individual", - "enum": [ - "individual", - "combined" - ], - "type": "string" -} - removed
Input schema / properties / pythonPackageNameRemoved value: -{ - "description": "Python package name to search for. Use this for searching Python packages on PyPI.", - "type": "string" -} - added
Input schema / properties / queriesAdded value: +{ + "description": "Research queries for packageSearch (1-3 queries per call for optimal resource management). Review schema before use for optimal results", + "items": { + "anyOf": [ + { + "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" + } + ] + }, + "maxItems": 3, + "minItems": 1, + "type": "array" +} - removed
Input schema / properties / searchLimitRemoved value: -{ - "default": 20, - "description": "Results limit per query (1-50). Default: 20", - "maximum": 50, - "minimum": 1, - "type": "integer" -} - added
Input schema / requiredAdded value: +[ + "queries" +]
10 tool updates
- First observed
apiStatusCheck - First observed
githubGetFileContent - First observed
githubSearchCode - First observed
githubSearchCommits - First observed
githubSearchIssues - First observed
githubSearchPullRequests - First observed
githubSearchRepositories - First observed
githubViewRepoStructure - First observed
npmViewPackage - First observed
packageSearch
TDQS
Each tool targets a distinct operation: GitHub tools for remote repo actions (get file, search code, search PRs, search repos, view structure), local tools for filesystem actions (find files, get file content, search code, view structure), LSP tools for semantic analysis (goto definition, find references, call hierarchy), and a separate package search tool. There is no overlap in purpose.
All tool names follow a consistent camelCase pattern with a prefix indicating domain (github, local, lsp) followed by a verb-noun combination (e.g., githubGetFileContent, localSearchCode, lspGotoDefinition). The naming is predictable and intuitive.
13 tools is well-scoped for a server that combines GitHub API exploration (5 tools), local filesystem analysis (4 tools), LSP-based code navigation (3 tools), and package search (1 tool). Each tool serves a clear purpose and contributes to the overall functionality without bloat.
The tool set covers the complete lifecycle for code exploration and analysis: discovery (search repos, view structure, find files), content access (get file content, search code), semantic navigation (goto definition, find references, call hierarchy), and package lookup. There are no obvious gaps for the server's stated purpose.
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Provide AI-powered real-time analysis and intelligence on NPM packages, including security, depend…
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Related MCP Servers
- AlicenseCqualityDmaintenanceA free, open-source service that transforms GitHub projects into MCP endpoints, enabling AI assistants to access and understand project documentation without any setup.32988,364Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across multiple repositories using natural language queries. Provides intelligent code discovery, symbol lookups, and cross-repo dependency analysis for AI coding agents.MIT
- AlicenseAqualityFmaintenanceProvides code repository indexing and semantic search capabilities, allowing natural language queries to find relevant code snippets with automatic incremental indexing and multi-language support.119360ISC
- AlicenseAqualityAmaintenanceA local-first codebase intelligence tool that enables AI assistants to research codebases using semantic search, multi-hop relationship discovery, and structural parsing. It allows users to extract architectural patterns and institutional knowledge across 30+ programming languages through an MCP-compatible interface.21,428MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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