Skip to main content
Glama

Rail Accident Summary

rail_accident_summary
Read-onlyIdempotent

Counts and totals of FRA-reported US railroad accidents or grade crossing incidents, grouped by railroad, cause, accident type, state, year or road user. Returns per-group incident count, killed, injured and (for train accidents) damage cost. Use for "which railroads had the most derailments in 2023", "top causes of train accidents in Texas", "crossing deaths per year since 2015", "rail accident trend by year".

Input Schema

NameRequiredDescriptionDefault
yearNoRestrict to one calendar year.
limitNoMax groups (default 20, max 100).
stateNoRestrict to one US state (code or name).
datasetNo"accidents" = rail equipment accidents (Form 54, default); "crossings" = highway-rail grade crossing incidents (Form 57).
group_byYesGrouping. "cause" and "accident_type" apply to accidents; "highway_user" to crossings; the rest to both.
railroadNoRestrict to one railroad (reporting-mark code or name substring).
from_yearNoRestrict to this year and later (use with group_by "year" for a trend).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds substantive value on top: what the response contains (count, killed, injured, damage cost) and the caveat that damage cost applies only to train accidents. It says nothing about rate limits, pagination, or how many groups default to, leaving that to the schema.

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 core definition and return shape before the examples, and every clause carries information. The example list is slightly long but each example maps to a distinct grouping dimension, so it earns its space.

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?

With no output schema, the description carries the return-value burden and does so by naming the four aggregate fields and the damage-cost conditional. Combined with the annotated safety profile and full schema coverage, an agent has enough to call it correctly; only pagination/limit defaults are left implicit.

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 baseline is 3; the description earns an extra point by tying grouping dimensions to their valid datasets ('cause'/'accident_type' for accidents, 'highway_user' for crossings) and reinforcing the damage-cost distinction between datasets. It adds meaning beyond the raw enum list without restating every parameter.

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?

States a specific verb ('counts and totals') and resource ('FRA-reported US railroad accidents or grade crossing incidents') plus the grouping dimensions, so the aggregate nature is unmistakable. It does not explicitly differentiate itself from siblings rail_accidents and crossing_incidents, which a reader must infer from the naming.

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?

The 'Use for...' clause supplies four concrete example questions that clearly delimit the intended retrieval-and-aggregation context. It stops short of naming alternatives (e.g. rail_accidents for raw records) or stating when not to use it.

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.