Skip to main content
Glama

Analyze a job match

analyze_radar_match

Analyze one radar match (by match id) against the user's resume, using the posting text the radar already stored; it does not fetch the job page. Some boards hand over only a teaser (under 400 characters): such a match is not analyzed and spends nothing; it is put in the tracker unanalyzed and comes back with status='needs_full_posting'; analyze_tracked_vacancy with the full posting text as 'description' analyzes it. Otherwise consumes one vacancy analysis from the user's quota per match. Runs asynchronously: get_vacancy_detail(analysis_id) shows the result in a few seconds. If this match was already analyzed the existing analysis is returned with reused=true and nothing is spent. Returns 'limit_exceeded' when the quota is gone, 'posting_closed' when the job board says the posting is gone (closed_at is set; the match is put away and nothing is spent), and 'not_found' if the match does not belong to the current user.

Input Schema

NameRequiredDescriptionDefault
inputYes

Output Schema

NameRequiredDescriptionDefault
reusedNo
statusYes'processing' — a new analysis was enqueued and a credit spent; 'reused' — this match was already analyzed; 'needs_full_posting' — the board gave only a teaser, so nothing was analyzed or spent and the match sits in the tracker unanalyzed under analysis_id until the full text is added.
task_idNoBackground job id; null when an existing analysis was reused.
match_idYes
analysis_idYesPass to get_vacancy_detail to read the result.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (which only give the generic destructive/readOnly/idempotent flags), the description discloses quota cost per match, asynchronous execution with get_vacancy_detail(analysis_id) to retrieve the result, and precise side-effect semantics for each failure path (posting_closed sets closed_at and puts the match away; teaser spends nothing). There is a mild tension with idempotentHint=false given the reused=true caching path, but the description's disclosure level is far richer than the annotations and is not a genuine contradiction.

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?

Purpose is front-loaded and every sentence carries real information (teaser handling, quota, async retrieval, error codes). It is dense as a single block, which slightly hurts scanability, but there is essentially no filler.

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?

For a one-parameter, output-schema-backed, asynchronous tool, the description covers the operation, its alternatives, its cost model, how to fetch results, and the full set of terminal error states with their side effects. Nothing material needed to invoke it correctly is missing.

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

Parameters3/5

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

Only one parameter (match_id), and the description references it only as 'by match id' without adding format, prefix, or lookup guidance. The schema carries the bulk of the meaning (its own description points to get_radar_matches), so a baseline 3 is appropriate rather than compensating heavily.

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 description names a specific verb and resource (analyze one radar match by id against the user's resume) and immediately bounds the operation ('using the posting text the radar already stored; it does not fetch the job page'). It also distinguishes itself from a near-sibling by naming analyze_tracked_vacancy for the full-posting case, so an agent can route correctly.

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 explicit when-to-use and when-not rules: teaser postings under 400 characters are not analyzed and instead should go to analyze_tracked_vacancy with the full text as 'description'. It also states the idempotent path (already-analyzed matches return reused=true) and quota conditions, so no routing is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.