Skip to main content
Glama

find_references

Read-only

Find where-used references across the entire D365 F&O codebase to assess impact before refactoring.

Instructions

Find all references (where-used) to a class, method, field, table, enum, or LABEL. Essential for impact analysis before refactoring. For a method, SCOPE it to its declaring type — pass "Owner.method" (e.g. "SalesTable.initFromSalesQuotationTable"), set ownerName alongside a bare method name, or pass an AOT path ("/Tables/SalesTable/Methods/initFromSalesQuotationTable"). A bare method name (no owner) matches that name on every type and over-reports. For a label, pass the label id as targetName (e.g. "@WAX2194" or "@MyLabelFile:MyLabel"); results span every referencing object type (tables, forms, EDTs, enums, reports, menu items, …), not just code, and require the xref database (DYNAMICSXREFDB, full server mode).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of references to return
ownerNameNoDeclaring table/class/form that owns the method, when targetName is the bare method name. Scopes the where-used to that single type.
targetNameYesTarget name. Methods: see the scoping rule in the description above. Labels: the id exactly as written — "@WAX2194" or "@LabelFile:LabelId".
targetTypeNoType of the target to search for. Use "label" for label where-used (or just pass an "@…" / "/Labels/@…" targetName).all
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so a read operation is understood. The description adds meaningful behavioral detail beyond that: the method-name-matches-every-type over-reporting behavior, that label results span every object type (not just code), and the DYNAMICSXREFDB/full-server-mode requirement. This enriches the safety/behavioral profile without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place — method scoping, label semantics, and prerequisites are all operationally critical for correct invocation. It is front-loaded with the core purpose and scoping rule before edge cases. Slightly dense but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a read tool whose annotations already cover safety: all target types, method-scoping edge cases, label behavior, and the xref prerequisite are covered. The only gap is that with no output schema, the return format/pagination behavior (relevant given the limit param) is not described. Otherwise nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, the description substantially enriches parameter meaning. It explains the targetName scoping rule for methods (Owner.method vs bare name vs AOT path), the exact label id format ('@WAX2194' or '@MyLabelFile:MyLabel'), and how ownerName scopes a bare method name. It also clarifies targetType's 'label' value and the '@…' shortcut. This goes well beyond the schema's one-line parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Find all references (where-used) to a class, method, field, table, enum, or LABEL.' This clearly distinguishes it from siblings like search (general search), get_object_info, and validate_code. The 'Essential for impact analysis before refactoring' line reinforces the distinct role. No tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides strong usage context — 'Essential for impact analysis before refactoring' — plus concrete invocation patterns (Owner.method, ownerName, AOT path) and an explicit over-reporting warning for bare method names. Covers label usage and its xref database prerequisite. It doesn't name which sibling to use instead in specific cases, but the guidance is otherwise explicit and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dynamics365ninja/d365fo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server