Skip to main content
Glama
Pharaoh-so

Pharaoh - Your AI breaks things it can't see

by Pharaoh-so

get_module_context

Read-only

Get one module's full profile before changing code: files, exports, dependencies, DB tables, endpoints, and callers across other modules.

Instructions

One module's full profile before you change it, in about 2K tokens.

CALL THIS WHEN: • You're about to change code in a module, or plan a change to it • You need what a module exports, depends on, or who calls into it

RETURNS: Files, LOC, exported signatures with complexity, imports in and out, DB tables, endpoints, cron jobs, env vars, and callers in other modules.

USE INSTEAD OF: reading every module file; callers can live elsewhere.

Input Schema

NameRequiredDescriptionDefault
repoYesRepository name — one of your connected repos.
moduleYesModule name (e.g., "crons", "slack", "db")

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.1.1
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / module
      Added value: +{
      +  "description": "Module name (e.g., \"crons\", \"slack\", \"db\")",
      +  "type": "string"
      +}
    • addedInput schema / properties / repo
      Added value: +{
      +  "description": "Repository name — one of your connected repos.",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "repo",
      +  "module"
      +]
  2. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), so the bar is lower; the description still adds real value by quoting a cost budget (~2K tokens) and enumerating the exact payload (files, LOC, signatures with complexity, imports, DB tables, endpoints, crons, env vars, callers). It stops short of noting size limits on very large modules or whether output is truncated.

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?

Front-loaded with the one-line value proposition and a cost estimate, then sectioned into WHEN / RETURNS / INSTEAD OF. Every block earns its place and nothing is restated.

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?

With only two required params, no output schema, and no nested objects, the description covers everything an agent needs: trigger conditions, a token-cost expectation, and a full enumeration of the return contents. Nothing material is left to guesswork.

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% — both `repo` and `module` are documented in the schema, including an example value for module. The description adds no syntax, naming, or format guidance beyond that, so the baseline 3 applies.

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

Purpose4/5

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

Names a specific resource (one module's full profile) and frames the intent around pre-change reconnaissance, which is distinct from `get_codebase_map` (whole repo) or `search_functions` (targeted lookup). However it never names a sibling tool, so an agent must infer whether `get_blast_radius` or `pharaoh_recon` overlaps. Clear purpose, but sibling differentiation is implicit rather than stated.

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?

The 'CALL THIS WHEN' block gives two concrete triggering conditions (about to change a module; need exports/deps/callers) and 'USE INSTEAD OF' rules out reading files directly. What is missing is an explicit pointer to the actual sibling tools it supersedes or defers to — 'reading every module file' is a manual workflow, not a tool, so the routing decision against `get_blast_radius` remains unstated.

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