Skip to main content
Glama

Read an offer analysis

get_offer
Read-only

Full analysis of one offer: health score 0-10, verdict (negotiate / accept / decline) with its reasoning, each pay component against an estimated market range, red and green flags, leverage points with a current -> ask delta and the chance each lands, and four ready-to-send scripts (counter-offer email, reply when the budget is fixed, call talking points, polite decline). Status is 'processing' while the analysis runs and 'completed' once it is done. Market ranges are estimates, not the company's pay bands: each line carries a confidence (a low one claims no position), and market_assumptions names the country and hire type they were read for — say that once with the result. Returns 'not_found' for a missing or foreign offer id.

Input Schema

NameRequiredDescriptionDefault
inputYes

Output Schema

NameRequiredDescriptionDefault
idYes
roleNo
toneNo
bonusNo
errorNoWhy the analysis failed, when status is 'failed'.
equityNo
statusYesdraft | extracting | processing | completed | failed
companyNo
scriptsNo
verdictNonegotiate | accept | decline
benefitsNo
currencyNo
locationNo
is_pinnedNo
red_flagsNo
step_pathNoPath on the ResumeQuick site that opens on that reply; null without one.
tradeoffsNo
created_atNo
prioritiesNo
reply_stepNoThe reply this offer's verdict calls for, written and ready: counter_offer (negotiate), acceptance_note (accept), decline (decline). Its page opens on that reply. Null while the analysis runs or when the reply is not written.
vacancy_idNo
analyzed_atNo
base_salaryNo
green_flagsNo
is_archivedNo
weak_pushesNo
health_scoreNo
extra_contextNo
sign_on_bonusNo
vacation_daysNo
comp_breakdownNo
employment_typeNoemployee | contractor | eor | freelance
has_source_textNoWhether the user's original paste is stored. The text itself is never returned.
leverage_pointsNo
verdict_summaryNo
employer_countryNo
candidate_countryNoISO-2 country the market was read for.
market_assumptionsNoThe market frame the estimates assume. Name it once when you share the result; ranges are estimates.
total_comp_currentNo4-year total of the offer as it stands, added up from its pay lines; null when a pay line has no amount.
total_comp_negotiatedNoThe same 4-year total if every ask with an amount lands; null when it cannot be added up.
candidate_country_sourceNoWhere that country came from: user | resume | radar | signup.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedOutput schema / properties / total_comp_current / description
      Previous value: -"4-year projection of the offer as it stands."New value: +"4-year total of the offer as it stands, added up from its pay lines; null when a pay line has no amount."
    • changedOutput schema / properties / total_comp_negotiated / description
      Previous value: -"4-year projection if every ask lands."New value: +"The same 4-year total if every ask with an amount lands; null when it cannot be added up."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare a safe read; the description adds substantial context beyond that: the two status states the caller can observe, the 'not_found' result for missing or foreign offer ids, the caveat that market ranges are estimates rather than company pay bands, and the confidence field that can claim no position. That is exactly the kind of behavioral disclosure annotations cannot carry.

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 what the tool returns, then status behavior, then the estimate caveat and error case — a sensible priority order with no filler. The opening is a long, dense enumeration, but every listed artifact (scripts, deltas, confidence) tells the agent something actionable, so the length is largely earned.

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?

Given an output schema exists, the description could have stopped at purpose; instead it covers return contents, async status transitions, error behavior, and an important interpretive caveat about market estimates. An agent has everything needed to call this correctly and to interpret the response honestly.

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?

Only one parameter, and the description gives no syntax detail beyond the schema, but the schema's own property description ('Id of the offer to fetch, from list_offers or analyze_offer') covers the parameter meaning and provenance. With a single, schema-documented parameter there is little left for the description to add.

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+resource ('Full analysis of one offer') and then enumerates exactly what the analysis contains (health score, verdict, pay components, flags, leverage points, scripts). This clearly distinguishes it from list_offers (which enumerates) and analyze_offer (which produces the analysis), so an agent can route correctly without opening the schema.

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?

The status semantics ('processing' while the analysis runs, 'completed' once done) implicitly tell the agent this is a poll/read tool that follows an analyze_offer call, and the schema's offer_id description names list_offers and analyze_offer as sources. However, the description never states explicitly 'call this after analyze_offer' or gives guidance about polling cadence, so the when-to-use context is strong but not fully spelled out.

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.