Skip to main content
Glama

log_application

Appends a job application row to your registry file, with dry-run preview. Check existing entries first to avoid duplicates; use update status later for changes.

Instructions

Mutates the registry file — appends one new row, it does not check for an existing one first. Call list_applications(company=...) beforehand if you need to avoid logging a duplicate. Target file and column layout come from REGISTRY_CONFIG_PATH (default: the bundled generic example). Never invents text for free-text fields — only places exactly what you pass. Use dry_run to preview the row and insertion point without writing. To change an existing row's status later, use update_application_status instead of calling this again.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesISO date (YYYY-MM-DD) of the application.
modeNoWork mode, e.g. 'Remote'.
rateNoRate/salary as free text.
roleYesRole/title applied for.
levelNoSeniority/contract level, e.g. 'Senior B2B'.
portalYesSection heading to log under, e.g. 'justjoin.it'.
companyYesCompany name.
dry_runNoPreview without writing to the file.
status_noteNoFree-text status/notes — placed verbatim.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

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 well: it discloses that the append is unconditional (no duplicate check), where the target file and column layout come from (REGISTRY_CONFIG_PATH, defaulting to the bundled example), that free-text fields are written verbatim rather than invented, and that dry_run previews the row and insertion point. It stops short of error/permission behavior and what happens if the configured file is missing or malformed.

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?

The most consequential fact — that this mutates the file with no dedup check — is front-loaded, followed by the config source, the verbatim-writing rule, the dry_run escape hatch, and the alternative tool. Five short sentences, none redundant.

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

Completeness4/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 description covers mutation semantics, config resolution, dedup avoidance, preview, and the sibling alternative for updates. It leaves minor gaps around failure modes (missing/unwritable registry file, config parse errors) that a mutation tool would ideally disclose.

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, but the description adds real meaning beyond the schema: it explains dry_run's preview-and-insertion-point semantics and clarifies that free-text fields (status_note, rate) are placed exactly as passed with no embellishment. It does not document the portal/company/date fields further, which is acceptable since the schema covers them.

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?

Opens with a specific verb and resource: 'Mutates the registry file — appends one new row.' It explicitly distinguishes itself from siblings by naming list_applications for duplicate checking and update_application_status for later status changes, so an agent can route correctly 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?

Gives explicit when-to-use and when-not-to-use guidance: call list_applications(company=...) beforehand to avoid duplicates, use dry_run to preview without writing, and use update_application_status rather than this tool to change an existing row. All alternatives are named with the condition that selects them.

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