Skip to main content
Glama

audit_tracking

Audit analytics tracking by comparing logged code events against incoming data to find broken logging, dead code, and unrecorded actions.

Instructions

Check what the code logs, and — if there is data — whether it arrives.

Use this when analyze says there is nothing to work with. A project that tracks nothing has no data to analyse, but it has code to read, so leave csv_path out and this still answers.

How to use it:

  1. Search the codebase for logging calls yourself. Common shapes: logEvent(...), track(...), analytics.capture(...), posthog.capture(...), gtag('event', ...), mixpanel.track(...)

  2. Pass the event names you found as code_events.

  3. Read the result:

    • in_code_never_fired logging is broken, or nobody uses that feature

    • in_data_not_in_code dead code, or your search missed it (look again)

  4. Then find what has no logging at all — button handlers and core actions that should be recorded and aren't. That gap won't appear in either list, and it is usually the important one.

  5. Prescribe, don't just report. For each hole write the one line of logging that belongs in that file, in that function, matching the surrounding style, show it, and ask whether to add it. Follow the project's existing naming (follow_artist if it is snake_case, followArtist if camelCase).

  6. Once logging is in, tell them when to come back. come_back_in_days is in the result and is not a guess — it is how long the code must watch a user before it can honestly call them churned or a regular. Saying "run this again tomorrow" would produce a report with nothing in it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
csv_pathNo
code_eventsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.4

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 discloses graceful degradation without csv_path, names the two result categories (in_code_never_fired, in_data_not_in_code) and what each implies, and explains come_back_in_days as a computed value rather than a guess. It does not cover the return structure or any auth/rate behavior, so a 4 rather than 5.

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 purpose and trigger, then a numbered procedure, so structure is good. However, some steps (prescribe the logging line, match naming style) are agent-behavior policy rather than tool-invocation guidance, adding length that does not help an agent select or call the tool.

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 no output schema and 0% schema coverage, the description supplies the missing context: how to build the required input, how to read each result bucket, the ungapped case that appears in neither list, and the re-run horizon. Nothing essential for a correct call is absent.

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 description coverage is 0%, so the description must compensate, and it does: code_events is explained as the event names found by searching logging calls (with example call shapes), and csv_path is described as omittable with defined behavior. The csv_path string's expected format/columns is still left implicit.

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 opening line states a specific dual-purpose action: read what the code logs and check whether that data actually arrives. It explicitly names the sibling `analyze` as the tool this one picks up after, so an agent can distinguish it without opening any schema.

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 an explicit trigger ('use this when analyze says there is nothing to work with') and explains the degraded-mode condition (leave csv_path out and it still answers). It also states when to re-invoke via come_back_in_days, covering both entry and follow-up conditions.

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