Skip to main content
Glama

sns_find_institutions

Find SNS hospitals and local health units by name or nearest coordinates, returning reporting coverage and the stats_entity needed to query official emergency, surgery, and consultation statistics.

Instructions

Find SNS hospitals / local health units (ULS) by name, or the nearest ones to a coordinate.

Use this first when the user names a hospital or a place ("hospitals near Lisbon", "is there an emergency department near 38.72,-9.14?"), then pass stats_entity to sns_emergency_stats / sns_surgery_wait_stats / sns_consultation_wait_stats.

Each result: name, its parent ULS, coordinates, distance_km (when lat/lon given), whether it reports emergency / consultation / surgery data on tempos.min-saude.pt, and stats_entity — the name under which the official statistics report it (statistics are per ULS / hospital group, not per building). This list does NOT contain live waiting times; for live emergency waits send the user to https://tempos.min-saude.pt.

Args: query: Part of the name, accent-insensitive, e.g. "Santa Maria", "Faro", "ULS Algarve". lat, lon: Sort by distance from this point (WGS84), e.g. Lisbon 38.7223, -9.1393. Without query, umbrella ULS entries are skipped (they duplicate a hospital's location). emergency_only: Only places that report emergency-department data. limit: Max results (default 10, max 50).

Input Schema

NameRequiredDescriptionDefault
latNo
lonNo
limitNo
queryNo
emergency_onlyNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so: it enumerates each returned field, explains that `stats_entity` is a ULS/group-level name rather than a building-level one, and discloses a non-obvious quirk ('Without `query`, umbrella ULS entries are skipped (they duplicate a hospital's location)'). It also warns about the absence of live wait times, preventing a likely misuse.

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 purpose, then usage, then return shape, then args — a logical order with no filler sentences. It is on the long side (~200 words): the important 'umbrella ULS skipped without query' caveat is buried inside the lat/lon sub-bullet rather than surfaced earlier.

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?

For a 5-param, zero-annotation, zero-schema-documentation tool, the description supplies everything an agent needs to select and call it correctly, plus the hand-off contract to the three stats tools. An output schema exists, so return values need not be re-explained, and the field enumeration is justified anyway because it clarifies `stats_entity`.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate and it does for all five params: `query` is accent-insensitive with examples, `lat`/`lon` are WGS84 and sort by distance with a sample coordinate, `emergency_only` filters to emergency-reporting sites, and `limit` gives default (10) and max (50). It also explains the interaction between `lat/lon` and `query`, which the schema cannot express.

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?

Opens with a specific verb and resource: 'Find SNS hospitals / local health units (ULS) by name, or the nearest ones to a coordinate.' It explicitly separates this lookup role from the statistics siblings (sns_emergency_stats, sns_surgery_wait_stats, sns_consultation_wait_stats) that consume its `stats_entity` output.

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

Usage Guidelines5/5

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

States a clear trigger ('Use this first when the user names a hospital or a place') with two concrete example queries, defines the follow-up step (pass `stats_entity` to the stats tools), and gives an explicit when-not with a redirect ('This list does NOT contain live waiting times; for live emergency waits send the user to https://tempos.min-saude.pt').

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