Find a Symbol by Name
find_symbolLocate C# types, methods, properties, fields, events, enum members, and operators by name substring. Returns ranked matches with kind, signature, and declaring type for symbol lookup.
Instructions
Find types, methods, properties, fields, events, enum members and operators whose name contains the query (case-insensitive). Returns each match with kind ('type'/'method'/'property'/'field'/'event'/'enum_member'/'operator'), name, declaring type (a nested type's outer one; a member of a nested type adds 'outerType'), namespace, a signature, and 'project' where two hits would read alike. Use this to locate a symbol before find_usages / call_graph / get_context - every kind listed here is one find_usages / impact_of_change resolve. Types are listed first, then methods, then properties (handwritten + source-generated - a generated property carries a '// source-generated' note in its signature), then fields, events and enum members (an enum member's signature is its qualified Enum.Member form, the string the fan-in tools take), then user-defined operators + conversions. A user-defined operator is found by its METADATA name (query 'op_Equality' / 'op_Addition' / 'op_Implicit'; 'op_' lists them all). Not indexed, so an empty answer is expected for them: local variables, parameters, labels, namespaces, and C# generated into obj/ that carries real declarations (protobuf/Grpc.Tools, T4, Refit), and a Blazor component written only in a .razor file - a zero-hit answer says which in 'generatedSourcesNote'. Results are ranked by match quality FIRST - exact name, then case-insensitive exact, then prefix, then substring - and only within one rank by the kind order above, so the cap never hides an exact match behind weaker substring hits. Returns a capped envelope (items/count/totalFound/truncated), max 100 - if truncated, the exact/prefix matches are the ones you got; narrow the query (a longer substring) to see the weaker rest. If the query matches nothing, the response carries a 'nearest' suggestion - the closest declared name (a likely typo/case-mismatch); a match never carries one. With no nearest either, a 'note' says a missing name is not a missing feature.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"sessionId": "<sessionId>",
"query": "<query>"
},
"name": "find_symbol"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | A substring of the symbol name to search for (type, method, property, field, event, enum member or operator). | |
| sessionId | Yes | The session_id returned by analyze_solution. Also takes an absolute .sln/.slnx/.slnf path, analyzed on first use. |