Code search, package analysis, documentation, vulnerability scanning across 14+ sources with embedding dedup and reranking
CodeSearch has 28 tools with schemas and descriptions present, but quality is inconsistent. Most tools have adequate naming (verb_noun pattern) and descriptions (50-300 chars), but parameter documentation is sparse. Many parameters lack descriptions entirely (e.g., 'limit', 'offset', 'query' in several tools have no guidance on valid ranges or formats). Output schemas are not documented, LLMs cannot predict what fields to expect. Error handling is absent from descriptions. Tools like 'enrich' and 'analyze' have vague descriptions that don't explain when to use them vs. similar tools. No tool declares permissions, security implications, or idempotency guarantees. The server mixes read-only and write operations (context7_add_repo) without clear distinction in descriptions.
Deep repo understanding: parallel-fetch GitHub metadata + code quality + architecture. e.g. analyze(repository='torvalds/linux')
Analyze license compliance for a package by PURL.
List files in a package (npm/PyPI/crates). e.g. code_files(platform='npm', package='lodash')
Grep/search within a package's source. e.g. code_grep(platform='npm', package='express', pattern='router')
Read source file from a package. e.g. code_read(platform='npm', package='lodash', path='lodash.js')
Search code across GitHub + SearchCode. e.g. code_search(query='async/await pattern', language='typescript', owner='microsoft', repo='vscode')
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Tools like search_all, code_search, papers return complex nested results but no schema is visible in tool definitions.
Parameter descriptions missing or generic. 'limit', 'offset', 'query', 'count' appear across tools with no guidance on valid ranges, formats, or constraints. E.g., search_all.count defaults to 10 with max 50, but this is only in description text, not in schema constraints.
No error handling guidance in tool descriptions. Tools do not explain what to do if a query fails, a package is not found, or an API is unreachable. E.g., code_read has no description of what happens if the file path does not exist.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Ask questions about a repository via CodeWiki Q&A.
Fetch repository wiki sections via CodeWiki.
Search repositories via CodeWiki.
Submit a repository for Context7 indexing.
Resolve library documentation via Context7. Searches for library and fetches docs.
API/library documentation via Context7 → DevDocs → ReadTheDocs. e.g. docs(query='React hooks', library='react')
Fetch and rerank results you already have. e.g. enrich(results=[...], query='...')
Get the latest version of a component by PURL.
Get detailed information about a specific vulnerability by ID.
Hacker News search and discussion. e.g. hn(query='rust', min_points=100)
Academic research via Semantic Scholar + CORE + arXiv. e.g. papers(query='transformer attention mechanism', fields_of_study='Computer Science')
Lightweight connectivity check — verifies internet and key API endpoints are reachable. Use before expensive calls when connectivity is uncertain. No params needed. e.g. ping()
Composite package info (Libraries.io + Sonatype + vulnerabilities). e.g. pkg(platform='npm', name='lodash')
Get package dependencies. e.g. pkg_deps(platform='npm', package='react', version='18.0.0')
Scan package vulnerabilities via Sonatype Guide API. Returns vulnerability reports with CVSS scores and severity levels.
Unified search across 14+ sources with embedding dedup and reranking. Use for broad multi-source discovery; for surgical single-source work call so_search/hn/papers/code_search directly. e.g. search_all(query='rust async runtime', language='rust')
Search academic works via CORE API.
Search llms.txt file on a domain for documentation links.
Raw package registry queries (npm/PyPI/crates/Maven/NuGet/etc). Fast single-registry lookups. e.g. search_package(platform='npm', query='react')
Stack Exchange Q&A search. e.g. so_search(query='async await', tags='javascript', accepted=true)
Vulnerability scanning via Sonatype OSS Index. e.g. vulns(platform='npm', name='lodash', version='4.17.0')
Repo architecture and wiki via DeepWiki + CodeWiki. For single-repo queries use owner+repo; for multi-repo questions pass repos (array of owner/repo strings, max 10). e.g. wiki(owner='torvalds', repo='linux', question='How does the scheduler work?')
Ambiguous tool selection. Tools like 'wiki', 'docs', 'papers', 'so_search' all retrieve information but descriptions do not clearly explain when to use one vs. another. LLMs will waste reasoning cycles deciding between overlapping tools.
Write operation (context7_add_repo) not clearly marked as destructive/state-changing. Description does not warn that this modifies external state or explain side effects. No confirmation or dry-run option.