Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
This tool is available by default on the following MCP servers: Dynamics 365 Customer Service.
The tools and examples in this documentation illustrate current capabilities. Tool names, descriptions, parameters, response formats, and available functionality can change over time.
When you build agents, integrations, or orchestration logic, don't hard-code dependencies on specific tool names, parameter structures, tool metadata, or response schemas. Instead, design your solution to discover and use available tools at runtime.
As the platform evolves, Microsoft might add, remove, rename, or modify tools and tool metadata. Designing against capabilities rather than specific tool identifiers helps maintain compatibility across service updates.
Use this capability when you want to find cases by searching for keywords in the case title and description, or by customer name.
What it does
The assistant searches across case titles and descriptions using keywords you provide, or finds cases linked to a specific customer (account or contact). Results are ranked by relevance. This is useful when you know what the issue is about but don't know the case number.
Try prompts like
- "Search for cases about printer issues"
- "Find cases for Contoso"
- "Cases about login errors"
- "Search cases for Jordan Reyes"
- "Find cases mentioning VPN timeout"
- "Look up cases about billing discrepancy"
What you see in chat
The assistant shows a text list of matching cases with case numbers, titles, status, and relevance scores. This is a text response without an interactive component.
Helpful tips
- Use specific keywords for better results. "Printer paper jam" finds more relevant cases than just "printer."
- Search by customer name to find all cases for a specific customer: "find cases for Contoso."
- If you know the case number, use "find case CAS-01010-A0A0A0" instead, which uses a different, faster lookup.
- If you want to filter cases by status or priority with an interactive grid, say "list my active cases" instead.
Tip
After finding a matching case, ask "summarize case CAS-01010-A0A0A0" to quickly review it.
What happens next
After finding cases, you can continue with prompts like:
- "Summarize the first case"
- "Open case CAS-01010-A0A0A0"
- "What's the SLA status on that case?"
- "Reassign this case to Alex"
Does this change data?
No. Searching cases doesn't change data.
The search is read-only and queries existing case records.
Prerequisites
This tool is available on the Dynamics 365 Customer Service MCP server. See the availability note at the top of this page for details. No additional configuration is required.
Tool summary
| Property | Value |
|---|---|
| User-facing name | Search Cases |
| Internal tool name | search_cases |
| Purpose | Searches cases by free-text keyword across case title and description, or by customer name (account or contact) |
Tool behavior
Searches cases by free-text keyword across case title and description, or by customer name (account or contact). Uses Dataverse Relevance Search when available, with a substring match fallback. Returns relevance-ranked text results scoped to the incident entity.
Annotations
| Annotation | Value | Meaning |
|---|---|---|
readOnlyHint |
true |
This tool doesn't modify data. |
destructiveHint |
Not set | Not applicable (read-only tool). |
idempotentHint |
Not set | Not applicable (read-only tool). |
openWorldHint |
Not set | Uses default (queries Dataverse). |
Input concepts
Keyword search
| Input | Description | Required |
|---|---|---|
searchText |
searchText (string, max 500 chars). Free-text keyword to search across case title and description. Ignored when customerName is also provided. |
No |
Customer filter
| Input | Description | Required |
|---|---|---|
customerName |
customerName (string, max 200 chars). Customer name (account or contact) to filter cases by. Takes precedence over searchText when both are provided. |
No |
Result limit
| Input | Description | Required |
|---|---|---|
top |
top (integer). Maximum number of results. Defaults to the org page-size setting (typically 10). |
No |
Response and UI behavior
Response type
Text-only
Returns a text list of matching cases with case number, title, status, and relevance score. No interactive component is rendered.
Routing notes
Use search_cases when:
- The user wants to search cases by keyword across title AND description
- The user wants to find cases for a specific customer name
- The user says "search for cases about X", "find cases for customer Y"
Don't use search_cases when:
- Filtering by status, priority, or owner with a grid widget - route to
list_cases - Exact case-number lookup - route to
list_cases(thesearchparameter handles exact case number matching) - Non-case entity search - route to
search_entities
Related tools
| Tool | Relationship |
|---|---|
list_cases |
Lists cases with filters and renders a grid. Use for status/priority/owner filtering or case-number lookup |
search_entities |
Generic Dataverse search across any entity type |
summarize_case |
Opens a matched case with an AI summary |
match_cases |
Finds cases matching an email via Relevance Search |
Data mutation classification
Read-only.
The tool queries Dataverse search indices without modifying any data.