Skip to main content
Glama

Value Analysis

scorecard_value_analysis
Read-only

Analyze costs, debt, repayment progress, and earnings for one school. Returns debt-to-earnings and net-price-to-annual-earnings ratios alongside the source figures. family_income selects the applicable net-price bracket. Repayment progress is the share of borrowers paying down principal 3 years after entering repayment.

Input Schema

NameRequiredDescriptionDefault
idYesSchool ID from scorecard_search_schools.
family_incomeNoAnnual family income in dollars. When provided, net price is shown for the applicable income bracket.

Output Schema

NameRequiredDescriptionDefault
errorNoPresent when the call failed. Absent on success.
ope6_idNoProvider OPEID6 identifier, preserving leading zeros.
school_idNoSchool unit ID.
data_notesNoFlags for suppressed, missing, or potentially unreliable data fields. Empty when all data is available.
list_priceNoEffective tuition and fees; see tuition_basis for academic-year or program-year period.
median_debtNoMedian debt at graduation (completers).
school_nameNoInstitution name.
metric_scopeNoEarnings, debt and repayment are pooled at OPEID6; completion is campus-specific.
family_incomeNoRequested annual family income in dollars.
tuition_basisNoPeriod of the effective tuition.
graduation_rateNoCompletion rate at 150% normal time (0–1).
net_price_basisNoSource of the effective price; unavailable means no estimate exists.
attendance_basisNoPeriod of the effective attendance cost, selected independently of tuition.
effective_tuitionNoAvailable academic-year tuition, otherwise program-year tuition.
net_price_overallNoAverage net price across all income levels.
cost_of_attendanceNoAvailable academic-year attendance cost, otherwise program-year cost.
earnings_6yr_medianNoMedian earnings 6 years after entry.
effective_net_priceNoPrice used in the annual-earnings ratio: available income bracket, otherwise overall net price.
earnings_10yr_medianNoMedian earnings 10 years after entry.
net_price_for_incomeNoNet price for the provided family income bracket. Omitted when family_income not provided.
tuition_program_yearNoReported program-year tuition and fees.
debt_to_earnings_ratioNoDebt-to-earnings ratio: median_debt / earnings_6yr_median. Values >1 indicate debt exceeds annual earnings.
repayment_progress_3yrNoShare of borrowers paying down principal (declining loan balance) 3 years after entering repayment (0–1).
attendance_program_yearNoReported program-year cost of attendance.
applicable_income_bracketNoRequested income bracket, retained even when its estimate is unavailable.
net_price_to_annual_earningsNoNet price divided by median annual earnings measured 6 years after entry. Uses the family-income net price when available, otherwise the overall net price.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedOutput schema / properties / attendance_basis
      Added value: +{
      +  "description": "Period of the effective attendance cost, selected independently of tuition.",
      +  "enum": [
      +    "academic_year",
      +    "program_year"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / attendance_program_year
      Added value: +{
      +  "description": "Reported program-year cost of attendance.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / cost_of_attendance
      Added value: +{
      +  "description": "Available academic-year attendance cost, otherwise program-year cost.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / effective_tuition
      Added value: +{
      +  "description": "Available academic-year tuition, otherwise program-year tuition.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / list_price / description
      Previous value: -"Full tuition and fees (in-state, or out-of-state when no in-state exists)."New value: +"Effective tuition and fees; see tuition_basis for academic-year or program-year period."
    • addedOutput schema / properties / metric_scope
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Earnings, debt and repayment are pooled at OPEID6; completion is campus-specific.",
      +  "properties": {
      +    "completion": {
      +      "const": "campus",
      +      "description": "Completion is campus-specific.",
      +      "type": "string"
      +    },
      +    "debt": {
      +      "const": "opeid6",
      +      "description": "Debt is OPEID6-pooled.",
      +      "type": "string"
      +    },
      +    "earnings": {
      +      "const": "opeid6",
      +      "description": "Earnings are OPEID6-pooled.",
      +      "type": "string"
      +    },
      +    "repayment": {
      +      "const": "opeid6",
      +      "description": "Repayment is OPEID6-pooled.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "earnings",
      +    "debt",
      +    "repayment",
      +    "completion"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / ope6_id
      Added value: +{
      +  "description": "Provider OPEID6 identifier, preserving leading zeros.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / tuition_basis
      Added value: +{
      +  "description": "Period of the effective tuition.",
      +  "enum": [
      +    "academic_year",
      +    "program_year"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / tuition_program_year
      Added value: +{
      +  "description": "Reported program-year tuition and fees.",
      +  "type": "number"
      +}
  2. Changed5 schema fields changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "school_id",
      -      "school_name",
      -      "data_notes"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "school_id",
      +      "school_name",
      +      "net_price_basis",
      +      "data_notes"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • changedOutput schema / properties / applicable_income_bracket / description
      Previous value: -"Income bracket used for net_price_for_income."New value: +"Requested income bracket, retained even when its estimate is unavailable."
    • addedOutput schema / properties / effective_net_price
      Added value: +{
      +  "description": "Price used in the annual-earnings ratio: available income bracket, otherwise overall net price.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / family_income
      Added value: +{
      +  "description": "Requested annual family income in dollars.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / net_price_basis
      Added value: +{
      +  "description": "Source of the effective price; unavailable means no estimate exists.",
      +  "enum": [
      +    "income_bracket",
      +    "overall",
      +    "unavailable"
      +  ],
      +  "type": "string"
      +}
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered; the description adds real value on top by naming the returned ratios and source figures and by defining the otherwise-ambiguous 'repayment progress' as the share of borrowers paying down principal 3 years after entering repayment. It stops short of covering data vintage, coverage gaps, or error behavior for unknown IDs.

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?

Four short sentences, front-loaded with purpose then outputs, with no filler. The family_income sentence is mildly redundant with the schema, keeping it just below top marks.

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?

An output schema exists so return-value documentation is not required, yet the description still summarizes what comes back and defines the one metric whose meaning an agent could not infer. For a 2-parameter read-only tool with full schema coverage, nothing needed for correct invocation is missing.

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 100%, so the schema already documents both parameters and the ID format in detail. The description's note that family_income selects the applicable net-price bracket largely restates the schema's own wording, adding little meaning beyond it; baseline 3 applies.

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 ('Analyze') plus the exact resource set (costs, debt, repayment progress, earnings) scoped to 'one school', which cleanly separates it from scorecard_compare_schools (multi-school) and scorecard_get_earnings (earnings only). The second sentence further pins down the outputs (debt-to-earnings, net-price-to-annual-earnings ratios).

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?

Usage is only implied: the single-school scope and the listed metrics suggest when to reach for this over compare_schools or get_earnings, but there is no explicit when-to-use, when-not, or named alternative. The one conditional behavior stated (family_income selects the net-price bracket) is parameter guidance rather than tool-selection 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.