Skip to main content
Glama

Validate breadth ceiling

validate_breadth

Calculate the book Sharpe ceiling from sleeve Sharpe and average pairwise correlation, the Sharpe at a sleeve count, and the sleeves a target requires for portfolio construction.

Instructions

Book Sharpe ceiling from adding sleeves of this quality and correlation, the Sharpe at a sleeve count, and the sleeves a target needs. For portfolio construction; it validates no single strategy. This verdict is about the series exactly as submitted. The service never saw the data source, its costs, survivorship, or any lookahead in how the series was built.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
targetNoTarget book Sharpe, for the sleeves it needs.
sleevesNoSleeve count, for that book's Sharpe.
sleeve_sharpeYesAnnualized Sharpe of one sleeve.
average_pairwise_correlationYesAverage correlation between sleeves, -1 to 1.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
noteNo
errorNo
limitsNo
receiptNo
computedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.13.0
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / data / additionalProperties
      Removed value: -{}
    • changedOutput schema / properties / error / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / receipt / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {},
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {},
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed4 schema fields changedv0.10.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / sleeves / description
      Previous value: -"Sleeve count, to get that book's Sharpe."New value: +"Sleeve count, for that book's Sharpe."
    • changedInput schema / properties / target / description
      Previous value: -"Target book Sharpe, to get the sleeves it needs."New value: +"Target book Sharpe, for the sleeves it needs."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "description": "data.result holds the statistics (data.plain_reading states them); limits say what the result does not establish; receipt ({id, url}) is the signed record, null when none was stored; error ({code, message}) is set only on refusal.",
      +  "properties": {
      +    "computed": {
      +      "type": "string"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "limits": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "note": {
      +      "type": "string"
      +    },
      +    "receipt": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "properties": {},
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed4 schema fields changedv0.6.0
    • addedInput schema / properties / average_pairwise_correlation / description
      Added value: +"Average correlation between sleeves, -1 to 1."
    • addedInput schema / properties / sleeve_sharpe / description
      Added value: +"Annualized Sharpe of one sleeve."
    • addedInput schema / properties / sleeves / description
      Added value: +"Sleeve count, to get that book's Sharpe."
    • addedInput schema / properties / target / description
      Added value: +"Target book Sharpe, to get the sleeves it needs."
  4. First observedv0.5.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations cover safety (readOnlyHint=false, destructiveHint=false, openWorldHint=true), and the description adds genuinely useful behavioral context beyond them: the verdict applies only to the series 'exactly as submitted,' and the service has not seen the data source, costs, survivorship, or lookahead. That is real disclosure of scope and limitations an agent needs to interpret the result.

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?

Three sentences, front-loaded with what is computed and followed by scope caveats; little is wasted. The opening sentence is a dense run-on that could have been split, but the information density justifies its length.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. The description adds the key caveat that the verdict applies only to the submitted series and ignores data-source provenance, which is the main interpretive gap an agent would otherwise face.

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 coverage is 100%, so the baseline is 3, but the description goes further by mapping outputs to inputs: 'this quality and correlation' ties to sleeve_sharpe and average_pairwise_correlation, 'the Sharpe at a sleeve count' to sleeves, and 'the sleeves a target needs' to target. This clarifies the relationship between the optional inputs and which result each drives.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the three quantities computed (Sharpe ceiling from adding sleeves, Sharpe at a given sleeve count, sleeves needed for a target), which is a specific computational purpose rather than a tautology. It also scopes itself against siblings by stating 'it validates no single strategy,' implicitly distinguishing it from the per-strategy validators. The run-on phrasing of the first sentence makes it slightly harder to parse than an ideal verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

'For portfolio construction; it validates no single strategy' gives implied usage context, steering the agent toward breadth/portfolio questions rather than single-series validation. However, no alternative tool is named and no explicit when-not condition is given, so the agent must infer the boundary from the sibling list.

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