Skip to main content
Glama

compare_immigration_analytics

Read-only

Compare highest/lowest recorded immigration rates by judge or court, jointly filtered by state, nationality and calendar/fiscal proceeding-completion year. Defaults to asylum_denial_rate and minimum_decisions 1; a larger minimum is optional. Include small samples with decision counts and labels. Asylum percentages use grants plus denials, with procedural outcomes separate. At most ten results. Use proceeding_removal_rate only for explicitly requested broader proceeding outcomes. Historical rates do not predict individual outcomes or imply a choice of judge.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yearNo
limitNo
orderNoascending
stateNo
entityYes
metricNoasylum_denial_rate
year_basisNocalendar
nationalityNo
minimum_decisionsNoMinimum grant-or-denial decisions; defaults to 1. Samples below 35 are labeled, not hidden.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
stateYes
metricYes
periodYes
sourceYes
messageYes
resultsYes
limitationsYes
nationalityYes
availabilityYes
eligible_entitiesYes
minimum_decisionsYes
geography_definitionYes
denominator_definitionYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedInput schema / properties / state / pattern
      Removed value: -"^[A-Za-z]{2}$"
    • addedOutput schema / properties / results / items / properties / outcome_denominator
      Added value: +{
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / results / items / properties / relief_granted
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / removal_orders
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  2. Changed6 schema fields changed
    • changedInput schema / properties / minimum_decisions / default
      Previous value: -35New value: +1
    • addedInput schema / properties / minimum_decisions / description
      Added value: +"Minimum grant-or-denial decisions; defaults to 1. Samples below 35 are labeled, not hidden."
    • changedInput schema / properties / minimum_decisions / minimum
      Previous value: -35New value: +1
    • addedOutput schema / properties / results / items / properties / grant_rate
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maximum": 100,
      +      "minimum": 0,
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / results / items / properties / sample_note
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / results / items / required
      Previous value: -[
      -  "name",
      -  "profile_url",
      -  "court_name",
      -  "court_url",
      -  "granted",
      -  "denied",
      -  "other_outcomes",
      -  "excluded",
      -  "decisions",
      -  "denial_rate",
      -  "removal_rate",
      -  "current_roster_count",
      -  "analytics_judge_count"
      -]New value: +[
      +  "name",
      +  "profile_url",
      +  "court_name",
      +  "court_url",
      +  "granted",
      +  "denied",
      +  "other_outcomes",
      +  "excluded",
      +  "decisions",
      +  "grant_rate",
      +  "denial_rate",
      +  "removal_rate",
      +  "sample_note",
      +  "current_roster_count",
      +  "analytics_judge_count"
      +]
  3. Added

TDQS

A4/5.0
Behavior5/5

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

With readOnly/openWorld/destructive annotations already covering safety, the description adds substantial non-obvious behavior: results capped at ten, small samples labeled rather than hidden, sub-35 samples flagged, asylum percentages computed from grants plus denials with procedural outcomes separated, and an explicit no-prediction caveat.

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-loads the core operation and filter semantics, then tucks defaults and caveats behind. Dense but nearly every sentence carries a distinct constraint (sampling labels, percentage definition, ten-result cap); the closing prediction disclaimer is the only sentence with marginal value.

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 comparison tool with an output schema available (returns need not be explained) and low schema coverage, the description supplies filtering, defaults, sampling policy, and metric semantics adequately. Remaining gaps are minor, e.g. sort-order behavior is not described.

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 only 11%, so the description must compensate, and it largely does: it maps state, nationality, and year/year_basis ('calendar/fiscal proceeding-completion year'), entity (judge/court), metric, minimum_decisions default, and the limit cap ('at most ten results'). Only 'order' (ascending/descending) is left entirely to the schema.

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?

Opens with a specific verb+resource ('Compare highest/lowest recorded immigration rates by judge or court') and immediately scopes the filters, so the operation is unambiguous. It does not explicitly name how it differs from the sibling get_immigration_analytics, though the 'compare extremes' framing is inferable.

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?

Gives one concrete selection rule — use proceeding_removal_rate only for explicitly requested broader proceeding outcomes — and notes the metric default. However, it never states when to pick this tool over get_immigration_analytics, and no prerequisites or exclusions are given beyond that single metric rule.

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.