Skip to main content
Glama

Faf Auto

faf_auto
Idempotent

Detect your project stack from manifest files, then create or update a .faf file with grounded language, framework, database, and build tool 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?

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, and the description usefully elaborates beyond them: it lists the manifest files scanned, the fact that docker-compose images and Makefile/justfile targets are mapped, and that it only fills empty slots rather than overwriting. That last point is meaningful behavioral context for a mutation tool, though permissions/auth and any failure behavior remain unstated.

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?

Three front-loaded sentences with no filler; the mechanism and the create-or-fill outcome are stated up front. The middle sentence is dense with examples but every clause adds signal.

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 no elaboration, and the detection mechanics are well covered. The definition is still incomplete for a writer tool with 0% parameter coverage and heavy sibling overlap: it does not resolve how path/directory interact or when to prefer this over faf_init/faf_discover.

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%, so the description carries the full burden, yet it never mentions the two parameters. Crucially, the 'path' default ('project.faf') versus 'directory' ('.') distinction is ambiguous and undocumented, leaving the agent to infer which one governs where the file is written.

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?

It names a concrete verb (auto-detect + author/update) and resource (.faf file) and describes the mechanism in detail. The gap is sibling differentiation: faf_init and faf_discover plausibly overlap with this, yet the description never says how faf_auto differs from them, so an agent must guess.

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?

Usage is only implied through the create-or-fill branch ('Creates a new .faf if none exists, or fills empty slots in an existing one'), which is genuinely informative. But there is no explicit when-to-use vs faf_init/faf_discover/faf_read, and no exclusions or prerequisites stated.

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