Skip to main content
Glama

Housing Signal Scan

housing_signal_scan
Read-onlyIdempotent

Scan 45+ housing indicators for anomalies and reversals. Flags unusual moves across rates, starts, sales, prices, wages, unemployment, and rent. Each signal carries its own observation_date and cadence — series here span weekly (mortgage rate) to quarterly (median sales price), and Case-Shiller is additionally a 3-month moving average, so "turned negative" does not mean "this month" for every series. freshness states the full span and the oldest component.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
_blsKeyNoBLS registration key (optional — raises the shared quota; https://data.bls.gov/registrationEngine/)
_fredKeyNoFRED API key (gateway-injected; only needed outside the gateway)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
signalsNoDetected anomalies and reversals across housing indicators
freshnessNo
scan_dateNoToday's date in YYYY-MM-DD format
all_seriesNo
flagged_countNo
flagged_seriesNo
total_series_scannedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed11 schema fields changed
    • addedOutput schema / properties / all_series
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "cadence": {
      +        "type": "string"
      +      },
      +      "current": {
      +        "type": "number"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "observation_date": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "periodChange": {
      +        "type": "number"
      +      },
      +      "series": {
      +        "type": "string"
      +      },
      +      "signal_count": {
      +        "type": "number"
      +      },
      +      "trend": {
      +        "type": "string"
      +      },
      +      "yoy": {
      +        "properties": {
      +          "change": {
      +            "type": "number"
      +          },
      +          "pctChange": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / flagged_count
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / flagged_series
      Added value: +{
      +  "items": {
      +    "properties": {
      +      "cadence": {
      +        "type": "string"
      +      },
      +      "current": {
      +        "type": "number"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "observation_date": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "periodChange": {
      +        "type": "number"
      +      },
      +      "prior": {
      +        "type": "number"
      +      },
      +      "series": {
      +        "type": "string"
      +      },
      +      "signals": {
      +        "items": {
      +          "properties": {
      +            "message": {
      +              "type": "string"
      +            },
      +            "type": {
      +              "type": "string"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "trend": {
      +        "type": "string"
      +      },
      +      "yoy": {
      +        "properties": {
      +          "change": {
      +            "type": "number"
      +          },
      +          "pctChange": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / freshness
      Added value: +{
      +  "properties": {
      +    "as_of": {
      +      "type": "string"
      +    },
      +    "oldest_component": {
      +      "properties": {
      +        "cadence": {
      +          "type": "string"
      +        },
      +        "observation_date": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "series": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "span_days": {
      +      "type": "number"
      +    },
      +    "statement": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedOutput schema / properties / scan_date / type
      Previous value: -"string"New value: +[
      +  "string",
      +  "null"
      +]
    • addedOutput schema / properties / signals / items / properties / cadence
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / signals / items / properties / indicator
      Removed value: -{
      -  "description": "Name of the housing indicator",
      -  "type": "string"
      -}
    • addedOutput schema / properties / signals / items / properties / observation_date
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / signals / items / properties / series
      Added value: +{
      +  "type": "string"
      +}
    • removedOutput schema / properties / signals / items / properties / type / enum
      Removed value: -[
      -  "reversal",
      -  "unusual",
      -  "accelerating",
      -  "turn",
      -  "extreme"
      -]
    • addedOutput schema / properties / total_series_scanned
      Added value: +{
      +  "type": "number"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / _blsKey
      Added value: +{
      +  "description": "BLS registration key (optional — raises the shared quota; https://data.bls.gov/registrationEngine/)",
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "_fredKey": "your-housing-intel-api-key"
      -  }
      -]New value: +[
      +  {}
      +]
    • changedInput schema / properties / _fredKey / description
      Previous value: -"FRED API key"New value: +"FRED API key (gateway-injected; only needed outside the gateway)"
    • changedInput schema / required
      Previous value: -[
      -  "_fredKey"
      -]New value: +[]
  4. Changed14 schema fields changed
    • removedOutput schema / properties / error
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / scan_date
      Added value: +{
      +  "description": "Today's date in YYYY-MM-DD format",
      +  "type": "string"
      +}
    • addedOutput schema / properties / signals / description
      Added value: +"Detected anomalies and reversals across housing indicators"
    • removedOutput schema / properties / signals / items / properties / alerts
      Removed value: -{
      -  "items": {
      -    "properties": {
      -      "message": {
      -        "type": "string"
      -      },
      -      "type": {
      -        "enum": [
      -          "reversal",
      -          "unusual",
      -          "accelerating",
      -          "turn",
      -          "extreme"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • removedOutput schema / properties / signals / items / properties / current_value
      Removed value: -{
      -  "type": "number"
      -}
    • addedOutput schema / properties / signals / items / properties / indicator
      Added value: +{
      +  "description": "Name of the housing indicator",
      +  "type": "string"
      +}
    • removedOutput schema / properties / signals / items / properties / label
      Removed value: -{
      -  "type": "string"
      -}
    • addedOutput schema / properties / signals / items / properties / message
      Added value: +{
      +  "description": "Human-readable signal description",
      +  "type": "string"
      +}
    • removedOutput schema / properties / signals / items / properties / series_id
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / signals / items / properties / trend
      Removed value: -{
      -  "enum": [
      -    "rising",
      -    "falling",
      -    "stable"
      -  ],
      -  "type": "string"
      -}
    • addedOutput schema / properties / signals / items / properties / type
      Added value: +{
      +  "description": "Type of signal detected",
      +  "enum": [
      +    "reversal",
      +    "unusual",
      +    "accelerating",
      +    "turn",
      +    "extreme"
      +  ],
      +  "type": "string"
      +}
    • removedOutput schema / properties / snapshot_date
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / summary
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / total_signals
      Removed value: -{
      -  "type": "number"
      -}
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "error": {
      +      "type": "string"
      +    },
      +    "signals": {
      +      "items": {
      +        "properties": {
      +          "alerts": {
      +            "items": {
      +              "properties": {
      +                "message": {
      +                  "type": "string"
      +                },
      +                "type": {
      +                  "enum": [
      +                    "reversal",
      +                    "unusual",
      +                    "accelerating",
      +                    "turn",
      +                    "extreme"
      +                  ],
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "current_value": {
      +            "type": "number"
      +          },
      +          "label": {
      +            "type": "string"
      +          },
      +          "series_id": {
      +            "type": "string"
      +          },
      +          "trend": {
      +            "enum": [
      +              "rising",
      +              "falling",
      +              "stable"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "snapshot_date": {
      +      "type": "string"
      +    },
      +    "summary": {
      +      "type": "string"
      +    },
      +    "total_signals": {
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "_fredKey": "your-housing-intel-api-key"
      +  }
      +]
  7. 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, openWorldHint, idempotentHint, and destructiveHint. The description adds valuable behavioral context beyond annotations: signal cadence (weekly to quarterly), the Case-Shiller 3-month moving average caveat, and the freshness field describing span and oldest component. This enriches the agent's understanding of result interpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences of dense, purposeful content. The purpose is front-loaded, and each sentence adds distinct value: scope and signal types, cadence caveats, and freshness semantics. No fluff or redundancy.

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?

Given the tool's complexity (45+ indicators, varying cadences, moving averages) and the presence of an output schema, the description adequately covers interpretation essentials. It explains cadence and freshness, which are critical for correct signal interpretation, though it does not detail anomaly definitions—likely covered by the output schema.

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?

The schema provides full descriptions for both parameters (_blsKey and _fredKey), covering them at 100%. The description does not add any parameter-specific meaning, which is acceptable given the high schema coverage, so baseline 3 is appropriate.

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 clearly states a specific action ('Scan 45+ housing indicators') and resource ('housing indicators'), with a defined goal ('for anomalies and reversals'). It enumerates the indicator categories and distinguishes this as a broad scan without needing to name siblings, making its purpose unambiguous.

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?

The description provides context on cadence and freshness but lacks explicit guidance on when to choose this tool over siblings like housing_market_screen or housing_market_snapshot. It implies a broad overview use case but does not state when not to use it or point to alternatives.

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.