Cross-repository code knowledge graph for Java/Kotlin/JS/TS — MCP server, web UI, CLI. Provides code analysis, call graphs, taint analysis, and SAST capabilities.
Orihime provides 11 well-named, action-verb tools (find_*, search_*, list_*, get_*, blast_radius, index_repo) with clear, domain-specific descriptions (avg ~120 chars). All tools have documented input schemas with types and parameter descriptions. However, output schemas are NOT documented, tools return lists of dicts but the exact fields are inferred from code comments only. Error handling is minimal (generic exception logging, no recovery guidance). No tool annotations (readOnlyHint/destructiveHint). The index_repo tool is WRITE but unmarked. Parameter descriptions are adequate but lack format constraints (e.g., method_fqn format, max_depth bounds). No pagination support despite tools returning potentially large result sets.
Compute the blast radius of a change to a method — all methods that transitively depend on it.
Find all methods directly called by the given method.
Find all methods that directly call the given method.
Find methods with loops, recursion, or high cyclomatic complexity.
Find the handler method for an endpoint and all upstream callers.
Find all taint sinks reachable from a given source method.
Find all external REST calls made by methods in a repository.
Output schemas not documented. Tools return lists of dicts (e.g., find_callers returns [{'fqn', 'file_path', 'line_start'}]) but LLMs cannot see field names/types without reading code. This forces LLMs to guess what fields are available and risks incorrect downstream tool chaining.
No pagination support. Tools like search_symbol (limit=50 default) and find_repo_dependencies may return large result sets. No offset/cursor mechanism or total_count field. Large unbounded results risk context window exhaustion.
No tool annotations. index_repo is a WRITE operation (modifies database) but has no destructiveHint. find_* tools are READ-ONLY but lack readOnlyHint. LLMs cannot distinguish safe from unsafe operations without annotations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Get the file path and line number for a method or class.
Index a repository into the knowledge graph.
List all indexed repositories.
Search for classes and methods by name substring.
Error handling is generic. Exceptions are logged but responses return [{'error': str(exc)}]. No recovery guidance (e.g., 'Method not found. Try search_symbol() first'). LLMs cannot self-correct from errors.
Parameter constraints not documented. method_fqn format (e.g., 'com.example.Foo.bar') is shown in description but not enforced. max_depth bounds (default 5, 10) lack min/max specs. LLMs may pass invalid values.