Skip to main content
Glama

Faf Auto

faf_auto

Scans package manifests, Docker Compose, and Makefiles to detect language, framework, database, and build tools, then creates or updates a .faf file with grounded stack facts.

Instructions

Auto-detect project stack and author/update a .faf file. Scans package.json, pyproject.toml, Cargo.toml, go.mod, and other manifest files for language, framework, database, API type, and build tools — then grounds the result in the repo's own files: docker-compose service images (Postgres, Redis, Elasticsearch...) map onto stack slots, and Makefile / justfile targets map onto test / build / lint commands. Facts from files, no hardcoded defaults. Creates a new .faf if none exists, or fills empty slots in an existing one.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathNoproject.faf
directoryNo.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.1.2

TDQS

B3.4/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 reasonably well: it discloses the mutation profile (creates or updates a file), the non-destructive rule (only fills empty slots), and the sourcing method (facts from files, no hardcoded defaults). It omits permission requirements and whether existing populated values are ever overwritten, but the mechanism is unusually well described for an unannotated tool.

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?

It is a tight, front-loaded paragraph: purpose first, then the detection mechanism, then the create-vs-fill behavior. The manifest list is slightly padded but each example adds useful specificity, so little is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the detection/mutation behavior is well covered. The main gap is the two undocumented parameters, which leaves the definition incomplete for a tool the agent must invoke with a file path and directory.

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

Parameters2/5

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

Schema description coverage is 0% across two parameters, yet the description never mentions path or directory, their defaults, or how they interact (e.g. file name vs. working directory). The agent must infer everything from the raw JSON schema, so the description fails to compensate for the coverage gap.

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?

The description gives a specific verb and resource: auto-detect project stack and author/update a .faf file, and spells out what it scans (package.json, pyproject.toml, docker-compose, Makefile). It is clear, but it never distinguishes itself from siblings like faf_init or faf_discover, which an agent would need to choose between.

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

Usage Guidelines3/5

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

"Creates a new .faf if none exists, or fills empty slots in an existing one" gives one clear state condition, implying use when a .faf is missing or partially populated. However, there is no explicit when-to-use versus faf_init/faf_discover/faf_migrate, and no prerequisites or exclusions are stated.

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