Skip to main content
Glama

project_profile

Detects a project's architecture, layers, and design patterns from folder and file names, cross-checked against the code graph. Call it first in an unfamiliar codebase before searching or outlining.

Instructions

Project profile from folder and file names, checked against the code graph: architecture (Laravel/Yii layered MVC, DDD/hexagonal, Vue/React frontend, SwiftUI MVVM, Rust web), layers with their folders and file counts, design patterns, the call direction between layers, unknown folders (~15 lines). Call it first in an unfamiliar project, then pass layer (e.g. "service") to outline / search / find_callers. Example: {} or {"project": "shop", "full": true}. Pitfall: a layer name comes from this list (controller, service, repository, model, component, store…), not a folder path.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "project_profile"
  }
}

Input Schema

NameRequiredDescriptionDefault
fullNoPer-folder details, confidence counts and the call pairs between layers.
projectNoRegistered project alias; default: the server's working directory.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.9.3

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it names the data source (folder/file names verified against the code graph), the approximate output size (~15 lines by default), and what changes with `full`. It never explicitly says the tool is read-only or lists side effects, but the profile/derivation framing makes that unambiguous.

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?

Front-loaded with the core statement, then workflow guidance, then examples, then a pitfall — a sensible ordering. The parenthetical architecture list (Laravel/Yii, DDD/hexagonal, Vue/React, SwiftUI MVVM, Rust web) is dense but each item is load-bearing for recognizing a project type.

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?

No output schema exists, so the description must convey return values — and it does, listing every section of the profile plus its approximate size. Combined with the call-first workflow and the layer-name pitfall, an agent has everything needed to invoke it correctly and use its output downstream.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by giving concrete invocation examples ('{}' or '{"project": "shop", "full": true}') and by clarifying that `full` expands to per-folder details and call pairs in exchange for the ~15-line default compactness. The layer-name pitfall also frames how `project`/`layer` are not to be confused.

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+resource (project profile derived from folder/file names, cross-checked against the code graph) and enumerates exactly what the profile contains: architecture style, layers with folders and file counts, design patterns, inter-layer call direction, unknown folders. That enumeration also separates it from siblings like outline/search, which take a layer argument this tool produces.

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?

Explicit sequencing rule: 'Call it first in an unfamiliar project, then pass `layer` (e.g. "service") to `outline` / `search` / `find_callers`.' Adds a concrete pitfall — layer names come from the tool's own list (controller, service, repository, model, component, store…), not a folder path — which prevents the most likely misuse.

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