Skip to main content
Glama

price_cap_floor

Price interest-rate caps, floors, or collars using user-supplied market data, curves, volatility, and model to get NPV, ATM rate, and implied volatility.

Instructions

Price an interest-rate cap, floor or collar (POST /price-cap-floor).

Args: market_data_source: where the market numbers in this call come from. user_pasted (the user pasted or typed the numbers in this conversation), user_file (the user attached a file/screenshot the numbers were read from), engine_example (an engine example's pricing block, only when the user explicitly asked to run an example), session (a market previously stored in this session, which itself came from one of the above). There is no value for estimated, recalled or placeholder data. If you would have to invent numbers, do not call this tool: ask the user for the data. preset: a preset with a cap_floor block (EUR_EURIBOR_3M quarterly, EUR_EURIBOR_6M semiannual). cap_floor_type: Cap | Floor | Collar. strike: decimal. effective_date, termination_date | tenor: as in price_vanilla_swap. vol: {constant: 0.2, type: Lognormal|Normal|ShiftedLognormal, displacement?, id?} (an OptionletVolSpec the tool adds to the market, base conventions from the preset) or the id of a surface already in the market. model: Black | Bachelier | ShiftedBlack | HullWhiteLattice (a CapFloorModelSpec the tool adds, id <type>_model) or a model id. include_details: per-caplet breakdown. frequency, day_counter, business_day_convention, schedule_overrides: default from the preset (noted).

summary.cap_floors: npv, atm_rate, implied_volatility.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
volYes
as_ofNo
modelYes
tenorNo
marketYes
presetYes
strikeYes
index_idNo
notionalYes
frequencyNo
request_idNo
day_counterNo
cap_floor_typeYes
effective_dateYes
include_detailsNo
forwarding_curveYes
termination_dateNo
additional_tradesNo
discounting_curveYes
calendar_overridesNo
market_data_sourceYes
schedule_overridesNo
business_day_conventionNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.4

TDQS

A4.3/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 tool injects an OptionletVolSpec and a CapFloorModelSpec into the market, that base conventions are inherited from the preset, that unspecified schedule fields default from the preset, and that estimated/recalled data is disallowed. It omits failure behavior and curve prerequisites, which keeps it from a 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-loads a one-line purpose before the Args block, and the per-parameter lines are tight. It is long, but the length is justified by 23 parameters and enum/format details that are not in the schema.

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?

For a 23-parameter, 11-required tool with nested objects and no annotations, the description supplies the conventions, defaults, and sourcing rules an agent needs to call it correctly; return values are covered by the output schema. Curve-related parameters and error handling remain undocumented.

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?

Top-level schema coverage is 0%, so the description must compensate, and it defines the semantics of roughly a dozen parameters (vol structure, model options, preset names, schema override defaults, include_details). However, several of the 23 parameters (discounting_curve, forwarding_curve, index_id, as_of, market, additional_trades, calendar_overrides) receive no explanation.

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 ('Price an interest-rate cap, floor or collar') and even names the endpoint. An agent can immediately distinguish it from siblings like price_swaption or price_yoy_inflation_cap_floor.

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 market_data_source argument defines four legitimate sourcing modes and explicitly states when NOT to call the tool ('If you would have to invent numbers, do not call this tool: ask the user'). It stops short of routing between alternative pricing tools, but the invocation conditions are unusually explicit.

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