Skip to main content
Glama

Run Resume Health Check

run_health_check

Run a job-description-independent resume health check on a base resume or tailored application to score bullets, verify gates, and rank defects by cost.

Instructions

Run the JD-independent resume health check on a base resume or a tailored application. kind is 'base' (then key is the base-resume slug) or 'application' (then key is the application id). Classifies every bullet on the evidence ladder, checks structure/content gates, and returns {score, grade, tier, next_grade, gates, counts, findings, judged} ranked by what each defect costs. Concrete qualitative results can earn full credit. An ask/fix finding carries question, ask_kind (measure|detail|reword), measure_target, alt_question, gain and evidence. Notes score zero: the evidence.no_numbers flag and language.* wording notes. Disputes and the word bank are web-only for now. judged is {done, pending, by}: bullets a judge has read, bullets waiting, and the judges' model ids. When Maestro's own model does not judge (no model key is set, or the user's settings say the agent app writes), no model is called: only stored judgments count (any judge, current rubric version); score, grade and next_grade are null while a scored bullet is pending, and judging is {rubric_version, pending_ids, prompt}, where prompt is the app's own evaluator prompt filled with the pending bullets; judge_health_bullets stores answers in that prompt's output shape. create_tailoring_session returns 409 when the base resume's latest, current report has an unwaived failing fatal gate; this call produces that report.

Input Schema

NameRequiredDescriptionDefault
keyYes
kindYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.11.1

TDQS

A4.5/5.0
Behavior5/5

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

Given annotations only flag readOnlyHint=false / idempotentHint=false, the description adds substantial behavioral context: no model is called when the agent's own model writes, only stored judgments count, score/grade/next_grade are null while a scored bullet is pending, and the `judging` payload including the evaluator prompt is returned. It also names the finding shape (ask_kind, measure_target, evidence) and that notes score zero — none of which is recoverable from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded, but the remainder is a dense block that mixes return-shape enumeration, judging fallback protocol, and judge_health_bullets coupling into one paragraph without structure. Most content earns its place, yet the single unbroken run makes key conditions (the no-model path, null score rule) hard to locate quickly.

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?

With no output schema, the description does describe the return object ({score, grade, tier, next_grade, gates, counts, findings, judged}) and the degraded `judging` shape, which is the main gap it needed to close. It omits the enumerated gate names and how findings are ordered in practice, leaving minor ambiguity about what a failing result looks like.

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

Parameters5/5

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

Schema coverage is 0%, so the description must carry the burden, and it does: it defines the enum values' meaning and, critically, states that `key` is interpreted differently per kind (base-resume slug vs. application id). That conditional semantics is exactly what the bare string schema cannot convey.

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 and resource ("Run the JD-independent resume health check") and immediately scopes it to two target types, base resume vs. tailored application. It is clearly distinguishable from siblings like get_health_report (retrieval) and judge_health_bullets (submission), and the last line clarifies that this call produces the report that create_tailoring_session gates on.

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

Usage Guidelines4/5

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

Explains exactly how to select between the two modes (kind='base' → key is the slug; kind='application' → key is the application id) and describes the downstream consequence with create_tailoring_session 409 behavior. It does not explicitly contrast with get_health_report or say when re-running is warranted, so it stops short of full alternative routing.

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

Deploy Server

Other Tools