[symbols]
Quick lookup: resolves a name or pattern into candidate symbols with stable symbolKeys. Use when you already know the symbol name. Lightweight alternative to search_symbols.
C# names are overloaded, scoped, generic, nested, and sometimes duplicated across projects.
Symbol discovery converts fuzzy names or cursor positions into stable identities the model can reuse for later references, callers, and refactors.
Try it locally in the Glider playground
| Name | Type | Required | Description |
|---|---|---|---|
| query | string | Yes | Name fragment or fully qualified name. |
| kinds | string | No | Optional kinds filter (comma-separated). Type, Class, Interface, Struct, Enum, Delegate, Method, Property, Field, Event, Namespace. Type means any named type; the rest match the kind a result reports. |
| projectName | string | No | Optional project name to limit scope. |
| maxCandidates | number | No | Max candidates to return. Default is 25. |
| pathStyle | string | No | Path style: 'absolute' (default) or 'relative' (to solution root). |
Resolve an ambiguous type name
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "resolve_symbol",
"arguments": {
"query": "SolutionManager",
"kinds": "Type"
}
}
}{
"success": true,
"data": {
"query": "SolutionManager",
"candidateCount": 2,
"candidates": [
{
"symbolKey": "...",
"fullName": "MyApp.Services.SolutionManager",
"kind": "Type",
"filePath": "/path/to/SolutionManager.cs",
"lineNumber": 12,
"projectName": "MyProject"
}
],
"hints": {
"nextSteps": [
"Use get_symbol_info with a candidate symbolKey for details",
"Use find_references with symbolKey to locate usages"
]
}
},
"meta": {
"durationMs": 123,
"cancelled": false,
"timedOut": false,
"timeoutMs": 1200000
},
"error": null
}Resolve a method name
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "resolve_symbol",
"arguments": {
"query": "Login",
"kinds": "Method"
}
}
}{
"success": true,
"data": {
"query": "SolutionManager",
"candidateCount": 2,
"candidates": [
{
"symbolKey": "...",
"fullName": "MyApp.Services.SolutionManager",
"kind": "Type",
"filePath": "/path/to/SolutionManager.cs",
"lineNumber": 12,
"projectName": "MyProject"
}
],
"hints": {
"nextSteps": [
"Use get_symbol_info with a candidate symbolKey for details",
"Use find_references with symbolKey to locate usages"
]
}
},
"meta": {
"durationMs": 123,
"cancelled": false,
"timedOut": false,
"timeoutMs": 1200000
},
"error": null
}Returns candidate symbols with stable symbol keys. Candidates come from one name-match tier - exact name, else name prefix, else substring - reported as matchTier, with suppressedMatches counting what a weaker tier held, so a precise query is not diluted by symbols that merely contain it. Add * or ? to the query to match loosely on purpose. A query that already contains a wildcard reports matchTier Glob, which is its own tier: every hit is equally what you asked for, so nothing is suppressed and no tier note is returned. Namespaces are returned only when kinds asks for them.