Skip to main content
Glama

Crime

crime
Read-onlyIdempotent

Recorded crime in a place from the Interior ministry: offences by type (theft, burglary, robbery, assault, drugs, cybercrime and more) for the latest full year, per 1,000 residents, the change on the year before, the latest year-to-date figures, and province, region and Spain for comparison.

Published for municipalities over 20,000 residents, provinces and regions; smaller places
get the province's figures, and the result says so.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
placeYesPlace name or INE code: municipality ('Valladolid' or '47186'), province ('41'; a bare name like 'Sevilla' means the city), autonomous community ('Cataluña' or 'CA09'), district ('4718603') or census tract ('4718603012'). 'Name, Province' picks between same-named towns.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
checksNo
sourcesYes
confidenceYesLowest confidence across inputs: high, medium or low. Never state a conclusion more strongly than this.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / $defs / Place / properties / area_names
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "For districts and tracts: OpenStreetMap neighbourhood names inside it (not official INE names).",
      +  "title": "Area Names"
      +}
    • changedOutput schema / $defs / Place / properties / match / description
      Previous value: -"How the query matched. 'fuzzy' means a spelling guess: confirm it."New value: +"How the query matched. 'fuzzy' means a spelling guess: confirm it. 'neighbourhood' means a neighbourhood name was found inside this INE district."
    • changedOutput schema / $defs / Place / properties / match / enum
      Previous value: -[
      -  "code",
      -  "exact",
      -  "prefix",
      -  "fuzzy"
      -]New value: +[
      +  "code",
      +  "exact",
      +  "prefix",
      +  "fuzzy",
      +  "neighbourhood"
      +]
    • addedOutput schema / $defs / Place / properties / matched_name
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "The neighbourhood name that matched, if any.",
      +  "title": "Matched Name"
      +}
  2. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare this a read-only, idempotent, closed-world lookup, so the safety bar is low. The description adds genuinely non-obvious behavior: the 20,000-resident coverage threshold and the province-level fallback, plus the note that the response flags when the fallback occurred. That is meaningful disclosure beyond the structured fields.

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?

Two sentences, no filler, with the core content (what data, what measures, what comparisons) front-loaded. The second sentence is slightly halting in construction but carries distinct information about coverage that earns its place.

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 tells the agent what quantities come back (rates, year-on-year change, YTD) and that fallback provenance is included. Combined with the schema and annotations, nothing needed to call this correctly 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 coverage is 100% and the single 'place' parameter's schema description already spells out accepted formats (INE codes, municipality/province/community/district/tract, 'Name, Province' disambiguation). The tool description adds nothing about parameter syntax, so the 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?

Names a specific resource (recorded crime from the Interior ministry), enumerates the offence types, the normalization (per 1,000 residents), the time dimension (latest full year, change on prior year, YTD), and the comparison geographies. An agent can distinguish this from demographics, income, rents or businesses without opening any schema.

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 second sentence gives real applicability context: coverage starts at municipalities over 20,000 residents, provinces and regions, and smaller places silently fall back to province figures. It doesn't name an alternative tool (e.g. resolve_place for ambiguous names) or state exclusions, so it stops short of a 5.

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.