Skip to main content
Glama

find_callees

Read-only

Lists indexed symbols called inside a function's body, including call lines and where each callee is defined, to trace a function's behavior one level down.

Instructions

What does this call? Lists the indexed symbols called from the body of each definition matching name, with the line of each call and where the called symbol is defined (repository, path, line range). Use it to follow what a function does one level down; for who calls it, use find_callers. Calls into code that is not indexed, such as the standard library or dependencies, are not listed. At most 200 rows; truncated is true when more exist. Next step: get_symbol on a callee to read it.

Input Schema

NameRequiredDescriptionDefault
nameYesA bare name (url_for), which matches url_for and every Class.url_for, or a qualified name (Flask.url_for), which matches only that definition. Case-sensitive.
repoNoLook only in this registered repository, for example flask. list_repositories gives the valid names. Default: all repositories.

Output Schema

NameRequiredDescriptionDefault
reasonYes
statusYes
resultsYes
truncatedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.2

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. Beyond that, the description adds substantive behavioral detail: non-indexed calls such as standard library or dependency calls are omitted, results are capped at 200 rows, and truncation is signaled via a truncated flag.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and then covers scope, exclusions, limits, and next step in a compact sequence. Every sentence carries useful information, with no redundant restatement of the schema or annotations.

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

Completeness5/5

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

Given an output schema is present, the description need not specify return fields exhaustively, but it still summarizes the useful return shape (call line and callee location) and covers key constraints such as indexing scope and the 200-row truncation limit. This is complete enough for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters already have documented semantics, including bare vs qualified name matching and repo filtering. The description reinforces that results are for definitions matching name, but adds little parameter-level detail beyond the schema.

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?

The description opens with a specific question that defines the operation, then states it lists indexed symbols called from each matching definition, including call line and callee definition location. It explicitly distinguishes itself from find_callers, so an agent can select the right directional traversal tool without opening schemas.

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

Usage Guidelines5/5

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

It gives explicit usage guidance: use this to follow what a function does one level down, and use find_callers for who calls it. It also states the next step (get_symbol on a callee) and notes that calls into non-indexed code are excluded, leaving little ambiguity about when and how to use it.

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