Skip to main content
Glama

BotSpot: AI Trading, Backtests and Bots

Show option payoff

show_option_payoff
Read-onlyIdempotent

Draws ONE option position at expiration from the legs described (call or put, long or short, strike, premium, contracts): one call or put, debit or credit spread, straddle, strangle, butterfly, iron condor; covered call with stock (shares, pricePaid: their cost, or today's price as an example); cash-secured put with cashSecured true. To compare positions, call once per position. Shows breakevens and a price slider. Uses only the inputs given; fetches no data and places no trade. Read-only. Shows an interactive panel in apps that support MCP Apps; always returns a text summary and a botspot.trade link.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "underlying": "<underlying>",
      "expiration": "<expiration>",
      "legs": "<legs>"
    },
    "name": "show_option_payoff"
  }
}

Input Schema

NameRequiredDescriptionDefault
feesNo
legsYes
stockNo
nextStepsNoUp to two buttons; tap sends prompt. Only things BotSpot does today (place a trade, compare, backtest, build a bot); no price alerts.
expirationYes
priceRangeNo
underlyingYes
cashSecuredNo
underlyingPriceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / cashSecured
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / nextSteps
      Added value: +{
      +  "description": "Up to two buttons; tap sends prompt. Only things BotSpot does today (place a trade, compare, backtest, build a bot); no price alerts.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "label": {
      +        "maxLength": 40,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "prompt": {
      +        "maxLength": 500,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "label",
      +      "prompt"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 2,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • addedInput schema / properties / stock
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "pricePaid": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    },
      +    "shares": {
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "shares",
      +    "pricePaid"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so 'Read-only' repeats structured data. What the description does add is genuinely useful: no data fetching, no trade placement, an interactive panel under MCP Apps, and a guaranteed text summary plus a botspot.trade link. It still does not describe what the text summary contains or how breakevens are computed.

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 the verb and the core constraint ('ONE'), then the supported structures, then behavioral caveats. It is a dense single block with heavy parenthetical and semicolon chaining, but nearly every clause carries distinct information, so the density is mostly earned.

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 9-parameter nested tool with no output schema, the definition covers intent, the main structural variants, the no-fetch/no-trade contract, and the return surface (panel, text summary, link). The remaining holes, notably fees, priceRange, and multiplier behavior, are modest against everything else it establishes.

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?

Schema description coverage is only 11% across 9 parameters, so the description carries real weight and does explain legs fields (kind, side, strike, premium, contracts), stock.pricePaid as cost basis, cashSecured, and the role of today's price as an example input. But it never mentions fees, priceRange, multiplier, or that expiration must be YYYY-MM-DD, leaving several gaps for a low-coverage schema.

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?

Specific verb ('Draws') plus resource ('ONE option position at expiration') with an enumeration of supported structures (single leg, debit/credit spread, straddle, strangle, butterfly, iron condor, covered call, cash-secured put). The uppercase 'ONE' and the per-position invocation instruction make the boundary clear without needing another 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?

Gives explicit usage rules: build the position from the supplied legs, use stock/shares+pricePaid for covered calls, cashSecured for CSPs, and call once per position to compare. It does not say when a different visualization tool (e.g. show_position or show_holdings) would be the better choice, so it stops short of full alternatives coverage.

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.