Server Configuration
Describes the environment variables required to run the server.
Name | Required | Description | Default |
---|---|---|---|
XRAY_DEBUG | No | Enable debug logging (set to 1 to enable) | |
XRAY_DB_PATH | No | Custom database location for XRAY |
Schema
Prompts
Interactive templates invoked by user choice
Name | Description |
---|---|
No prompts |
Resources
Contextual data attached and managed by the client
Name | Description |
---|---|
No resources |
Tools
Functions exposed to the LLM to take actions
Name | Description |
---|---|
explore_repo | 🗺️ STEP 1: Map the codebase structure - start simple, then zoom in! PROGRESSIVE DISCOVERY WORKFLOW:
INPUTS:
EXAMPLE 1 - Initial exploration (directory only): explore_repo("/Users/john/project") Returns:/Users/john/project/├── src/├── tests/├── docs/└── README.mdEXAMPLE 2 - Zoom into src/ with symbols: explore_repo("/Users/john/project", focus_dirs=["src"], include_symbols=True) Returns:/Users/john/project/└── src/├── auth.py│ ├── class AuthService: # Handles user authentication│ ├── def authenticate(username, password): # Validates credentials│ └── def logout(session_id): # Ends user session└── models.py├── class User(BaseModel): # User account model└── ... and 3 moreEXAMPLE 3 - Limited depth exploration: explore_repo("/Users/john/project", max_depth=1, include_symbols=True) Shows only top-level dirs and files with their symbols💡 PRO TIP: Start with include_symbols=False to see structure, then set it to True for areas you want to examine in detail. This prevents information overload! ⚡ PERFORMANCE: Symbol extraction is cached per git commit - subsequent calls are instant! WHAT TO DO NEXT:
|
find_symbol | 🔍 STEP 2: Find specific functions, classes, or methods in the codebase. USE THIS AFTER explore_repo() when you need to locate a specific piece of code. Uses fuzzy matching - you don't need the exact name! INPUTS:
EXAMPLE INPUTS: find_symbol("/Users/john/awesome-project", "authenticate") find_symbol("/Users/john/awesome-project", "user model") # Fuzzy matches "UserModel" EXAMPLE OUTPUT: [ { "name": "authenticate_user", "type": "function", "path": "/Users/john/awesome-project/src/auth.py", "start_line": 45, "end_line": 67 }, { "name": "AuthService", "type": "class", "path": "/Users/john/awesome-project/src/services.py", "start_line": 12, "end_line": 89 } ] RETURNS: List of symbol objects (dictionaries). Save these objects - you'll pass them to what_breaks()! Empty list if no matches found. WHAT TO DO NEXT: Pick a symbol from the results and pass THE ENTIRE SYMBOL OBJECT to what_breaks() to see where it's used in the codebase. |
what_breaks | 💥 STEP 3: See what code might break if you change this symbol. USE THIS AFTER find_symbol() to understand the impact of changing a function/class. Shows you every place in the codebase where this symbol name appears. INPUT:
EXAMPLE INPUT: First, get a symbol from find_symbol():symbols = find_symbol("/Users/john/project", "authenticate") symbol = symbols[0] # Pick the first result Then pass THE WHOLE SYMBOL OBJECT:what_breaks(symbol) or directly:what_breaks({ "name": "authenticate_user", "type": "function", "path": "/Users/john/project/src/auth.py", "start_line": 45, "end_line": 67 }) EXAMPLE OUTPUT: { "references": [ { "file": "/Users/john/project/src/api.py", "line": 23, "text": " user = authenticate_user(username, password)" }, { "file": "/Users/john/project/tests/test_auth.py", "line": 45, "text": "def test_authenticate_user():" } ], "total_count": 2, "note": "Found 2 potential references based on a text search for the name 'authenticate_user'. This may include comments, strings, or other unrelated symbols." } ⚠️ IMPORTANT: This does a text search for the name, so it might find:
Review each reference to determine if it's actually affected. |