Skip to main content
Glama

Black-Scholes Option Calculator

price_black_scholes_option
Read-onlyIdempotent

Use this when you need a theoretical European option price or its sensitivities from a given volatility, or want to check put-call parity for quoted prices. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the option is American with early exercise value, the underlying pays discrete dividends, or you need implied volatility from a market price (solve numerically instead). Informational only; not financial advice. What it computes: Prices a European call and put with the Black-Scholes-Merton formula from spot, strike, time to expiry, risk-free rate, volatility and a continuous dividend yield, and reports d1, d2 and the Greeks (delta, gamma, vega, theta, rho). Inputs: spot_price (number); strike_price (number); time_years (number, years); risk_free_rate_percent (number, % per year); volatility_percent (number, % per year); dividend_yield_percent (number, % per year, optional). Complete JSON argument examples: {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20} | {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20,"dividend_yield_percent":3} Outputs: call_price, put_price, d1, d2, delta_call, delta_put, gamma, vega_per_1pct, theta_call_per_day, theta_put_per_day, rho_call_per_1pct, rho_put_per_1pct, put_call_parity_check. Formula: d1 = [ln(S/K) + (r − q + σ²/2)·T] / (σ·√T); d2 = d1 − σ·√T; C = S·e^(−qT)·N(d1) − K·e^(−rT)·N(d2); P = K·e^(−rT)·N(−d2) − S·e^(−qT)·N(−d1); Δ_call = e^(−qT)·N(d1); Γ = e^(−qT)·φ(d1)/(S·σ·√T); vega = S·e^(−qT)·φ(d1)·√T; Θ_call = −S·e^(−qT)·φ(d1)·σ/(2√T) − r·K·e^(−rT)·N(d2) + q·S·e^(−qT)·N(d1); ρ_call = K·T·e^(−rT)·N(d2), with r, q, σ as decimals Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/black-scholes with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/investing/black-scholes.md

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
spot_priceYesCurrent price of the underlying asset.
time_yearsYesTime until expiration in years (e.g. 0.25 for 3 months). Unit: years.
strike_priceYesExercise price of the option.
volatility_percentYesAnnualized volatility of the underlying's returns in percent. Unit: % per year.
dividend_yield_percentNoContinuous dividend yield of the underlying in percent (0 for a non-dividend stock). Unit: % per year.
risk_free_rate_percentYesContinuously compounded annual risk-free interest rate in percent. Unit: % per year.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedOutput schema / properties / service_version
      Added value: +{
      +  "description": "Deployed Calcgrid implementation version used for the result.",
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "success",
      -  "request",
      -  "result",
      -  "timestamp"
      -]New value: +[
      +  "success",
      +  "service_version",
      +  "request",
      +  "result",
      +  "timestamp"
      +]
  2. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "risk_free_rate_percent": 5,
      +    "spot_price": 100,
      +    "strike_price": 100,
      +    "time_years": 1,
      +    "volatility_percent": 20
      +  },
      +  {
      +    "dividend_yield_percent": 3,
      +    "risk_free_rate_percent": 5,
      +    "spot_price": 100,
      +    "strike_price": 100,
      +    "time_years": 1,
      +    "volatility_percent": 20
      +  }
      +]
  3. Added
  4. Removed
  5. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond that: it states the tool is 'Informational only; not financial advice,' lists the exact outputs (call_price, put_price, d1, d2, Greeks, put_call_parity_check), and provides a direct REST fallback URL with a warning not to guess another /api/* path. It also discloses the formula used, which helps an agent understand the computation. The only minor gap is that it doesn't explicitly state error behavior for invalid inputs, but the schema already constrains inputs well.

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?

The description is longer than average, but every section earns its place: usage guidance, exclusions, computation summary, input list, output list, formula, and REST fallback. The most decision-relevant information (when to use, when not to use) is front-loaded. The formula block is dense and could be considered excessive for an agent that just needs to call the tool, but it supports the 'return its calculation instead of answering from memory' instruction. A small deduction for the formula being more than an agent strictly needs to invoke the tool correctly.

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 6-parameter calculator with an output schema, the description is complete: it covers the model, the inputs with units, the outputs, the exclusions, the REST fallback, and the documentation URL. The output schema exists, so the description doesn't need to explain return values in detail, but it still lists them. An agent has everything needed to select, invoke, and interpret the result correctly.

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 description coverage is 100%, so the schema already documents every parameter with units and examples. The description adds value by grouping the parameters in a single sentence, noting that dividend_yield_percent is optional, and providing two complete JSON examples that show exactly how to structure the call. It also clarifies the units inline (e.g., 'risk_free_rate_percent (number, % per year)'). This goes beyond the schema's individual field descriptions by showing the full call shape, though the schema already carries most of the semantic weight.

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 opens with a specific verb and resource: 'theoretical European option price or its sensitivities from a given volatility' and 'check put-call parity for quoted prices.' It clearly distinguishes this from related financial tools by naming the model (Black-Scholes-Merton) and the exact scope (European options, no discrete dividends). The title and name are also consistent, so an agent can tell what this tool does 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 Guidelines5/5

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

The description explicitly states when to use the tool ('Use this when you need a theoretical European option price...') and when not to use it ('Do not use this when the option is American with early exercise value, the underlying pays discrete dividends, or you need implied volatility from a market price'). It also names the alternative behavior ('solve numerically instead') and instructs the agent to call the tool directly rather than answering from memory. This is exemplary usage guidance.

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.

Resources